blob: 7ebf43b404804c40c643d42186b8df22edd1e473 [file] [log] [blame]
/**
* Lighthouse v10.0.0 (Feb 09 2023)
*
* Automated auditing, performance metrics, and best practices for the web.
*
* @homepage https://github.com/GoogleChrome/lighthouse#readme
* @author The Lighthouse Authors
* @license Apache-2.0
*/
!function(){"use strict";var e="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},t=[],n=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,r=!1;function init$1(){r=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,o=e.length;a<o;++a)t[a]=e[a],n[e.charCodeAt(a)]=a;n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63}function encodeChunk(e,n,a){for(var r,o,i=[],s=n;s<a;s+=3)r=(e[s]<<16)+(e[s+1]<<8)+e[s+2],i.push(t[(o=r)>>18&63]+t[o>>12&63]+t[o>>6&63]+t[63&o]);return i.join("")}function fromByteArray(e){var n;r||init$1();for(var a=e.length,o=a%3,i="",s=[],c=16383,l=0,u=a-o;l<u;l+=c)s.push(encodeChunk(e,l,l+c>u?u:l+c));return 1===o?(n=e[a-1],i+=t[n>>2],i+=t[n<<4&63],i+="=="):2===o&&(n=(e[a-2]<<8)+e[a-1],i+=t[n>>10],i+=t[n>>4&63],i+=t[n<<2&63],i+="="),s.push(i),s.join("")}function read(e,t,n,a,r){var o,i,s=8*r-a-1,c=(1<<s)-1,l=c>>1,u=-7,d=n?r-1:0,m=n?-1:1,p=e[t+d];for(d+=m,o=p&(1<<-u)-1,p>>=-u,
u+=s;u>0;o=256*o+e[t+d],d+=m,u-=8);for(i=o&(1<<-u)-1,o>>=-u,u+=a;u>0;i=256*i+e[t+d],d+=m,u-=8);if(0===o)o=1-l;else{if(o===c)return i?NaN:1/0*(p?-1:1);i+=Math.pow(2,a),o-=l}return(p?-1:1)*i*Math.pow(2,o-a)}function write(e,t,n,a,r,o){var i,s,c,l=8*o-r-1,u=(1<<l)-1,d=u>>1,m=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,p=a?0:o-1,h=a?1:-1,f=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,i=u):(i=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-i))<1&&(i--,c*=2),(t+=i+d>=1?m/c:m*Math.pow(2,1-d))*c>=2&&(i++,c/=2),i+d>=u?(s=0,i=u):i+d>=1?(s=(t*c-1)*Math.pow(2,r),i+=d):(s=t*Math.pow(2,d-1)*Math.pow(2,r),i=0));r>=8;e[n+p]=255&s,p+=h,s/=256,r-=8);for(i=i<<r|s,l+=r;l>0;e[n+p]=255&i,p+=h,i/=256,l-=8);e[n+p-h]|=128*f}var o={}.toString,i=Array.isArray||function(e){return"[object Array]"==o.call(e)};function kMaxLength(){return Buffer$1.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function createBuffer(e,t){if(kMaxLength()<t)throw new RangeError("Invalid typed array length")
;return Buffer$1.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=Buffer$1.prototype:(null===e&&(e=new Buffer$1(t)),e.length=t),e}function Buffer$1(e,t,n){if(!(Buffer$1.TYPED_ARRAY_SUPPORT||this instanceof Buffer$1))return new Buffer$1(e,t,n);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return allocUnsafe(this,e)}return from(this,e,t,n)}function from(e,t,n,a){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function fromArrayBuffer(e,t,n,a){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(a||0))throw new RangeError("'length' is out of bounds");t=void 0===n&&void 0===a?new Uint8Array(t):void 0===a?new Uint8Array(t,n):new Uint8Array(t,n,a);Buffer$1.TYPED_ARRAY_SUPPORT?(e=t).__proto__=Buffer$1.prototype:e=fromArrayLike(e,t);return e
}(e,t,n,a):"string"==typeof t?function fromString(e,t,n){"string"==typeof n&&""!==n||(n="utf8");if(!Buffer$1.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var a=0|byteLength(t,n),r=(e=createBuffer(e,a)).write(t,n);r!==a&&(e=e.slice(0,r));return e}(e,t,n):function fromObject(e,t){if(internalIsBuffer(t)){var n=0|checked(t.length);return 0===(e=createBuffer(e,n)).length||t.copy(e,0,0,n),e}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||function isnan(e){return e!=e}(t.length)?createBuffer(e,0):fromArrayLike(e,t);if("Buffer"===t.type&&i(t.data))return fromArrayLike(e,t.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function assertSize(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function allocUnsafe(e,t){
if(assertSize(t),e=createBuffer(e,t<0?0:0|checked(t)),!Buffer$1.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function fromArrayLike(e,t){var n=t.length<0?0:0|checked(t.length);e=createBuffer(e,n);for(var a=0;a<n;a+=1)e[a]=255&t[a];return e}function checked(e){if(e>=kMaxLength())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+kMaxLength().toString(16)+" bytes");return 0|e}function internalIsBuffer(e){return!(null==e||!e._isBuffer)}function byteLength(e,t){if(internalIsBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var a=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return utf8ToBytes(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":
return base64ToBytes(e).length;default:if(a)return utf8ToBytes(e).length;t=(""+t).toLowerCase(),a=!0}}function slowToString(e,t,n){var a=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return hexSlice(this,t,n);case"utf8":case"utf-8":return utf8Slice(this,t,n);case"ascii":return asciiSlice(this,t,n);case"latin1":case"binary":return latin1Slice(this,t,n);case"base64":return base64Slice(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,t,n);default:if(a)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),a=!0}}function swap(e,t,n){var a=e[t];e[t]=e[n],e[n]=a}function bidirectionalIndexOf(e,t,n,a,r){if(0===e.length)return-1;if("string"==typeof n?(a=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=r?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(r)return-1
;n=e.length-1}else if(n<0){if(!r)return-1;n=0}if("string"==typeof t&&(t=Buffer$1.from(t,a)),internalIsBuffer(t))return 0===t.length?-1:arrayIndexOf(e,t,n,a,r);if("number"==typeof t)return t&=255,Buffer$1.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):arrayIndexOf(e,[t],n,a,r);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(e,t,n,a,r){var o,i=1,s=e.length,c=t.length;if(void 0!==a&&("ucs2"===(a=String(a).toLowerCase())||"ucs-2"===a||"utf16le"===a||"utf-16le"===a)){if(e.length<2||t.length<2)return-1;i=2,s/=2,c/=2,n/=2}function read(e,t){return 1===i?e[t]:e.readUInt16BE(t*i)}if(r){var l=-1;for(o=n;o<s;o++)if(read(e,o)===read(t,-1===l?0:o-l)){if(-1===l&&(l=o),o-l+1===c)return l*i}else-1!==l&&(o-=o-l),l=-1}else for(n+c>s&&(n=s-c),o=n;o>=0;o--){for(var u=!0,d=0;d<c;d++)if(read(e,o+d)!==read(t,d)){u=!1;break}if(u)return o}return-1}
function hexWrite(e,t,n,a){n=Number(n)||0;var r=e.length-n;a?(a=Number(a))>r&&(a=r):a=r;var o=t.length;if(o%2!=0)throw new TypeError("Invalid hex string");a>o/2&&(a=o/2);for(var i=0;i<a;++i){var s=parseInt(t.substr(2*i,2),16);if(isNaN(s))return i;e[n+i]=s}return i}function utf8Write(e,t,n,a){return blitBuffer(utf8ToBytes(t,e.length-n),e,n,a)}function asciiWrite(e,t,n,a){return blitBuffer(function asciiToBytes(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,a)}function latin1Write(e,t,n,a){return asciiWrite(e,t,n,a)}function base64Write(e,t,n,a){return blitBuffer(base64ToBytes(t),e,n,a)}function ucs2Write(e,t,n,a){return blitBuffer(function utf16leToBytes(e,t){for(var n,a,r,o=[],i=0;i<e.length&&!((t-=2)<0);++i)a=(n=e.charCodeAt(i))>>8,r=n%256,o.push(r),o.push(a);return o}(t,e.length-n),e,n,a)}function base64Slice(e,t,n){return 0===t&&n===e.length?fromByteArray(e):fromByteArray(e.slice(t,n))}function utf8Slice(e,t,n){n=Math.min(e.length,n)
;for(var a=[],r=t;r<n;){var o,i,c,l,u=e[r],d=null,m=u>239?4:u>223?3:u>191?2:1;if(r+m<=n)switch(m){case 1:u<128&&(d=u);break;case 2:128==(192&(o=e[r+1]))&&(l=(31&u)<<6|63&o)>127&&(d=l);break;case 3:o=e[r+1],i=e[r+2],128==(192&o)&&128==(192&i)&&(l=(15&u)<<12|(63&o)<<6|63&i)>2047&&(l<55296||l>57343)&&(d=l);break;case 4:o=e[r+1],i=e[r+2],c=e[r+3],128==(192&o)&&128==(192&i)&&128==(192&c)&&(l=(15&u)<<18|(63&o)<<12|(63&i)<<6|63&c)>65535&&l<1114112&&(d=l)}null===d?(d=65533,m=1):d>65535&&(d-=65536,a.push(d>>>10&1023|55296),d=56320|1023&d),a.push(d),r+=m}return function decodeCodePointsArray(e){var t=e.length;if(t<=s)return String.fromCharCode.apply(String,e);var n="",a=0;for(;a<t;)n+=String.fromCharCode.apply(String,e.slice(a,a+=s));return n}(a)}Buffer$1.TYPED_ARRAY_SUPPORT=void 0===e.TYPED_ARRAY_SUPPORT||e.TYPED_ARRAY_SUPPORT,Buffer$1.poolSize=8192,Buffer$1._augment=function(e){return e.__proto__=Buffer$1.prototype,e},Buffer$1.from=function(e,t,n){return from(null,e,t,n)},
Buffer$1.TYPED_ARRAY_SUPPORT&&(Buffer$1.prototype.__proto__=Uint8Array.prototype,Buffer$1.__proto__=Uint8Array),Buffer$1.alloc=function(e,t,n){return function alloc(e,t,n,a){return assertSize(t),t<=0?createBuffer(e,t):void 0!==n?"string"==typeof a?createBuffer(e,t).fill(n,a):createBuffer(e,t).fill(n):createBuffer(e,t)}(null,e,t,n)},Buffer$1.allocUnsafe=function(e){return allocUnsafe(null,e)},Buffer$1.allocUnsafeSlow=function(e){return allocUnsafe(null,e)},Buffer$1.isBuffer=function isBuffer$4(e){return null!=e&&(!!e._isBuffer||isFastBuffer(e)||function isSlowBuffer(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&isFastBuffer(e.slice(0,0))}(e))},Buffer$1.compare=function compare(e,t){if(!internalIsBuffer(e)||!internalIsBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,a=t.length,r=0,o=Math.min(n,a);r<o;++r)if(e[r]!==t[r]){n=e[r],a=t[r];break}return n<a?-1:a<n?1:0},Buffer$1.isEncoding=function isEncoding(e){
switch(String(e).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}},Buffer$1.concat=function concat(e,t){if(!i(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return Buffer$1.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var a=Buffer$1.allocUnsafe(t),r=0;for(n=0;n<e.length;++n){var o=e[n];if(!internalIsBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(a,r),r+=o.length}return a},Buffer$1.byteLength=byteLength,Buffer$1.prototype._isBuffer=!0,Buffer$1.prototype.swap16=function swap16(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)swap(this,t,t+1);return this},Buffer$1.prototype.swap32=function swap32(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits")
;for(var t=0;t<e;t+=4)swap(this,t,t+3),swap(this,t+1,t+2);return this},Buffer$1.prototype.swap64=function swap64(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)swap(this,t,t+7),swap(this,t+1,t+6),swap(this,t+2,t+5),swap(this,t+3,t+4);return this},Buffer$1.prototype.toString=function toString(){var e=0|this.length;return 0===e?"":0===arguments.length?utf8Slice(this,0,e):slowToString.apply(this,arguments)},Buffer$1.prototype.equals=function equals(e){if(!internalIsBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===Buffer$1.compare(this,e)},Buffer$1.prototype.inspect=function inspect(){var e="";return this.length>0&&(e=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(e+=" ... ")),"<Buffer "+e+">"},Buffer$1.prototype.compare=function compare(e,t,n,a,r){if(!internalIsBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),
void 0===a&&(a=0),void 0===r&&(r=this.length),t<0||n>e.length||a<0||r>this.length)throw new RangeError("out of range index");if(a>=r&&t>=n)return 0;if(a>=r)return-1;if(t>=n)return 1;if(this===e)return 0;for(var o=(r>>>=0)-(a>>>=0),i=(n>>>=0)-(t>>>=0),s=Math.min(o,i),c=this.slice(a,r),l=e.slice(t,n),u=0;u<s;++u)if(c[u]!==l[u]){o=c[u],i=l[u];break}return o<i?-1:i<o?1:0},Buffer$1.prototype.includes=function includes(e,t,n){return-1!==this.indexOf(e,t,n)},Buffer$1.prototype.indexOf=function indexOf(e,t,n){return bidirectionalIndexOf(this,e,t,n,!0)},Buffer$1.prototype.lastIndexOf=function lastIndexOf(e,t,n){return bidirectionalIndexOf(this,e,t,n,!1)},Buffer$1.prototype.write=function write(e,t,n,a){if(void 0===t)a="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)a=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t|=0,isFinite(n)?(n|=0,void 0===a&&(a="utf8")):(a=n,n=void 0)}var r=this.length-t
;if((void 0===n||n>r)&&(n=r),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");a||(a="utf8");for(var o=!1;;)switch(a){case"hex":return hexWrite(this,e,t,n);case"utf8":case"utf-8":return utf8Write(this,e,t,n);case"ascii":return asciiWrite(this,e,t,n);case"latin1":case"binary":return latin1Write(this,e,t,n);case"base64":return base64Write(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,e,t,n);default:if(o)throw new TypeError("Unknown encoding: "+a);a=(""+a).toLowerCase(),o=!0}},Buffer$1.prototype.toJSON=function toJSON(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var s=4096;function asciiSlice(e,t,n){var a="";n=Math.min(e.length,n);for(var r=t;r<n;++r)a+=String.fromCharCode(127&e[r]);return a}function latin1Slice(e,t,n){var a="";n=Math.min(e.length,n);for(var r=t;r<n;++r)a+=String.fromCharCode(e[r]);return a}function hexSlice(e,t,n){var a=e.length;(!t||t<0)&&(t=0),
(!n||n<0||n>a)&&(n=a);for(var r="",o=t;o<n;++o)r+=toHex(e[o]);return r}function utf16leSlice(e,t,n){for(var a=e.slice(t,n),r="",o=0;o<a.length;o+=2)r+=String.fromCharCode(a[o]+256*a[o+1]);return r}function checkOffset(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 checkInt(e,t,n,a,r,o){if(!internalIsBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>r||t<o)throw new RangeError('"value" argument is out of bounds');if(n+a>e.length)throw new RangeError("Index out of range")}function objectWriteUInt16(e,t,n,a){t<0&&(t=65535+t+1);for(var r=0,o=Math.min(e.length-n,2);r<o;++r)e[n+r]=(t&255<<8*(a?r:1-r))>>>8*(a?r:1-r)}function objectWriteUInt32(e,t,n,a){t<0&&(t=4294967295+t+1);for(var r=0,o=Math.min(e.length-n,4);r<o;++r)e[n+r]=t>>>8*(a?r:3-r)&255}function checkIEEE754(e,t,n,a,r,o){if(n+a>e.length)throw new RangeError("Index out of range")
;if(n<0)throw new RangeError("Index out of range")}function writeFloat(e,t,n,a,r){return r||checkIEEE754(e,0,n,4),write(e,t,n,a,23,4),n+4}function writeDouble(e,t,n,a,r){return r||checkIEEE754(e,0,n,8),write(e,t,n,a,52,8),n+8}Buffer$1.prototype.slice=function slice(e,t){var n,a=this.length;if((e=~~e)<0?(e+=a)<0&&(e=0):e>a&&(e=a),(t=void 0===t?a:~~t)<0?(t+=a)<0&&(t=0):t>a&&(t=a),t<e&&(t=e),Buffer$1.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=Buffer$1.prototype;else{var r=t-e;n=new Buffer$1(r,void 0);for(var o=0;o<r;++o)n[o]=this[o+e]}return n},Buffer$1.prototype.readUIntLE=function readUIntLE(e,t,n){e|=0,t|=0,n||checkOffset(e,t,this.length);for(var a=this[e],r=1,o=0;++o<t&&(r*=256);)a+=this[e+o]*r;return a},Buffer$1.prototype.readUIntBE=function readUIntBE(e,t,n){e|=0,t|=0,n||checkOffset(e,t,this.length);for(var a=this[e+--t],r=1;t>0&&(r*=256);)a+=this[e+--t]*r;return a},Buffer$1.prototype.readUInt8=function readUInt8(e,t){return t||checkOffset(e,1,this.length),this[e]},
Buffer$1.prototype.readUInt16LE=function readUInt16LE(e,t){return t||checkOffset(e,2,this.length),this[e]|this[e+1]<<8},Buffer$1.prototype.readUInt16BE=function readUInt16BE(e,t){return t||checkOffset(e,2,this.length),this[e]<<8|this[e+1]},Buffer$1.prototype.readUInt32LE=function readUInt32LE(e,t){return t||checkOffset(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},Buffer$1.prototype.readUInt32BE=function readUInt32BE(e,t){return t||checkOffset(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},Buffer$1.prototype.readIntLE=function readIntLE(e,t,n){e|=0,t|=0,n||checkOffset(e,t,this.length);for(var a=this[e],r=1,o=0;++o<t&&(r*=256);)a+=this[e+o]*r;return a>=(r*=128)&&(a-=Math.pow(2,8*t)),a},Buffer$1.prototype.readIntBE=function readIntBE(e,t,n){e|=0,t|=0,n||checkOffset(e,t,this.length);for(var a=t,r=1,o=this[e+--a];a>0&&(r*=256);)o+=this[e+--a]*r;return o>=(r*=128)&&(o-=Math.pow(2,8*t)),o},
Buffer$1.prototype.readInt8=function readInt8(e,t){return t||checkOffset(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},Buffer$1.prototype.readInt16LE=function readInt16LE(e,t){t||checkOffset(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},Buffer$1.prototype.readInt16BE=function readInt16BE(e,t){t||checkOffset(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},Buffer$1.prototype.readInt32LE=function readInt32LE(e,t){return t||checkOffset(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},Buffer$1.prototype.readInt32BE=function readInt32BE(e,t){return t||checkOffset(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},Buffer$1.prototype.readFloatLE=function readFloatLE(e,t){return t||checkOffset(e,4,this.length),read(this,e,!0,23,4)},Buffer$1.prototype.readFloatBE=function readFloatBE(e,t){return t||checkOffset(e,4,this.length),read(this,e,!1,23,4)},
Buffer$1.prototype.readDoubleLE=function readDoubleLE(e,t){return t||checkOffset(e,8,this.length),read(this,e,!0,52,8)},Buffer$1.prototype.readDoubleBE=function readDoubleBE(e,t){return t||checkOffset(e,8,this.length),read(this,e,!1,52,8)},Buffer$1.prototype.writeUIntLE=function writeUIntLE(e,t,n,a){(e=+e,t|=0,n|=0,a)||checkInt(this,e,t,n,Math.pow(2,8*n)-1,0);var r=1,o=0;for(this[t]=255&e;++o<n&&(r*=256);)this[t+o]=e/r&255;return t+n},Buffer$1.prototype.writeUIntBE=function writeUIntBE(e,t,n,a){(e=+e,t|=0,n|=0,a)||checkInt(this,e,t,n,Math.pow(2,8*n)-1,0);var r=n-1,o=1;for(this[t+r]=255&e;--r>=0&&(o*=256);)this[t+r]=e/o&255;return t+n},Buffer$1.prototype.writeUInt8=function writeUInt8(e,t,n){return e=+e,t|=0,n||checkInt(this,e,t,1,255,0),Buffer$1.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},Buffer$1.prototype.writeUInt16LE=function writeUInt16LE(e,t,n){return e=+e,t|=0,n||checkInt(this,e,t,2,65535,0),Buffer$1.TYPED_ARRAY_SUPPORT?(this[t]=255&e,
this[t+1]=e>>>8):objectWriteUInt16(this,e,t,!0),t+2},Buffer$1.prototype.writeUInt16BE=function writeUInt16BE(e,t,n){return e=+e,t|=0,n||checkInt(this,e,t,2,65535,0),Buffer$1.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):objectWriteUInt16(this,e,t,!1),t+2},Buffer$1.prototype.writeUInt32LE=function writeUInt32LE(e,t,n){return e=+e,t|=0,n||checkInt(this,e,t,4,4294967295,0),Buffer$1.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):objectWriteUInt32(this,e,t,!0),t+4},Buffer$1.prototype.writeUInt32BE=function writeUInt32BE(e,t,n){return e=+e,t|=0,n||checkInt(this,e,t,4,4294967295,0),Buffer$1.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):objectWriteUInt32(this,e,t,!1),t+4},Buffer$1.prototype.writeIntLE=function writeIntLE(e,t,n,a){if(e=+e,t|=0,!a){var r=Math.pow(2,8*n-1);checkInt(this,e,t,n,r-1,-r)}var o=0,i=1,s=0;for(this[t]=255&e;++o<n&&(i*=256);)e<0&&0===s&&0!==this[t+o-1]&&(s=1),this[t+o]=(e/i>>0)-s&255
;return t+n},Buffer$1.prototype.writeIntBE=function writeIntBE(e,t,n,a){if(e=+e,t|=0,!a){var r=Math.pow(2,8*n-1);checkInt(this,e,t,n,r-1,-r)}var o=n-1,i=1,s=0;for(this[t+o]=255&e;--o>=0&&(i*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/i>>0)-s&255;return t+n},Buffer$1.prototype.writeInt8=function writeInt8(e,t,n){return e=+e,t|=0,n||checkInt(this,e,t,1,127,-128),Buffer$1.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},Buffer$1.prototype.writeInt16LE=function writeInt16LE(e,t,n){return e=+e,t|=0,n||checkInt(this,e,t,2,32767,-32768),Buffer$1.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):objectWriteUInt16(this,e,t,!0),t+2},Buffer$1.prototype.writeInt16BE=function writeInt16BE(e,t,n){return e=+e,t|=0,n||checkInt(this,e,t,2,32767,-32768),Buffer$1.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):objectWriteUInt16(this,e,t,!1),t+2},Buffer$1.prototype.writeInt32LE=function writeInt32LE(e,t,n){return e=+e,t|=0,
n||checkInt(this,e,t,4,2147483647,-2147483648),Buffer$1.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):objectWriteUInt32(this,e,t,!0),t+4},Buffer$1.prototype.writeInt32BE=function writeInt32BE(e,t,n){return e=+e,t|=0,n||checkInt(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),Buffer$1.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):objectWriteUInt32(this,e,t,!1),t+4},Buffer$1.prototype.writeFloatLE=function writeFloatLE(e,t,n){return writeFloat(this,e,t,!0,n)},Buffer$1.prototype.writeFloatBE=function writeFloatBE(e,t,n){return writeFloat(this,e,t,!1,n)},Buffer$1.prototype.writeDoubleLE=function writeDoubleLE(e,t,n){return writeDouble(this,e,t,!0,n)},Buffer$1.prototype.writeDoubleBE=function writeDoubleBE(e,t,n){return writeDouble(this,e,t,!1,n)},Buffer$1.prototype.copy=function copy(e,t,n,a){if(n||(n=0),a||0===a||(a=this.length),t>=e.length&&(t=e.length),t||(t=0),a>0&&a<n&&(a=n),a===n)return 0
;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=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),e.length-t<a-n&&(a=e.length-t+n);var r,o=a-n;if(this===e&&n<t&&t<a)for(r=o-1;r>=0;--r)e[r+t]=this[r+n];else if(o<1e3||!Buffer$1.TYPED_ARRAY_SUPPORT)for(r=0;r<o;++r)e[r+t]=this[r+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+o),t);return o},Buffer$1.prototype.fill=function fill(e,t,n,a){if("string"==typeof e){if("string"==typeof t?(a=t,t=0,n=this.length):"string"==typeof n&&(a=n,n=this.length),1===e.length){var r=e.charCodeAt(0);r<256&&(e=r)}if(void 0!==a&&"string"!=typeof a)throw new TypeError("encoding must be a string");if("string"==typeof a&&!Buffer$1.isEncoding(a))throw new TypeError("Unknown encoding: "+a)}else"number"==typeof e&&(e&=255)
;if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var o;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(o=t;o<n;++o)this[o]=e;else{var i=internalIsBuffer(e)?e:utf8ToBytes(new Buffer$1(e,a).toString()),s=i.length;for(o=0;o<n-t;++o)this[o+t]=i[o%s]}return this};var c=/[^+\/0-9A-Za-z-_]/g;function toHex(e){return e<16?"0"+e.toString(16):e.toString(16)}function utf8ToBytes(e,t){var n;t=t||1/0;for(var a=e.length,r=null,o=[],i=0;i<a;++i){if((n=e.charCodeAt(i))>55295&&n<57344){if(!r){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(i+1===a){(t-=3)>-1&&o.push(239,191,189);continue}r=n;continue}if(n<56320){(t-=3)>-1&&o.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(t-=3)>-1&&o.push(239,191,189);if(r=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,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{
if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function base64ToBytes(e){return function toByteArray(e){var t,o,i,s,c,l;r||init$1();var u=e.length;if(u%4>0)throw new Error("Invalid string. Length must be a multiple of 4");c="="===e[u-2]?2:"="===e[u-1]?1:0,l=new a(3*u/4-c),i=c>0?u-4:u;var d=0;for(t=0,o=0;t<i;t+=4,o+=3)s=n[e.charCodeAt(t)]<<18|n[e.charCodeAt(t+1)]<<12|n[e.charCodeAt(t+2)]<<6|n[e.charCodeAt(t+3)],l[d++]=s>>16&255,l[d++]=s>>8&255,l[d++]=255&s;return 2===c?(s=n[e.charCodeAt(t)]<<2|n[e.charCodeAt(t+1)]>>4,l[d++]=255&s):1===c&&(s=n[e.charCodeAt(t)]<<10|n[e.charCodeAt(t+1)]<<4|n[e.charCodeAt(t+2)]>>2,l[d++]=s>>8&255,l[d++]=255&s),l}(function base64clean(e){if((e=function stringtrim(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(c,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function blitBuffer(e,t,n,a){
for(var r=0;r<a&&!(r+n>=t.length||r>=e.length);++r)t[r+n]=e[r];return r}function isFastBuffer(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}var l=defaultSetTimout,u=defaultClearTimeout;function runTimeout(e){if(l===setTimeout)return setTimeout(e,0);if((l===defaultSetTimout||!l)&&setTimeout)return l=setTimeout,setTimeout(e,0);try{return l(e,0)}catch(t){try{return l.call(null,e,0)}catch(t){return l.call(this,e,0)}}}"function"==typeof e.setTimeout&&(l=setTimeout),"function"==typeof e.clearTimeout&&(u=clearTimeout);var d,m=[],p=!1,h=-1;function cleanUpNextTick(){p&&d&&(p=!1,d.length?m=d.concat(m):h=-1,m.length&&drainQueue())}function drainQueue(){if(!p){var e=runTimeout(cleanUpNextTick);p=!0;for(var t=m.length;t;){for(d=m,m=[];++h<t;)d&&d[h].run();h=-1,t=m.length}d=null,p=!1,
function runClearTimeout(e){if(u===clearTimeout)return clearTimeout(e);if((u===defaultClearTimeout||!u)&&clearTimeout)return u=clearTimeout,clearTimeout(e);try{return u(e)}catch(t){try{return u.call(null,e)}catch(t){return u.call(this,e)}}}(e)}}function nextTick(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];m.push(new Item(e,t)),1!==m.length||p||runTimeout(drainQueue)}function Item(e,t){this.fun=e,this.array=t}Item.prototype.run=function(){this.fun.apply(null,this.array)};function noop$1(){}var f=noop$1,y=noop$1,b=noop$1,v=noop$1,w=noop$1,D=noop$1,E=noop$1;var T=e.performance||{},S=T.now||T.mozNow||T.msNow||T.oNow||T.webkitNow||function(){return(new Date).getTime()};var C=new Date;var _={nextTick,title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:f,addListener:y,once:b,off:v,removeListener:w,removeAllListeners:D,emit:E,binding:function binding$1(e){throw new Error("process.binding is not supported")
},cwd:function cwd(){return"/"},chdir:function chdir(e){throw new Error("process.chdir is not supported")},umask:function umask(){return 0},hrtime:function hrtime$1(e){var t=.001*S.call(T),n=Math.floor(t),a=Math.floor(t%1*1e9);return e&&(n-=e[0],(a-=e[1])<0&&(n--,a+=1e9)),[n,a]},platform:"browser",release:{},config:{},uptime:function uptime(){return(new Date-C)/1e3}};function EventHandlers(){}function EventEmitter(){EventEmitter.init.call(this)}function $getMaxListeners(e){return void 0===e._maxListeners?EventEmitter.defaultMaxListeners:e._maxListeners}function emitNone(e,t,n){if(t)e.call(n);else for(var a=e.length,r=arrayClone(e,a),o=0;o<a;++o)r[o].call(n)}function emitOne(e,t,n,a){if(t)e.call(n,a);else for(var r=e.length,o=arrayClone(e,r),i=0;i<r;++i)o[i].call(n,a)}function emitTwo(e,t,n,a,r){if(t)e.call(n,a,r);else for(var o=e.length,i=arrayClone(e,o),s=0;s<o;++s)i[s].call(n,a,r)}function emitThree(e,t,n,a,r,o){
if(t)e.call(n,a,r,o);else for(var i=e.length,s=arrayClone(e,i),c=0;c<i;++c)s[c].call(n,a,r,o)}function emitMany(e,t,n,a){if(t)e.apply(n,a);else for(var r=e.length,o=arrayClone(e,r),i=0;i<r;++i)o[i].apply(n,a)}function _addListener(e,t,n,a){var r,o,i;if("function"!=typeof n)throw new TypeError('"listener" argument must be a function');if((o=e._events)?(o.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),o=e._events),i=o[t]):(o=e._events=new EventHandlers,e._eventsCount=0),i){if("function"==typeof i?i=o[t]=a?[n,i]:[i,n]:a?i.unshift(n):i.push(n),!i.warned&&(r=$getMaxListeners(e))&&r>0&&i.length>r){i.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=e,s.type=t,s.count=i.length,function emitWarning(e){"function"==typeof console.warn?console.warn(e):console.log(e)}(s)}}else i=o[t]=n,++e._eventsCount;return e}
function _onceWrap(e,t,n){var a=!1;function g(){e.removeListener(t,g),a||(a=!0,n.apply(e,arguments))}return g.listener=n,g}function listenerCount$1(e){var t=this._events;if(t){var n=t[e];if("function"==typeof n)return 1;if(n)return n.length}return 0}function arrayClone(e,t){for(var n=new Array(t);t--;)n[t]=e[t];return n}function getAugmentedNamespace(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(n){var a=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,a.get?a:{enumerable:!0,get:function(){return e[n]}})})),t}EventHandlers.prototype=Object.create(null),EventEmitter.EventEmitter=EventEmitter,EventEmitter.usingDomains=!1,EventEmitter.prototype.domain=void 0,EventEmitter.prototype._events=void 0,EventEmitter.prototype._maxListeners=void 0,EventEmitter.defaultMaxListeners=10,EventEmitter.init=function(){this.domain=null,EventEmitter.usingDomains&&undefined.active,
this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new EventHandlers,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},EventEmitter.prototype.setMaxListeners=function setMaxListeners(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},EventEmitter.prototype.getMaxListeners=function getMaxListeners(){return $getMaxListeners(this)},EventEmitter.prototype.emit=function emit(e){var t,n,a,r,o,i,s,c="error"===e;if(i=this._events)c=c&&null==i.error;else if(!c)return!1;if(s=this.domain,c){if(t=arguments[1],!s){if(t instanceof Error)throw t;var l=new Error('Uncaught, unspecified "error" event. ('+t+")");throw l.context=t,l}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=s,t.domainThrown=!1,s.emit("error",t),!1}if(!(n=i[e]))return!1;var u="function"==typeof n;switch(a=arguments.length){case 1:emitNone(n,u,this);break
;case 2:emitOne(n,u,this,arguments[1]);break;case 3:emitTwo(n,u,this,arguments[1],arguments[2]);break;case 4:emitThree(n,u,this,arguments[1],arguments[2],arguments[3]);break;default:for(r=new Array(a-1),o=1;o<a;o++)r[o-1]=arguments[o];emitMany(n,u,this,r)}return!0},EventEmitter.prototype.addListener=function addListener(e,t){return _addListener(this,e,t,!1)},EventEmitter.prototype.on=EventEmitter.prototype.addListener,EventEmitter.prototype.prependListener=function prependListener(e,t){return _addListener(this,e,t,!0)},EventEmitter.prototype.once=function once(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,_onceWrap(this,e,t)),this},EventEmitter.prototype.prependOnceListener=function prependOnceListener(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,_onceWrap(this,e,t)),this},EventEmitter.prototype.removeListener=function removeListener(e,t){
var n,a,r,o,i;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(a=this._events))return this;if(!(n=a[e]))return this;if(n===t||n.listener&&n.listener===t)0==--this._eventsCount?this._events=new EventHandlers:(delete a[e],a.removeListener&&this.emit("removeListener",e,n.listener||t));else if("function"!=typeof n){for(r=-1,o=n.length;o-- >0;)if(n[o]===t||n[o].listener&&n[o].listener===t){i=n[o].listener,r=o;break}if(r<0)return this;if(1===n.length){if(n[0]=void 0,0==--this._eventsCount)return this._events=new EventHandlers,this;delete a[e]}else!function spliceOne(e,t){for(var n=t,a=n+1,r=e.length;a<r;n+=1,a+=1)e[n]=e[a];e.pop()}(n,r);a.removeListener&&this.emit("removeListener",e,i||t)}return this},EventEmitter.prototype.off=function(e,t){return this.removeListener(e,t)},EventEmitter.prototype.removeAllListeners=function removeAllListeners(e){var t,n;if(!(n=this._events))return this
;if(!n.removeListener)return 0===arguments.length?(this._events=new EventHandlers,this._eventsCount=0):n[e]&&(0==--this._eventsCount?this._events=new EventHandlers:delete n[e]),this;if(0===arguments.length){for(var a,r=Object.keys(n),o=0;o<r.length;++o)"removeListener"!==(a=r[o])&&this.removeAllListeners(a);return this.removeAllListeners("removeListener"),this._events=new EventHandlers,this._eventsCount=0,this}if("function"==typeof(t=n[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},EventEmitter.prototype.listeners=function listeners(e){var t,n=this._events;return n&&(t=n[e])?"function"==typeof t?[t.listener||t]:function unwrapListeners(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(t):[]},EventEmitter.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):listenerCount$1.call(e,t)},EventEmitter.prototype.listenerCount=listenerCount$1,
EventEmitter.prototype.eventNames=function eventNames(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};var A={exports:{}},k=1e3,F=60*k,R=60*F,x=24*R,I=7*x,N=365.25*x,ms=function(e,t){t=t||{};var n=typeof e;if("string"===n&&e.length>0)return function parse$2(e){if((e=String(e)).length>100)return;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)return;var n=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return n*N;case"weeks":case"week":case"w":return n*I;case"days":case"day":case"d":return n*x;case"hours":case"hour":case"hrs":case"hr":case"h":return n*R;case"minutes":case"minute":case"mins":case"min":case"m":return n*F;case"seconds":case"second":case"secs":case"sec":case"s":return n*k;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}(e)
;if("number"===n&&isFinite(e))return t.long?function fmtLong(e){var t=Math.abs(e);if(t>=x)return plural(e,t,x,"day");if(t>=R)return plural(e,t,R,"hour");if(t>=F)return plural(e,t,F,"minute");if(t>=k)return plural(e,t,k,"second");return e+" ms"}(e):function fmtShort(e){var t=Math.abs(e);if(t>=x)return Math.round(e/x)+"d";if(t>=R)return Math.round(e/R)+"h";if(t>=F)return Math.round(e/F)+"m";if(t>=k)return Math.round(e/k)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function plural(e,t,n,a){var r=t>=1.5*n;return Math.round(e/n)+" "+a+(r?"s":"")}var L=function setup(e){function createDebug(e){let t,n,a,r=null;function debug(...e){if(!debug.enabled)return;const n=debug,a=Number(new Date),r=a-(t||a);n.diff=r,n.prev=t,n.curr=a,t=a,e[0]=createDebug.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let o=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((t,a)=>{if("%%"===t)return"%";o++;const r=createDebug.formatters[a]
;if("function"==typeof r){const a=e[o];t=r.call(n,a),e.splice(o,1),o--}return t})),createDebug.formatArgs.call(n,e);(n.log||createDebug.log).apply(n,e)}return debug.namespace=e,debug.useColors=createDebug.useColors(),debug.color=createDebug.selectColor(e),debug.extend=extend,debug.destroy=createDebug.destroy,Object.defineProperty(debug,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==r?r:(n!==createDebug.namespaces&&(n=createDebug.namespaces,a=createDebug.enabled(e)),a),set:e=>{r=e}}),"function"==typeof createDebug.init&&createDebug.init(debug),debug}function extend(e,t){const n=createDebug(this.namespace+(void 0===t?":":t)+e);return n.log=this.log,n}function toNamespace(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return createDebug.debug=createDebug,createDebug.default=createDebug,createDebug.coerce=function coerce(e){if(e instanceof Error)return e.stack||e.message;return e},createDebug.disable=function disable(){
const e=[...createDebug.names.map(toNamespace),...createDebug.skips.map(toNamespace).map((e=>"-"+e))].join(",");return createDebug.enable(""),e},createDebug.enable=function enable(e){let t;createDebug.save(e),createDebug.namespaces=e,createDebug.names=[],createDebug.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),a=n.length;for(t=0;t<a;t++)n[t]&&("-"===(e=n[t].replace(/\*/g,".*?"))[0]?createDebug.skips.push(new RegExp("^"+e.slice(1)+"$")):createDebug.names.push(new RegExp("^"+e+"$")))},createDebug.enabled=function enabled(e){if("*"===e[e.length-1])return!0;let t,n;for(t=0,n=createDebug.skips.length;t<n;t++)if(createDebug.skips[t].test(e))return!1;for(t=0,n=createDebug.names.length;t<n;t++)if(createDebug.names[t].test(e))return!0;return!1},createDebug.humanize=ms,createDebug.destroy=function destroy(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},
Object.keys(e).forEach((t=>{createDebug[t]=e[t]})),createDebug.names=[],createDebug.skips=[],createDebug.formatters={},createDebug.selectColor=function selectColor(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return createDebug.colors[Math.abs(t)%createDebug.colors.length]},createDebug.enable(createDebug.load()),createDebug};!function(e,t){t.formatArgs=function formatArgs(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let a=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(a++,"%c"===e&&(r=a))})),t.splice(r,0,n)},t.save=function save(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function load(){let e;try{e=t.storage.getItem("debug")}catch(e){}!e&&void 0!==_&&"env"in _&&(e=_.env.DEBUG);return e},t.useColors=function useColors(){
if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function localstorage(){try{return localStorage}catch(e){}}(),t.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`."))}})(),t.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"],t.log=console.debug||console.log||(()=>{}),e.exports=L(t)
;const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(A,A.exports);var M,P,O,B,U=A.exports,j="undefined"!=typeof performance&&performance,z=_.hrtime,getNanoSeconds=function(){var e=z();return 1e9*e[0]+e[1]},q=getNanoSeconds(),now=function(){return(getNanoSeconds()-q)/1e6};function throwIfEmpty(e){if(!e)throw new Error("name must be non-empty")}if(j&&j.mark&&j.getEntriesByName&&j.getEntriesByType&&j.clearMeasures)M=function(e){throwIfEmpty(e),j.mark("start "+e)},P=function(e){throwIfEmpty(e),j.mark("end "+e),j.measure(e,"start "+e,"end "+e);var t=j.getEntriesByName(e);return t[t.length-1]},O=function(){return j.getEntriesByType("measure")},B=function(){j.clearMarks(),j.clearMeasures()};else{var $={},V=[];M=function(e){throwIfEmpty(e);var t=now();$["$"+e]=t},P=function(e){throwIfEmpty(e);var t=now(),n=$["$"+e];if(!n)throw new Error("no known mark: "+e);var a={startTime:n,name:e,duration:t-n,
entryType:"measure"};return function insertSorted(e,t){for(var n,a=0,r=e.length;a<r;)e[n=a+r>>>1].startTime<t.startTime?a=n+1:r=n;e.splice(a,0,t)}(V,a),a},O=function(){return V},B=function(){$={},V=[]}}const W="win32"===_.platform,H=_.browser,G={red:H?"crimson":1,yellow:H?"gold":3,cyan:H?"darkturquoise":6,green:H?"forestgreen":2,blue:H?"steelblue":4,magenta:H?"palevioletred":5};U.colors=[G.cyan,G.green,G.blue,G.magenta];const Y={};let K;class Log{static _logToStdErr(e,t){Log.loggerfn(e)(...t)}static loggerfn(e){let t=Y[e=`LH:${e}`];return t||(t=U(e),Y[e]=t,e.endsWith("error")?t.color=G.red:e.endsWith("warn")&&(t.color=G.yellow)),t}static setLevel(e){switch(K=e,e){case"silent":U.enable("-LH:*");break;case"verbose":U.enable("LH:*");break;case"error":U.enable("-LH:*, LH:*:error");break;default:U.enable("LH:*, -LH:*:verbose")}}static formatProtocol(e,t,n){
const a=!_||_.browser?1/0:_.stdout.columns,r=t.method||"?????",o=a-r.length-e.length-25,i=t.params&&"IO.read"!==r?JSON.stringify(t.params).substr(0,o):"";Log._logToStdErr(`${e}:${n||""}`,[r,i])}static isVerbose(){return"verbose"===K}static time({msg:e,id:t,args:n=[]},a="log"){M(t),Log[a]("status",e,...n)}static timeEnd({msg:e,id:t,args:n=[]},a="verbose"){Log[a]("statusEnd",e,...n),P(t)}static log(e,...t){return Log.events.issueStatus(e,t),Log._logToStdErr(e,t)}static warn(e,...t){return Log.events.issueWarning(e,t),Log._logToStdErr(`${e}:warn`,t)}static error(e,...t){return Log._logToStdErr(`${e}:error`,t)}static verbose(e,...t){return Log.events.issueStatus(e,t),Log._logToStdErr(`${e}:verbose`,t)}static greenify(e){return`${Log.green}${e}${Log.reset}`}static redify(e){return`${Log.red}${e}${Log.reset}`}static get green(){return""}static get red(){return""}static get yellow(){return""}static get purple(){return""}static get reset(){return""}static get bold(){
return""}static get dim(){return""}static get tick(){return W?"√":"✓"}static get cross(){return W?"×":"✘"}static get whiteSmallSquare(){return W?"·":"▫"}static get heavyHorizontal(){return W?"─":"━"}static get heavyVertical(){return W?"│ ":"┃ "}static get heavyUpAndRight(){return W?"└":"┗"}static get heavyVerticalAndRight(){return W?"├":"┣"}static get heavyDownAndHorizontal(){return W?"┬":"┳"}static get doubleLightHorizontal(){return"──"}}Log.events=new class Emitter extends EventEmitter{issueStatus(e,t){"status"!==e&&"statusEnd"!==e||this.emit(e,[e,...t])}issueWarning(e,t){this.emit("warning",[e,...t])}},Log.takeTimeEntries=()=>{const e=O();return B(),e},Log.getTimeEntries=()=>O();var J={},Z=Object.freeze({__proto__:null,default:J});function normalizeArray(e,t){for(var n=0,a=e.length-1;a>=0;a--){var r=e[a];"."===r?e.splice(a,1):".."===r?(e.splice(a,1),n++):n&&(e.splice(a,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}
var X=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,splitPath=function(e){return X.exec(e).slice(1)};function resolve(){for(var e="",t=!1,n=arguments.length-1;n>=-1&&!t;n--){var a=n>=0?arguments[n]:"/";if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");a&&(e=a+"/"+e,t="/"===a.charAt(0))}return(t?"/":"")+(e=normalizeArray(filter(e.split("/"),(function(e){return!!e})),!t).join("/"))||"."}function normalize(e){var t=isAbsolute(e),n="/"===ee(e,-1);return(e=normalizeArray(filter(e.split("/"),(function(e){return!!e})),!t).join("/"))||t||(e="."),e&&n&&(e+="/"),(t?"/":"")+e}function isAbsolute(e){return"/"===e.charAt(0)}var Q={extname:function extname(e){return splitPath(e)[3]},basename:function basename(e,t){var n=splitPath(e)[2];return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n},dirname:function dirname(e){var t=splitPath(e),n=t[0],a=t[1];return n||a?(a&&(a=a.substr(0,a.length-1)),n+a):"."},sep:"/",delimiter:":",
relative:function relative(e,t){function trim(e){for(var t=0;t<e.length&&""===e[t];t++);for(var n=e.length-1;n>=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=resolve(e).substr(1),t=resolve(t).substr(1);for(var n=trim(e.split("/")),a=trim(t.split("/")),r=Math.min(n.length,a.length),o=r,i=0;i<r;i++)if(n[i]!==a[i]){o=i;break}var s=[];for(i=o;i<n.length;i++)s.push("..");return(s=s.concat(a.slice(o))).join("/")},join:function join(){var e=Array.prototype.slice.call(arguments,0);return normalize(filter(e,(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},isAbsolute,normalize,resolve};function filter(e,t){if(e.filter)return e.filter(t);for(var n=[],a=0;a<e.length;a++)t(e[a],a,e)&&n.push(e[a]);return n}var ee="b"==="ab".substr(-1)?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 te=function listCacheClear$1(){this.__data__=[],this.size=0};var ne=function eq$2(e,t){
return e===t||e!=e&&t!=t},ae=ne;var re=function assocIndexOf$4(e,t){for(var n=e.length;n--;)if(ae(e[n][0],t))return n;return-1},oe=re,ie=Array.prototype.splice;var se=re;var ce=re;var le=re;var ue=te,de=function listCacheDelete$1(e){var t=this.__data__,n=oe(t,e);return!(n<0)&&(n==t.length-1?t.pop():ie.call(t,n,1),--this.size,!0)},me=function listCacheGet$1(e){var t=this.__data__,n=se(t,e);return n<0?void 0:t[n][1]},pe=function listCacheHas$1(e){return ce(this.__data__,e)>-1},ge=function listCacheSet$1(e,t){var n=this.__data__,a=le(n,e);return a<0?(++this.size,n.push([e,t])):n[a][1]=t,this};function ListCache$4(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var a=e[t];this.set(a[0],a[1])}}ListCache$4.prototype.clear=ue,ListCache$4.prototype.delete=de,ListCache$4.prototype.get=me,ListCache$4.prototype.has=pe,ListCache$4.prototype.set=ge;var he=ListCache$4,fe=he;var ye=function stackClear$1(){this.__data__=new fe,this.size=0};var be=function stackDelete$1(e){
var t=this.__data__,n=t.delete(e);return this.size=t.size,n};var ve=function stackGet$1(e){return this.__data__.get(e)};var we=function stackHas$1(e){return this.__data__.has(e)},De="object"==typeof e&&e&&e.Object===Object&&e,Ee=De,Te="object"==typeof self&&self&&self.Object===Object&&self,Se=Ee||Te||Function("return this")(),Ce=Se.Symbol,_e=Ce,Ae=Object.prototype,ke=Ae.hasOwnProperty,Fe=Ae.toString,Re=_e?_e.toStringTag:void 0;var xe=function getRawTag$1(e){var t=ke.call(e,Re),n=e[Re];try{e[Re]=void 0;var a=!0}catch(e){}var r=Fe.call(e);return a&&(t?e[Re]=n:delete e[Re]),r},Ie=Object.prototype.toString;var Ne=xe,Le=function objectToString$2(e){return Ie.call(e)},Me=Ce?Ce.toStringTag:void 0;var Pe=function baseGetTag$4(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Me&&Me in Object(e)?Ne(e):Le(e)};var Oe=function isObject$3(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},Be=Pe,Ue=Oe;var je,ze=function isFunction$3(e){if(!Ue(e))return!1;var t=Be(e)
;return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t},qe=Se["__core-js_shared__"],$e=(je=/[^.]+$/.exec(qe&&qe.keys&&qe.keys.IE_PROTO||""))?"Symbol(src)_1."+je:"";var Ve=function isMasked$1(e){return!!$e&&$e in e},We=Function.prototype.toString;var He=function toSource$2(e){if(null!=e){try{return We.call(e)}catch(e){}try{return e+""}catch(e){}}return""},Ge=ze,Ye=Ve,Ke=Oe,Je=He,Ze=/^\[object .+?Constructor\]$/,Xe=Function.prototype,Qe=Object.prototype,et=Xe.toString,tt=Qe.hasOwnProperty,nt=RegExp("^"+et.call(tt).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var at=function baseIsNative$1(e){return!(!Ke(e)||Ye(e))&&(Ge(e)?nt:Ze).test(Je(e))},rt=function getValue$1(e,t){return null==e?void 0:e[t]};var ot=function getNative$6(e,t){var n=rt(e,t);return at(n)?n:void 0},it=ot(Se,"Map"),st=ot(Object,"create"),ct=st;var lt=function hashClear$1(){
this.__data__=ct?ct(null):{},this.size=0};var ut=function hashDelete$1(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},dt=st,mt=Object.prototype.hasOwnProperty;var pt=function hashGet$1(e){var t=this.__data__;if(dt){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return mt.call(t,e)?t[e]:void 0},gt=st,ht=Object.prototype.hasOwnProperty;var ft=st;var yt=lt,bt=ut,vt=pt,wt=function hashHas$1(e){var t=this.__data__;return gt?void 0!==t[e]:ht.call(t,e)},Dt=function hashSet$1(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=ft&&void 0===t?"__lodash_hash_undefined__":t,this};function Hash$1(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var a=e[t];this.set(a[0],a[1])}}Hash$1.prototype.clear=yt,Hash$1.prototype.delete=bt,Hash$1.prototype.get=vt,Hash$1.prototype.has=wt,Hash$1.prototype.set=Dt;var Et=Hash$1,Tt=he,St=it;var Ct=function isKeyable$1(e){var t=typeof e
;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e};var _t=function getMapData$4(e,t){var n=e.__data__;return Ct(t)?n["string"==typeof t?"string":"hash"]:n.map},At=_t;var kt=_t;var Ft=_t;var Rt=_t;var xt=function mapCacheClear$1(){this.size=0,this.__data__={hash:new Et,map:new(St||Tt),string:new Et}},It=function mapCacheDelete$1(e){var t=At(this,e).delete(e);return this.size-=t?1:0,t},Nt=function mapCacheGet$1(e){return kt(this,e).get(e)},Lt=function mapCacheHas$1(e){return Ft(this,e).has(e)},Mt=function mapCacheSet$1(e,t){var n=Rt(this,e),a=n.size;return n.set(e,t),this.size+=n.size==a?0:1,this};function MapCache$2(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var a=e[t];this.set(a[0],a[1])}}MapCache$2.prototype.clear=xt,MapCache$2.prototype.delete=It,MapCache$2.prototype.get=Nt,MapCache$2.prototype.has=Lt,MapCache$2.prototype.set=Mt;var Pt=MapCache$2,Ot=he,Bt=it,Ut=Pt;var jt=he,zt=ye,$t=be,Vt=ve,Wt=we,Ht=function stackSet$1(e,t){
var n=this.__data__;if(n instanceof Ot){var a=n.__data__;if(!Bt||a.length<199)return a.push([e,t]),this.size=++n.size,this;n=this.__data__=new Ut(a)}return n.set(e,t),this.size=n.size,this};function Stack$1(e){var t=this.__data__=new jt(e);this.size=t.size}Stack$1.prototype.clear=zt,Stack$1.prototype.delete=$t,Stack$1.prototype.get=Vt,Stack$1.prototype.has=Wt,Stack$1.prototype.set=Ht;var Gt=Stack$1;var Yt=Pt,Kt=function setCacheAdd$1(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},Jt=function setCacheHas$1(e){return this.__data__.has(e)};function SetCache$1(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new Yt;++t<n;)this.add(e[t])}SetCache$1.prototype.add=SetCache$1.prototype.push=Kt,SetCache$1.prototype.has=Jt;var Zt=SetCache$1,Xt=function arraySome$1(e,t){for(var n=-1,a=null==e?0:e.length;++n<a;)if(t(e[n],n,e))return!0;return!1},Qt=function cacheHas$1(e,t){return e.has(t)};var en=function equalArrays$2(e,t,n,a,r,o){var i=1&n,s=e.length,c=t.length
;if(s!=c&&!(i&&c>s))return!1;var l=o.get(e),u=o.get(t);if(l&&u)return l==t&&u==e;var d=-1,m=!0,p=2&n?new Zt:void 0;for(o.set(e,t),o.set(t,e);++d<s;){var h=e[d],f=t[d];if(a)var y=i?a(f,h,d,t,e,o):a(h,f,d,e,t,o);if(void 0!==y){if(y)continue;m=!1;break}if(p){if(!Xt(t,(function(e,t){if(!Qt(p,t)&&(h===e||r(h,e,n,a,o)))return p.push(t)}))){m=!1;break}}else if(h!==f&&!r(h,f,n,a,o)){m=!1;break}}return o.delete(e),o.delete(t),m};var tn=Se.Uint8Array,nn=ne,an=en,rn=function mapToArray$1(e){var t=-1,n=Array(e.size);return e.forEach((function(e,a){n[++t]=[a,e]})),n},on=function setToArray$1(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n},sn=Ce?Ce.prototype:void 0,cn=sn?sn.valueOf:void 0;var ln=function equalByTag$1(e,t,n,a,r,o,i){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!o(new tn(e),new tn(t)));case"[object Boolean]":
case"[object Date]":case"[object Number]":return nn(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var s=rn;case"[object Set]":var c=1&a;if(s||(s=on),e.size!=t.size&&!c)return!1;var l=i.get(e);if(l)return l==t;a|=2,i.set(e,t);var u=an(s(e),s(t),a,r,o,i);return i.delete(e),u;case"[object Symbol]":if(cn)return cn.call(e)==cn.call(t)}return!1};var un=function arrayPush$1(e,t){for(var n=-1,a=t.length,r=e.length;++n<a;)e[r+n]=t[n];return e},dn=Array.isArray,mn=un,pn=dn;var gn=function baseGetAllKeys$1(e,t,n){var a=t(e);return pn(e)?a:mn(a,n(e))};var hn=function arrayFilter$1(e,t){for(var n=-1,a=null==e?0:e.length,r=0,o=[];++n<a;){var i=e[n];t(i,n,e)&&(o[r++]=i)}return o},fn=function stubArray$1(){return[]},yn=Object.prototype.propertyIsEnumerable,bn=Object.getOwnPropertySymbols,vn=bn?function(e){return null==e?[]:(e=Object(e),hn(bn(e),(function(t){return yn.call(e,t)})))}:fn
;var wn=function baseTimes$1(e,t){for(var n=-1,a=Array(e);++n<e;)a[n]=t(n);return a};var Dn=function isObjectLike$4(e){return null!=e&&"object"==typeof e},En=Pe,Tn=Dn;var Sn=function baseIsArguments$1(e){return Tn(e)&&"[object Arguments]"==En(e)},Cn=Dn,_n=Object.prototype,An=_n.hasOwnProperty,kn=_n.propertyIsEnumerable,Fn=Sn(function(){return arguments}())?Sn:function(e){return Cn(e)&&An.call(e,"callee")&&!kn.call(e,"callee")},Rn={exports:{}};var xn=function stubFalse(){return!1};!function(e,t){var n=Se,a=xn,r=t&&!t.nodeType&&t,o=r&&e&&!e.nodeType&&e,i=o&&o.exports===r?n.Buffer:void 0,s=(i?i.isBuffer:void 0)||a;e.exports=s}(Rn,Rn.exports);var In=/^(?:0|[1-9]\d*)$/;var Nn=function isIndex$1(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&In.test(e))&&e>-1&&e%1==0&&e<t};var Ln=function isLength$2(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991},Mn=Pe,Pn=Ln,On=Dn,Bn={}
;Bn["[object Float32Array]"]=Bn["[object Float64Array]"]=Bn["[object Int8Array]"]=Bn["[object Int16Array]"]=Bn["[object Int32Array]"]=Bn["[object Uint8Array]"]=Bn["[object Uint8ClampedArray]"]=Bn["[object Uint16Array]"]=Bn["[object Uint32Array]"]=!0,Bn["[object Arguments]"]=Bn["[object Array]"]=Bn["[object ArrayBuffer]"]=Bn["[object Boolean]"]=Bn["[object DataView]"]=Bn["[object Date]"]=Bn["[object Error]"]=Bn["[object Function]"]=Bn["[object Map]"]=Bn["[object Number]"]=Bn["[object Object]"]=Bn["[object RegExp]"]=Bn["[object Set]"]=Bn["[object String]"]=Bn["[object WeakMap]"]=!1;var Un=function baseIsTypedArray$1(e){return On(e)&&Pn(e.length)&&!!Bn[Mn(e)]};var jn=function baseUnary$1(e){return function(t){return e(t)}},zn={exports:{}};!function(e,t){var n=De,a=t&&!t.nodeType&&t,r=a&&e&&!e.nodeType&&e,o=r&&r.exports===a&&n.process,i=function(){try{var e=r&&r.require&&r.require("util").types;return e||o&&o.binding&&o.binding("util")}catch(e){}}();e.exports=i}(zn,zn.exports)
;var qn=Un,$n=jn,Vn=zn.exports,Wn=Vn&&Vn.isTypedArray,Hn=Wn?$n(Wn):qn,Gn=wn,Yn=Fn,Kn=dn,Jn=Rn.exports,Zn=Nn,Xn=Hn,Qn=Object.prototype.hasOwnProperty;var ea=function arrayLikeKeys$1(e,t){var n=Kn(e),a=!n&&Yn(e),r=!n&&!a&&Jn(e),o=!n&&!a&&!r&&Xn(e),i=n||a||r||o,s=i?Gn(e.length,String):[],c=s.length;for(var l in e)!t&&!Qn.call(e,l)||i&&("length"==l||r&&("offset"==l||"parent"==l)||o&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||Zn(l,c))||s.push(l);return s},ta=Object.prototype;var na=function isPrototype$1(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||ta)};var aa=function overArg$1(e,t){return function(n){return e(t(n))}}(Object.keys,Object),ra=na,oa=aa,ia=Object.prototype.hasOwnProperty;var sa=ze,ca=Ln;var la=ea,ua=function baseKeys$1(e){if(!ra(e))return oa(e);var t=[];for(var n in Object(e))ia.call(e,n)&&"constructor"!=n&&t.push(n);return t},da=function isArrayLike$1(e){return null!=e&&ca(e.length)&&!sa(e)};var ma=gn,pa=vn,ga=function keys$2(e){
return da(e)?la(e):ua(e)};var ha=function getAllKeys$1(e){return ma(e,ga,pa)},fa=Object.prototype.hasOwnProperty;var ya=function equalObjects$1(e,t,n,a,r,o){var i=1&n,s=ha(e),c=s.length;if(c!=ha(t).length&&!i)return!1;for(var l=c;l--;){var u=s[l];if(!(i?u in t:fa.call(t,u)))return!1}var d=o.get(e),m=o.get(t);if(d&&m)return d==t&&m==e;var p=!0;o.set(e,t),o.set(t,e);for(var h=i;++l<c;){var f=e[u=s[l]],y=t[u];if(a)var b=i?a(y,f,u,t,e,o):a(f,y,u,e,t,o);if(!(void 0===b?f===y||r(f,y,n,a,o):b)){p=!1;break}h||(h="constructor"==u)}if(p&&!h){var v=e.constructor,w=t.constructor;v==w||!("constructor"in e)||!("constructor"in t)||"function"==typeof v&&v instanceof v&&"function"==typeof w&&w instanceof w||(p=!1)}return o.delete(e),o.delete(t),p},ba=ot(Se,"DataView"),va=it,wa=ot(Se,"Promise"),Da=ot(Se,"Set"),Ea=ot(Se,"WeakMap"),Ta=Pe,Sa=He,Ca="[object Map]",_a="[object Promise]",Aa="[object Set]",ka="[object WeakMap]",Fa="[object DataView]",Ra=Sa(ba),xa=Sa(va),Ia=Sa(wa),Na=Sa(Da),La=Sa(Ea),Ma=Ta
;(ba&&Ma(new ba(new ArrayBuffer(1)))!=Fa||va&&Ma(new va)!=Ca||wa&&Ma(wa.resolve())!=_a||Da&&Ma(new Da)!=Aa||Ea&&Ma(new Ea)!=ka)&&(Ma=function(e){var t=Ta(e),n="[object Object]"==t?e.constructor:void 0,a=n?Sa(n):"";if(a)switch(a){case Ra:return Fa;case xa:return Ca;case Ia:return _a;case Na:return Aa;case La:return ka}return t});var Pa=Gt,Oa=en,Ba=ln,Ua=ya,ja=Ma,za=dn,qa=Rn.exports,$a=Hn,Va="[object Arguments]",Wa="[object Array]",Ha="[object Object]",Ga=Object.prototype.hasOwnProperty;var Ya=function baseIsEqualDeep$1(e,t,n,a,r,o){var i=za(e),s=za(t),c=i?Wa:ja(e),l=s?Wa:ja(t),u=(c=c==Va?Ha:c)==Ha,d=(l=l==Va?Ha:l)==Ha,m=c==l;if(m&&qa(e)){if(!qa(t))return!1;i=!0,u=!1}if(m&&!u)return o||(o=new Pa),i||$a(e)?Oa(e,t,n,a,r,o):Ba(e,t,c,n,a,r,o);if(!(1&n)){var p=u&&Ga.call(e,"__wrapped__"),h=d&&Ga.call(t,"__wrapped__");if(p||h){var f=p?e.value():e,y=h?t.value():t;return o||(o=new Pa),r(f,y,n,a,o)}}return!!m&&(o||(o=new Pa),Ua(e,t,n,a,r,o))},Ka=Dn;var Ja=function baseIsEqual$1(e,t,n,a,r){
return e===t||(null==e||null==t||!Ka(e)&&!Ka(t)?e!=e&&t!=t:Ya(e,t,n,a,baseIsEqual$1,r))};var Za=function isEqual(e,t){return Ja(e,t)};
/**
* @license Copyright 2020 Google Inc. All Rights Reserved.
* 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.
*/class Fetcher{constructor(e){this.session=e}async fetchResource(e,t={timeout:2e3}){return globalThis.isLightrider?this._wrapWithTimeout(this._fetchWithFetchApi(e),t.timeout):this._fetchResourceOverProtocol(e,t)}async _fetchWithFetchApi(e){const t=await fetch(e);let n=null;try{n=await t.text()}catch{}return{content:n,status:t.status}}async _readIOStream(e,t={timeout:2e3}){const n=Date.now();let a,r="";for(;!a||!a.eof;){if(Date.now()-n>t.timeout)throw new Error("Waiting for the end of the IO stream exceeded the allotted time.");a=await this.session.sendCommand("IO.read",{handle:e});const o=a.base64Encoded?Buffer.from(a.data,"base64").toString("utf-8"):a.data;r=r.concat(o)}return r}async _loadNetworkResource(e){const t=await this.session.sendCommand("Page.getFrameTree"),n=await this.session.sendCommand("Network.loadNetworkResource",{frameId:t.frameTree.frame.id,url:e,options:{disableCache:!0,includeCredentials:!0}});return{stream:n.resource.success&&n.resource.stream||null,
status:n.resource.httpStatusCode||null}}async _fetchResourceOverProtocol(e,t){const n=Date.now(),a=await this._wrapWithTimeout(this._loadNetworkResource(e),t.timeout),r=a.status&&a.status>=200&&a.status<=299;if(!a.stream||!r)return{status:a.status,content:null};const o=t.timeout-(Date.now()-n),i=await this._readIOStream(a.stream,{timeout:o});return{status:a.status,content:i}}async _wrapWithTimeout(e,t){let n;const a=new Promise(((e,a)=>{n=setTimeout(a,t,new Error("Timed out fetching resource"))}));return await Promise.race([e,a]).finally((()=>clearTimeout(n)))}}function getElementsInDocument(e){const t=window.__ElementMatches||window.Element.prototype.matches,n=[],_findAllElements=a=>{for(const r of a){if(!e||t.call(r,e)){const e=r;n.push(e)}r.shadowRoot&&_findAllElements(r.shadowRoot.querySelectorAll("*"))}};return _findAllElements(document.querySelectorAll("*")),n}function getOuterHTMLSnippet(e,t=[],n=500){const a=["autofill-information","autofill-prediction","title"]
;e instanceof ShadowRoot&&(e=e.host);try{const r=e.cloneNode();e.ownerDocument.createElement("template").content.append(r),t.concat(a).forEach((e=>{r.removeAttribute(e)}));let o=0;for(const t of r.getAttributeNames()){if(o>n){r.removeAttribute(t);continue}let a=r.getAttribute(t);if(null===a)continue;let i=!1;if("src"===t&&"currentSrc"in e){const t=e,n=t.currentSrc,r=t.ownerDocument.location.href;new URL(a,r).toString()!==n&&(a=n,i=!0)}if(a.length>75&&(a=a.slice(0,74)+"…",i=!0),i)if("style"===t){r.style.cssText=a}else r.setAttribute(t,a);o+=t.length+a.length}const i=/^[\s\S]*?>/,[s]=r.outerHTML.match(i)||[];return s&&o>n?s.slice(0,s.length-1)+" …>":s||""}catch(t){return`<${e.localName}>`}}function getNodePath(e){const isShadowRoot=e=>e.nodeType===Node.DOCUMENT_FRAGMENT_NODE,getNodeParent=e=>isShadowRoot(e)?e.host:e.parentNode;function getNodeIndex(e){if(isShadowRoot(e))return"a";let t,n=0;for(;t=e.previousSibling;)(e=t).nodeType===Node.TEXT_NODE&&0===(e.nodeValue||"").trim().length||n++
;return n}let t=e;const n=[];for(;t&&getNodeParent(t);){const e=getNodeIndex(t);n.push([e,t.nodeName]),t=getNodeParent(t)}return n.reverse(),n.join(",")}function getNodeSelector(e){function getSelectorPart(e){let t=e.tagName.toLowerCase();return e.id?t+="#"+e.id:e.classList.length>0&&(t+="."+e.classList[0]),t}const t=[];for(;t.length<4&&(t.unshift(getSelectorPart(e)),e.parentElement)&&"HTML"!==(e=e.parentElement).tagName;);return t.join(" > ")}function isPositionFixed(e){function getStyleAttrValue(e,t){return e.style[t]||window.getComputedStyle(e)[t]}const t=document.querySelector("html");if(!t)throw new Error("html element not found in document");if(t.scrollHeight<=t.clientHeight||!["scroll","auto","visible"].includes(getStyleAttrValue(t,"overflowY")))return!1;let n=e;for(;n;){const e=getStyleAttrValue(n,"position");if("fixed"===e||"sticky"===e)return!0;n=n.parentElement}return!1}function getNodeLabel(e){const t=e.tagName.toLowerCase();if("html"!==t&&"body"!==t){
const t=e instanceof HTMLElement&&e.innerText||e.getAttribute("alt")||e.getAttribute("aria-label");if(t)return function truncate(e,t){return e.length<=t?e:Array.from(e).slice(0,t-1).join("")+"…"}(t,80);{const t=e.querySelector("[alt], [aria-label]");if(t)return getNodeLabel(t)}}return null}function getBoundingClientRect(e){const t=(window.__HTMLElementBoundingClientRect||window.HTMLElement.prototype.getBoundingClientRect).call(e);return{top:Math.round(t.top),bottom:Math.round(t.bottom),left:Math.round(t.left),right:Math.round(t.right),width:Math.round(t.width),height:Math.round(t.height)}}function getNodeDetails(e){window.__lighthouseNodesDontTouchOrAllVarianceGoesAway||(window.__lighthouseNodesDontTouchOrAllVarianceGoesAway=new Map);const t=getNodeSelector(e=e instanceof ShadowRoot?e.host:e);let n=window.__lighthouseNodesDontTouchOrAllVarianceGoesAway.get(e)
;n||(n=[void 0===window.__lighthouseExecutionContextUniqueIdentifier?"page":window.__lighthouseExecutionContextUniqueIdentifier,window.__lighthouseNodesDontTouchOrAllVarianceGoesAway.size,e.tagName].join("-"),window.__lighthouseNodesDontTouchOrAllVarianceGoesAway.set(e,n));return{lhId:n,devtoolsNodePath:getNodePath(e),selector:t,boundingRect:getBoundingClientRect(e),snippet:getOuterHTMLSnippet(e),nodeLabel:getNodeLabel(e)||t}}const Xa=getNodeDetails.toString();getNodeDetails.toString=()=>`function getNodeDetails(element) {\n ${getNodePath};\n ${getNodeSelector};\n ${getBoundingClientRect};\n ${getOuterHTMLSnippet};\n ${getNodeLabel};\n return (${Xa})(element);\n}`;const Qa={wrapRuntimeEvalErrorInBrowser:function wrapRuntimeEvalErrorInBrowser(e){return e&&"string"!=typeof e||(e=new Error(e)),{__failedInBrowser:!0,name:e.name||"Error",message:e.message||"unknown error",stack:e.stack}},getElementsInDocument,getOuterHTMLSnippet,computeBenchmarkIndex:function computeBenchmarkIndex(){
return(function benchmarkIndexGC(){const e=Date.now();let t=0;for(;Date.now()-e<500;){let e="";for(let t=0;t<1e4;t++)e+="a";if(1===e.length)throw new Error("will never happen, but prevents compiler optimizations");t++}const n=(Date.now()-e)/1e3;return Math.round(t/10/n)}()+function benchmarkIndexNoGC(){const e=[],t=[];for(let n=0;n<1e5;n++)e[n]=t[n]=n;const n=Date.now();let a=0;for(;a%10!=0||Date.now()-n<500;){const n=a%2==0?e:t,r=a%2==0?t:e;for(let e=0;e<n.length;e++)r[e]=n[e];a++}const r=(Date.now()-n)/1e3;return Math.round(a/10/r)}())/2},getNodeDetails,getNodePath,getNodeSelector,getNodeLabel,isPositionFixed,wrapRequestIdleCallback:function wrapRequestIdleCallback(e){const t=Math.floor(40/e),n=window.requestIdleCallback;window.requestIdleCallback=(e,a)=>n((n=>{const a=Date.now();n.__timeRemaining=n.timeRemaining,n.timeRemaining=()=>{const e=n.__timeRemaining();return Math.min(e,Math.max(0,t-(Date.now()-a)))},n.timeRemaining.toString=()=>"function timeRemaining() { [native code] }",
e(n)}),a),window.requestIdleCallback.toString=()=>"function requestIdleCallback() { [native code] }"},getBoundingClientRect};class ExecutionContext{constructor(e){this._session=e,this._executionContextId=void 0,this._executionContextIdentifiersCreated=0,e.on("Page.frameNavigated",(()=>this.clearContextId())),e.on("Runtime.executionContextDestroyed",(e=>{e.executionContextId===this._executionContextId&&this.clearContextId()}))}getContextId(){return this._executionContextId}clearContextId(){this._executionContextId=void 0}async _getOrCreateIsolatedContextId(){if("number"==typeof this._executionContextId)return this._executionContextId;await this._session.sendCommand("Page.enable"),await this._session.sendCommand("Runtime.enable");const e=(await this._session.sendCommand("Page.getFrameTree")).frameTree.frame.id,t=await this._session.sendCommand("Page.createIsolatedWorld",{frameId:e,worldName:"lighthouse_isolated_context"});return this._executionContextId=t.executionContextId,
this._executionContextIdentifiersCreated++,t.executionContextId}async _evaluateInContext(e,t){const n=this._session.hasNextProtocolTimeout()?this._session.getNextProtocolTimeout():6e4,a=void 0===t?void 0:this._executionContextIdentifiersCreated,r={expression:`(function wrapInNativePromise() {\n ${ExecutionContext._cachedNativesPreamble};\n globalThis.__lighthouseExecutionContextUniqueIdentifier =\n ${a};\n return new Promise(function (resolve) {\n return Promise.resolve()\n .then(_ => ${e})\n .catch(${Qa.wrapRuntimeEvalErrorInBrowser})\n .then(resolve);\n });\n }())\n //# sourceURL=_lighthouse-eval.js`,includeCommandLineAPI:!0,awaitPromise:!0,returnByValue:!0,timeout:n,contextId:t};this._session.setNextProtocolTimeout(n);const o=await this._session.sendCommand("Runtime.evaluate",r);if(o.exceptionDetails){
const e=o.exceptionDetails.exception?o.exceptionDetails.exception.description:o.exceptionDetails.text;return Promise.reject(new Error(`Evaluation exception: ${e}`))}if(void 0===o.result)return Promise.reject(new Error('Runtime.evaluate response did not contain a "result" object'));const i=o.result.value;return i?.__failedInBrowser?Promise.reject(Object.assign(new Error,i)):i}async evaluateAsync(e,t={}){const n=t.useIsolation?await this._getOrCreateIsolatedContextId():void 0;try{return await this._evaluateInContext(e,n)}catch(t){if(n&&t.message.includes("Cannot find context")){this.clearContextId();const t=await this._getOrCreateIsolatedContextId();return this._evaluateInContext(e,t)}throw t}}evaluate(e,t){const n=ExecutionContext.serializeArguments(t.args),a=`(() => {\n ${t.deps?t.deps.join("\n"):""}\n return (${e})(${n});\n })()`;return this.evaluateAsync(a,t)}async evaluateOnNewDocument(e,t){
const n=ExecutionContext.serializeArguments(t.args),a=t.deps?t.deps.join("\n"):"",r=`(() => {\n ${ExecutionContext._cachedNativesPreamble};\n ${a};\n (${e})(${n});\n })()\n //# sourceURL=_lighthouse-eval.js`;await this._session.sendCommand("Page.addScriptToEvaluateOnNewDocument",{source:r})}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(";\n")
;static serializeArguments(e){return e.map((e=>void 0===e?"undefined":JSON.stringify(e))).join(",")}}var er,tr={URL:globalThis.URL,fileURLToPath:e=>e},nr=function(){function peg$SyntaxError(e,t,n,a){this.message=e,this.expected=t,this.found=n,this.location=a,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,peg$SyntaxError)}return function peg$subclass(e,t){function ctor(){this.constructor=e}ctor.prototype=t.prototype,e.prototype=new ctor}(peg$SyntaxError,Error),peg$SyntaxError.buildMessage=function(e,t){var n={literal:function(e){return'"'+literalEscape(e.text)+'"'},class:function(e){var t,n="";for(t=0;t<e.parts.length;t++)n+=e.parts[t]instanceof Array?classEscape(e.parts[t][0])+"-"+classEscape(e.parts[t][1]):classEscape(e.parts[t]);return"["+(e.inverted?"^":"")+n+"]"},any:function(e){return"any character"},end:function(e){return"end of input"},other:function(e){return e.description}};function hex(e){
return e.charCodeAt(0).toString(16).toUpperCase()}function literalEscape(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(e){return"\\x0"+hex(e)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(e){return"\\x"+hex(e)}))}function classEscape(e){return e.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(e){return"\\x0"+hex(e)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(e){return"\\x"+hex(e)}))}return"Expected "+function describeExpected(e){var t,a,r,o=new Array(e.length);for(t=0;t<e.length;t++)o[t]=(r=e[t],n[r.type](r));if(o.sort(),o.length>0){for(t=1,a=1;t<o.length;t++)o[t-1]!==o[t]&&(o[a]=o[t],a++);o.length=a}switch(o.length){case 1:return o[0];case 2:return o[0]+" or "+o[1];default:
return o.slice(0,-1).join(", ")+", or "+o[o.length-1]}}(e)+" but "+function describeFound(e){return e?'"'+literalEscape(e)+'"':"end of input"}(t)+" found."},{SyntaxError:peg$SyntaxError,parse:function peg$parse(e,t){t=void 0!==t?t:{};var n,a={},r={start:peg$parsestart},o=peg$parsestart,peg$c3=function(e){return e.join("")
},i=peg$literalExpectation("{",!1),s=",",c=peg$literalExpectation(",",!1),l=peg$literalExpectation("}",!1),u="number",d=peg$literalExpectation("number",!1),m="date",p=peg$literalExpectation("date",!1),h="time",f=peg$literalExpectation("time",!1),y="plural",b=peg$literalExpectation("plural",!1),v="selectordinal",w=peg$literalExpectation("selectordinal",!1),D="select",E=peg$literalExpectation("select",!1),T=peg$literalExpectation("=",!1),S="offset:",C=peg$literalExpectation("offset:",!1),_=peg$otherExpectation("whitespace"),A=/^[ \t\n\r]/,k=peg$classExpectation([" ","\t","\n","\r"],!1,!1),F=peg$otherExpectation("optionalWhitespace"),R=/^[0-9]/,x=peg$classExpectation([["0","9"]],!1,!1),I=/^[0-9a-f]/i,N=peg$classExpectation([["0","9"],["a","f"]],!1,!0),L=peg$literalExpectation("0",!1),M=/^[1-9]/,P=peg$classExpectation([["1","9"]],!1,!1),O="'",B=peg$literalExpectation("'",!1),U=/^[ \t\n\r,.+={}#]/,j=peg$classExpectation([" ","\t","\n","\r",",",".","+","=","{","}","#"],!1,!1),z={type:"any"
},q=/^[^{}\\\0-\x1F\x7F \t\n\r]/,$=peg$classExpectation(["{","}","\\",["\0",""],""," ","\t","\n","\r"],!0,!1),V=peg$literalExpectation("\\\\",!1),W=peg$literalExpectation("\\#",!1),H=peg$literalExpectation("\\{",!1),G=peg$literalExpectation("\\}",!1),Y=peg$literalExpectation("\\u",!1),K=0,J=0,Z=[{line:1,column:1}],X=0,Q=[],ee=0;if("startRule"in t){if(!(t.startRule in r))throw new Error("Can't start parsing from rule \""+t.startRule+'".');o=r[t.startRule]}function location(){return peg$computeLocation(J,K)}function peg$literalExpectation(e,t){return{type:"literal",text:e,ignoreCase:t}}function peg$classExpectation(e,t,n){return{type:"class",parts:e,inverted:t,ignoreCase:n}}function peg$otherExpectation(e){return{type:"other",description:e}}function peg$computePosDetails(t){var n,a=Z[t];if(a)return a;for(n=t-1;!Z[n];)n--;for(a={line:(a=Z[n]).line,column:a.column};n<t;)10===e.charCodeAt(n)?(a.line++,a.column=1):a.column++,n++;return Z[t]=a,a}function peg$computeLocation(e,t){
var n=peg$computePosDetails(e),a=peg$computePosDetails(t);return{start:{offset:e,line:n.line,column:n.column},end:{offset:t,line:a.line,column:a.column}}}function peg$fail(e){K<X||(K>X&&(X=K,Q=[]),Q.push(e))}function peg$parsestart(){return peg$parsemessageFormatPattern()}function peg$parsemessageFormatPattern(){var e,t,n;for(e=K,t=[],n=peg$parsemessageFormatElement();n!==a;)t.push(n),n=peg$parsemessageFormatElement();return t!==a&&(J=e,t={type:"messageFormatPattern",elements:t,location:location()}),e=t}function peg$parsemessageFormatElement(){var t;return(t=function peg$parsemessageTextElement(){var t,n;t=K,(n=function peg$parsemessageText(){var t,n,r,o,i,s;t=K,n=[],r=K,(o=peg$parse_())!==a&&(i=peg$parsechars())!==a&&(s=peg$parse_())!==a?r=o=[o,i,s]:(K=r,r=a);if(r!==a)for(;r!==a;)n.push(r),r=K,(o=peg$parse_())!==a&&(i=peg$parsechars())!==a&&(s=peg$parse_())!==a?r=o=[o,i,s]:(K=r,r=a);else n=a;n!==a&&(J=t,n=n.reduce((function(e,t){return e.concat(t)}),[]).join(""));(t=n)===a&&(t=K,
t=(n=peg$parsews())!==a?e.substring(t,K):n);return t}())!==a&&(J=t,n={type:"messageTextElement",value:n,location:location()});return t=n}())===a&&(t=function peg$parseargumentElement(){var t,n,r,o,T,S,C;t=K,123===e.charCodeAt(K)?(n="{",K++):(n=a,0===ee&&peg$fail(i));n!==a&&peg$parse_()!==a&&(r=function peg$parseargument(){var e,t,n;if((e=peg$parsenumber())===a){for(e=K,t=[],n=peg$parsequoteEscapedChar();n!==a;)t.push(n),n=peg$parsequoteEscapedChar();t!==a&&(J=e,t=peg$c3(t)),e=t}return e}())!==a&&peg$parse_()!==a?(o=K,44===e.charCodeAt(K)?(T=s,K++):(T=a,0===ee&&peg$fail(c)),T!==a&&(S=peg$parse_())!==a&&(C=function peg$parseelementFormat(){var t;(t=function peg$parsesimpleFormat(){var t,n,r,o,i,l;t=K,e.substr(K,6)===u?(n=u,K+=6):(n=a,0===ee&&peg$fail(d));n===a&&(e.substr(K,4)===m?(n=m,K+=4):(n=a,0===ee&&peg$fail(p)),n===a&&(e.substr(K,4)===h?(n=h,K+=4):(n=a,0===ee&&peg$fail(f))));n!==a&&peg$parse_()!==a?(r=K,44===e.charCodeAt(K)?(o=s,K++):(o=a,0===ee&&peg$fail(c)),
o!==a&&(i=peg$parse_())!==a&&(l=peg$parsechars())!==a?r=o=[o,i,l]:(K=r,r=a),r===a&&(r=null),r!==a?(J=t,t=n={type:n+"Format",style:(y=r)&&y[2],location:location()}):(K=t,t=a)):(K=t,t=a);var y;return t}())===a&&(t=function peg$parsepluralFormat(){var t,n,r,o;t=K,e.substr(K,6)===y?(n=y,K+=6):(n=a,0===ee&&peg$fail(b));n!==a&&peg$parse_()!==a?(44===e.charCodeAt(K)?(r=s,K++):(r=a,0===ee&&peg$fail(c)),r!==a&&peg$parse_()!==a&&(o=peg$parsepluralStyle())!==a?(J=t,t=n={type:(i=o).type,ordinal:!1,offset:i.offset||0,options:i.options,location:location()}):(K=t,t=a)):(K=t,t=a);var i;return t}())===a&&(t=function peg$parseselectOrdinalFormat(){var t,n,r,o;t=K,e.substr(K,13)===v?(n=v,K+=13):(n=a,0===ee&&peg$fail(w));n!==a&&peg$parse_()!==a?(44===e.charCodeAt(K)?(r=s,K++):(r=a,0===ee&&peg$fail(c)),r!==a&&peg$parse_()!==a&&(o=peg$parsepluralStyle())!==a?(J=t,t=n={type:(i=o).type,ordinal:!0,offset:i.offset||0,options:i.options,location:location()}):(K=t,t=a)):(K=t,t=a);var i;return t
}())===a&&(t=function peg$parseselectFormat(){var t,n,r,o,i;t=K,e.substr(K,6)===D?(n=D,K+=6):(n=a,0===ee&&peg$fail(E));if(n!==a)if(peg$parse_()!==a)if(44===e.charCodeAt(K)?(r=s,K++):(r=a,0===ee&&peg$fail(c)),r!==a)if(peg$parse_()!==a){if(o=[],(i=peg$parseoptionalFormatPattern())!==a)for(;i!==a;)o.push(i),i=peg$parseoptionalFormatPattern();else o=a;o!==a?(J=t,t=n=function(e){return{type:"selectFormat",options:e,location:location()}}(o)):(K=t,t=a)}else K=t,t=a;else K=t,t=a;else K=t,t=a;else K=t,t=a;return t}());return t}())!==a?o=T=[T,S,C]:(K=o,o=a),o===a&&(o=null),o!==a&&(T=peg$parse_())!==a?(125===e.charCodeAt(K)?(S="}",K++):(S=a,0===ee&&peg$fail(l)),S!==a?(J=t,t=n=function(e,t){return{type:"argumentElement",id:e,format:t&&t[2],location:location()}}(r,o)):(K=t,t=a)):(K=t,t=a)):(K=t,t=a);return t}()),t}function peg$parseoptionalFormatPattern(){var t,n,r,o,s;return t=K,peg$parse_()!==a&&(n=function peg$parseselector(){var t,n,r,o;return t=K,n=K,61===e.charCodeAt(K)?(r="=",K++):(r=a,
0===ee&&peg$fail(T)),r!==a&&(o=peg$parsenumber())!==a?n=r=[r,o]:(K=n,n=a),(t=n!==a?e.substring(t,K):n)===a&&(t=peg$parsechars()),t}())!==a&&peg$parse_()!==a?(123===e.charCodeAt(K)?(r="{",K++):(r=a,0===ee&&peg$fail(i)),r!==a&&(o=peg$parsemessageFormatPattern())!==a?(125===e.charCodeAt(K)?(s="}",K++):(s=a,0===ee&&peg$fail(l)),s!==a?(J=t,t={type:"optionalFormatPattern",selector:n,value:o,location:location()}):(K=t,t=a)):(K=t,t=a)):(K=t,t=a),t}function peg$parsepluralStyle(){var t,n,r,o;if(t=K,(n=function peg$parseoffset(){var t,n,r;return t=K,e.substr(K,7)===S?(n=S,K+=7):(n=a,0===ee&&peg$fail(C)),n!==a&&peg$parse_()!==a&&(r=peg$parsenumber())!==a?(J=t,t=n=r):(K=t,t=a),t}())===a&&(n=null),n!==a)if(peg$parse_()!==a){if(r=[],(o=peg$parseoptionalFormatPattern())!==a)for(;o!==a;)r.push(o),o=peg$parseoptionalFormatPattern();else r=a;r!==a?(J=t,t=n=function(e,t){return{type:"pluralFormat",offset:e,options:t,location:location()}}(n,r)):(K=t,t=a)}else K=t,t=a;else K=t,t=a;return t}
function peg$parsews(){var t,n;if(ee++,t=[],A.test(e.charAt(K))?(n=e.charAt(K),K++):(n=a,0===ee&&peg$fail(k)),n!==a)for(;n!==a;)t.push(n),A.test(e.charAt(K))?(n=e.charAt(K),K++):(n=a,0===ee&&peg$fail(k));else t=a;return ee--,t===a&&(n=a,0===ee&&peg$fail(_)),t}function peg$parse_(){var t,n,r;for(ee++,t=K,n=[],r=peg$parsews();r!==a;)n.push(r),r=peg$parsews();return t=n!==a?e.substring(t,K):n,ee--,t===a&&(n=a,0===ee&&peg$fail(F)),t}function peg$parsedigit(){var t;return R.test(e.charAt(K))?(t=e.charAt(K),K++):(t=a,0===ee&&peg$fail(x)),t}function peg$parsehexDigit(){var t;return I.test(e.charAt(K))?(t=e.charAt(K),K++):(t=a,0===ee&&peg$fail(N)),t}function peg$parsenumber(){var t,n,r,o,i,s;if(t=K,48===e.charCodeAt(K)?(n="0",K++):(n=a,0===ee&&peg$fail(L)),n===a){if(n=K,r=K,M.test(e.charAt(K))?(o=e.charAt(K),K++):(o=a,0===ee&&peg$fail(P)),o!==a){for(i=[],s=peg$parsedigit();s!==a;)i.push(s),s=peg$parsedigit();i!==a?r=o=[o,i]:(K=r,r=a)}else K=r,r=a;n=r!==a?e.substring(n,K):r}return n!==a&&(J=t,
n=parseInt(n,10)),t=n}function peg$parsequoteEscapedChar(){var t,n,r;return t=K,n=K,ee++,39===e.charCodeAt(K)?(r=O,K++):(r=a,0===ee&&peg$fail(B)),r===a&&(U.test(e.charAt(K))?(r=e.charAt(K),K++):(r=a,0===ee&&peg$fail(j))),ee--,r===a?n=void 0:(K=n,n=a),n!==a?(e.length>K?(r=e.charAt(K),K++):(r=a,0===ee&&peg$fail(z)),r!==a?(J=t,t=n=r):(K=t,t=a)):(K=t,t=a),t===a&&(t=K,39===e.charCodeAt(K)?(n=O,K++):(n=a,0===ee&&peg$fail(B)),n!==a&&(r=function peg$parseescape(){var t;U.test(e.charAt(K))?(t=e.charAt(K),K++):(t=a,0===ee&&peg$fail(j));t===a&&(t=peg$parseapostrophe());return t}())!==a?(J=t,t=n=r):(K=t,t=a)),t}function peg$parseapostrophe(){var t;return 39===e.charCodeAt(K)?(t=O,K++):(t=a,0===ee&&peg$fail(B)),t}function peg$parsechar(){var t,n,r,o,i,s,c,l,u;return t=K,39===e.charCodeAt(K)?(n=O,K++):(n=a,0===ee&&peg$fail(B)),n!==a&&(r=peg$parseapostrophe())!==a?(J=t,t=n=r):(K=t,t=a),t===a&&(q.test(e.charAt(K))?(t=e.charAt(K),K++):(t=a,0===ee&&peg$fail($)),t===a&&(t=K,
"\\\\"===e.substr(K,2)?(n="\\\\",K+=2):(n=a,0===ee&&peg$fail(V)),n!==a&&(J=t,n="\\"),(t=n)===a&&(t=K,"\\#"===e.substr(K,2)?(n="\\#",K+=2):(n=a,0===ee&&peg$fail(W)),n!==a&&(J=t,n="\\#"),(t=n)===a&&(t=K,"\\{"===e.substr(K,2)?(n="\\{",K+=2):(n=a,0===ee&&peg$fail(H)),n!==a&&(J=t,n="{"),(t=n)===a&&(t=K,"\\}"===e.substr(K,2)?(n="\\}",K+=2):(n=a,0===ee&&peg$fail(G)),n!==a&&(J=t,n="}"),(t=n)===a&&(t=K,"\\u"===e.substr(K,2)?(n="\\u",K+=2):(n=a,0===ee&&peg$fail(Y)),n!==a?(r=K,o=K,(i=peg$parsehexDigit())!==a&&(s=peg$parsehexDigit())!==a&&(c=peg$parsehexDigit())!==a&&(l=peg$parsehexDigit())!==a?o=i=[i,s,c,l]:(K=o,o=a),(r=o!==a?e.substring(r,K):o)!==a?(J=t,u=r,t=n=String.fromCharCode(parseInt(u,16))):(K=t,t=a)):(K=t,t=a))))))),t}function peg$parsechars(){var e,t,n;if(e=K,t=[],(n=peg$parsechar())!==a)for(;n!==a;)t.push(n),n=peg$parsechar();else t=a;return t!==a&&(J=e,t=peg$c3(t)),e=t}if((n=o())!==a&&K===e.length)return n;throw n!==a&&K<e.length&&peg$fail({type:"end"}),
function peg$buildStructuredError(e,t,n){return new peg$SyntaxError(peg$SyntaxError.buildMessage(e,t),e,t,n)}(Q,X<e.length?e.charAt(X):null,X<e.length?peg$computeLocation(X,X+1):peg$computeLocation(X,X))}}}(),ar=globalThis&&globalThis.__extends||(er=function(e,t){return(er=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function __(){this.constructor=e}er(e,t),e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)}),rr=function(){function Compiler(e,t,n){this.locales=[],this.formats={number:{},date:{},time:{}},this.pluralNumberFormat=null,this.currentPlural=null,this.pluralStack=[],this.locales=e,this.formats=t,this.formatters=n}return Compiler.prototype.compile=function(e){return this.pluralStack=[],this.currentPlural=null,this.pluralNumberFormat=null,this.compileMessage(e)},Compiler.prototype.compileMessage=function(e){var t=this
;if(!e||"messageFormatPattern"!==e.type)throw new Error('Message AST is not of type: "messageFormatPattern"');var n=e.elements,a=n.filter((function(e){return"messageTextElement"===e.type||"argumentElement"===e.type})).map((function(e){return"messageTextElement"===e.type?t.compileMessageText(e):t.compileArgument(e)}));if(a.length!==n.length)throw new Error("Message element does not have a valid type");return a},Compiler.prototype.compileMessageText=function(e){return this.currentPlural&&/(^|[^\\])#/g.test(e.value)?(this.pluralNumberFormat||(this.pluralNumberFormat=new Intl.NumberFormat(this.locales)),new cr(this.currentPlural.id,this.currentPlural.format.offset,this.pluralNumberFormat,e.value)):e.value.replace(/\\#/g,"#")},Compiler.prototype.compileArgument=function(e){var t=e.format,n=e.id,a=this.formatters;if(!t)return new ir(n);var r=this.formats,o=this.locales;switch(t.type){case"numberFormat":return{id:n,format:a.getNumberFormat(o,r.number[t.style]).format};case"dateFormat":return{
id:n,format:a.getDateTimeFormat(o,r.date[t.style]).format};case"timeFormat":return{id:n,format:a.getDateTimeFormat(o,r.time[t.style]).format};case"pluralFormat":return new sr(n,t.offset,this.compileOptions(e),a.getPluralRules(o,{type:t.ordinal?"ordinal":"cardinal"}));case"selectFormat":return new lr(n,this.compileOptions(e));default:throw new Error("Message element does not have a valid format type")}},Compiler.prototype.compileOptions=function(e){var t=this,n=e.format,a=n.options;this.pluralStack.push(this.currentPlural),this.currentPlural="pluralFormat"===n.type?e:null;var r=a.reduce((function(e,n){return e[n.selector]=t.compileMessage(n.value),e}),{});return this.currentPlural=this.pluralStack.pop(),r},Compiler}(),or=function or(e){this.id=e},ir=function(e){function StringFormat(){return null!==e&&e.apply(this,arguments)||this}return ar(StringFormat,e),StringFormat.prototype.format=function(e){return e||"number"==typeof e?"string"==typeof e?e:String(e):""},StringFormat
}(or),sr=function(){function PluralFormat(e,t,n,a){this.id=e,this.offset=t,this.options=n,this.pluralRules=a}return PluralFormat.prototype.getOption=function(e){var t=this.options;return t["="+e]||t[this.pluralRules.select(e-this.offset)]||t.other},PluralFormat}(),cr=function(e){function PluralOffsetString(t,n,a,r){var o=e.call(this,t)||this;return o.offset=n,o.numberFormat=a,o.string=r,o}return ar(PluralOffsetString,e),PluralOffsetString.prototype.format=function(e){var t=this.numberFormat.format(e-this.offset);return this.string.replace(/(^|[^\\])#/g,"$1"+t).replace(/\\#/g,"#")},PluralOffsetString}(or),lr=function(){function SelectFormat(e,t){this.id=e,this.options=t}return SelectFormat.prototype.getOption=function(e){var t=this.options;return t[e]||t.other},SelectFormat}();var ur=globalThis&&globalThis.__extends||function(){var extendStatics=function(e,t){return(extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){
for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};return function(e,t){function __(){this.constructor=e}extendStatics(e,t),e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)}}(),dr=globalThis&&globalThis.__assign||function(){return(dr=Object.assign||function(e){for(var t,n=1,a=arguments.length;n<a;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)};function resolveLocale(e){"string"==typeof e&&(e=[e]);try{return Intl.NumberFormat.supportedLocalesOf(e,{localeMatcher:"best fit"})[0]}catch(e){return pr.defaultLocale}}function formatPatterns(e,t){for(var n="",a=0,r=e;a<r.length;a++){var o=r[a];if("string"!=typeof o){var i=o.id;if(!t||!(i in t))throw new mr("A value must be provided for: "+i,i);var s=t[i];o.options?n+=formatPatterns(o.getOption(s),t):n+=o.format(s)}else n+=o}return n}function mergeConfigs(e,t){return t?Object.keys(e).reduce((function(n,a){return n[a]=function mergeConfig(e,t){
return t?dr({},e||{},t||{},Object.keys(e).reduce((function(n,a){return n[a]=dr({},e[a],t[a]||{}),n}),{})):e}(e[a],t[a]),n}),dr({},e)):e}var mr=function(e){function FormatError(t,n){var a=e.call(this,t)||this;return a.variableId=n,a}return ur(FormatError,e),FormatError}(Error);var pr=function(){function IntlMessageFormat(e,t,n,a){var r=this;if(void 0===t&&(t=IntlMessageFormat.defaultLocale),this.format=function(e){try{return formatPatterns(r.pattern,e)}catch(e){throw e.variableId?new Error("The intl string context variable '"+e.variableId+"' was not provided to the string '"+r.message+"'"):e}},"string"==typeof e){if(!IntlMessageFormat.__parse)throw new TypeError("IntlMessageFormat.__parse must be set to process `message` of type `string`");this.ast=IntlMessageFormat.__parse(e)}else this.ast=e;if(this.message=e,!this.ast||"messageFormatPattern"!==this.ast.type)throw new TypeError("A message must be provided as a String or AST.");var o=mergeConfigs(IntlMessageFormat.formats,n)
;this.locale=resolveLocale(t||[]);var i=a&&a.formatters||function createDefaultFormatters(){return{getNumberFormat:function(){for(var e,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return new((e=Intl.NumberFormat).bind.apply(e,[void 0].concat(t)))},getDateTimeFormat:function(){for(var e,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return new((e=Intl.DateTimeFormat).bind.apply(e,[void 0].concat(t)))},getPluralRules:function(){for(var e,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return new((e=Intl.PluralRules).bind.apply(e,[void 0].concat(t)))}}}();this.pattern=new rr(t,o,i).compile(this.ast)}return IntlMessageFormat.prototype.resolvedOptions=function(){return{locale:this.locale}},IntlMessageFormat.prototype.getAst=function(){return this.ast},IntlMessageFormat.defaultLocale="en",IntlMessageFormat.__parse=void 0,IntlMessageFormat.formats={number:{currency:{style:"currency"},percent:{style:"percent"}},date:{short:{month:"numeric",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"}}},IntlMessageFormat}();pr.__parse=nr.parse;function getModulePath(e){return tr.fileURLToPath(e.url)}function getModuleDirectory(e){return Q.dirname(getModulePath(e))}function isObjectOfUnknownValues(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}getModuleDirectory({url:"shared/localization/format.js"})
;const gr={},hr="en-US",fr=["ar-XB.json","ar.json","bg.json","ca.json","cs.json","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(),yr=/ | [^\s]+$/,br={number:{bytes:{maximumFractionDigits:0},milliseconds:{maximumFractionDigits:0},seconds:{minimumFractionDigits:1,maximumFractionDigits:1},extendedPercent:{maximumFractionDigits:2,style:"percent"}}};function collectAllCustomElementsFromICU(e,t=new Map){
for(const n of e)if("argumentElement"===n.type&&(t.set(n.id,n),n.format&&"pluralFormat"===n.format.type))for(const e of n.format.options)collectAllCustomElementsFromICU(e.value.elements,t);return t}function _preformatValues(e,t={},n){const a=[...collectAllCustomElementsFromICU(e.getAst().elements).values()],r={};for(const{id:e,format:o}of a){if(e&&e in t==!1)throw new Error(`ICU Message "${n}" contains a value reference ("${e}") that wasn't provided`);const a=t[e];if(o&&"numberFormat"===o.type){if("number"!=typeof a)throw new Error(`ICU Message "${n}" contains a numeric reference ("${e}") but provided value was not a number`);"milliseconds"===o.style?r[e]=10*Math.round(a/10):"seconds"===o.style&&"timeInMs"===e?r[e]=Math.round(a/100)/10:"bytes"===o.style?r[e]=a/1024:r[e]=a}else r[e]=a}for(const e of Object.keys(t))if(!(e in r)){if("errorCode"!==e)throw new Error(`Provided value "${e}" does not match any placeholder in ICU message "${n}"`);r.errorCode=t.errorCode}return r}
function formatMessage(e,t,n){if(!e.includes("{")&&void 0===t)return e;const a=new pr(e,"en-XA"===n||"en-XL"===n?"de-DE":n,br),r=_preformatValues(a,t,e);return a.format(r)}function getRendererFormattedStrings(e){const t=_getLocaleMessages(e),n=Object.keys(t).filter((e=>e.startsWith("report/renderer/report-utils.js"))),a={};for(const e of n){const{filename:n,key:r}=getIcuMessageIdParts(e);if(!n.endsWith("report-utils.js"))throw new Error(`Unexpected message: ${e}`);a[r]=t[e].message}return a}function isIcuMessage(e){if(!isObjectOfUnknownValues(e))return!1;const{i18nId:t,values:n,formattedDefault:a}=e;if("string"!=typeof t)return!1;if("string"!=typeof a)return!1;if(void 0!==n){if(!isObjectOfUnknownValues(n))return!1;for(const e of Object.values(n))if("string"!=typeof e&&"number"!=typeof e)return!1}return yr.test(t)}function getFormatted(e,t){if(isIcuMessage(e))return function _localizeIcuMessage(e,t){const n=_getLocaleMessages(t)[e.i18nId]
;return n?formatMessage(n.message,e.values,t):e.formattedDefault}(e,t);if("string"==typeof e)return e;throw new Error("Attempted to format invalid icuMessage type")}function _formatPathAsString(e){let t="";for(const 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 replaceIcuMessages(e,t){const n={};return function replaceInObject(e,n,a=[]){if(function isObjectOrArrayOfUnknownValues(e){return"object"==typeof e&&null!==e}(e))for(const[r,o]of Object.entries(e)){const i=a.concat([r]);if(isIcuMessage(o)){const a=getFormatted(o,t),s=n[o.i18nId]||[],c=_formatPathAsString(i);s.push(o.values?{values:o.values,path:c}:c),e[r]=a,n[o.i18nId]=s}else replaceInObject(o,n,i)}}(e,n),n}function _getLocaleMessages(e){const t=gr[e];if(!t){if(e===hr)return{};throw new Error(`Unsupported locale '${e}'`)}return t}function getIcuMessageIdParts(e){
if(!yr.test(e))throw Error(`"${e}" does not appear to be a valid ICU message id`);const[t,n]=e.split(" | ");return{filename:t,key:n}}const vr=getModuleDirectory({url:"root.js"
}),wr=JSON.parse('{\n "name": "lighthouse",\n "type": "module",\n "version": "10.0.0",\n "description": "Automated auditing, performance metrics, and best practices for the web.",\n "main": "./core/index.js",\n "bin": {\n "lighthouse": "./cli/index.js",\n "chrome-debug": "./core/scripts/manual-chrome-launcher.js",\n "smokehouse": "./cli/test/smokehouse/frontends/smokehouse-bin.js"\n },\n "engines": {\n "node": ">=16.16"\n },\n "scripts": {\n "prepack": "yarn build-report --standalone --flow --esm && yarn build-types",\n "postpack": "yarn clean-types",\n "build-all": "npm-run-posix-or-windows build-all:task",\n "build-all:task": "yarn build-report && yarn build-cdt-lib && yarn build-devtools && concurrently \'yarn build-extension\' \'yarn build-lr\' \'yarn build-viewer\' \'yarn build-treemap\' \'yarn build-smokehouse-bundle\' && yarn build-pack",\n "build-all:task:windows": "yarn build-report && yarn build-cdt-lib && yarn build-extension && yarn build-devtools && yarn build-lr && yarn build-viewer && yarn build-treemap && yarn build-smokehouse-bundle",\n "build-cdt-lib": "node ./build/build-cdt-lib.js",\n "build-extension": "yarn build-extension-chrome && yarn build-extension-firefox",\n "build-extension-chrome": "node ./build/build-extension.js chrome",\n "build-extension-firefox": "node ./build/build-extension.js firefox",\n "build-devtools": "yarn reset-link && node ./build/build-bundle.js clients/devtools/devtools-entry.js dist/lighthouse-dt-bundle.js && node ./build/build-dt-report-resources.js",\n "build-smokehouse-bundle": "node ./build/build-smokehouse-bundle.js",\n "build-lr": "yarn reset-link && node ./build/build-lightrider-bundles.js",\n "build-pack": "bash build/build-pack.sh",\n "build-report": "node build/build-report-components.js && node build/build-report.js",\n "build-sample-reports": "yarn build-report && node build/build-sample-reports.js",\n "build-treemap": "node ./build/build-treemap.js",\n "build-viewer": "node ./build/build-viewer.js",\n "build-types": "yarn type-check && rsync -a .tmp/tsbuildinfo/ ./ --include=\'*.d.ts\' --include=\'*.d.cts\' --exclude=\'*.map\' --exclude=\'*.tsbuildinfo\'",\n "reset-link": "(yarn unlink || true) && yarn link && yarn link lighthouse",\n "c8": "bash core/scripts/c8.sh",\n "clean": "rm -r dist proto/scripts/*.json proto/scripts/*_pb2.* proto/scripts/*_pb.* proto/scripts/__pycache__ proto/scripts/*.pyc *.report.html *.report.dom.html *.report.json *.devtoolslog.json *.trace.json shared/localization/locales/*.ctc.json || true",\n "clean-types": "git clean -xfq \'*.d.ts\' \'*.d.cts\' -e \'node_modules/\' -e \'dist/\' -e \'.tmp/\' -e \'**/types/\'",\n "lint": "[ \\"$CI\\" = true ] && eslint --quiet -f codeframe . || eslint .",\n "smoke": "node cli/test/smokehouse/frontends/smokehouse-bin.js",\n "debug": "node --inspect-brk ./cli/index.js",\n "start": "yarn build-report --standalone && node ./cli/index.js",\n "mocha": "node --loader=testdouble core/test/scripts/run-mocha-tests.js",\n "test": "yarn diff:sample-json && yarn lint --quiet && yarn unit && yarn type-check",\n "test-bundle": "yarn smoke --runner bundle --retries=2",\n "test-clients": "yarn mocha --testMatch clients/**/*-test.js && yarn mocha --testMatch clients/**/*-test-pptr.js",\n "test-viewer": "yarn unit-viewer && yarn mocha --testMatch viewer/**/*-test-pptr.js --timeout 35000",\n "test-treemap": "yarn unit-treemap && yarn mocha --testMatch treemap/**/*-test-pptr.js --timeout 35000",\n "test-lantern": "bash core/scripts/test-lantern.sh",\n "test-legacy-javascript": "bash core/scripts/test-legacy-javascript.sh",\n "test-docs": "yarn --cwd docs/recipes/ test",\n "test-proto": "yarn compile-proto && yarn build-proto-roundtrip",\n "unit-core": "yarn mocha core",\n "unit-cli": "yarn mocha --testMatch cli/**/*-test.js",\n "unit-report": "yarn mocha --testMatch report/**/*-test.js",\n "unit-treemap": "yarn mocha --testMatch treemap/**/*-test.js",\n "unit-viewer": "yarn mocha --testMatch viewer/**/*-test.js",\n "unit-flow": "bash flow-report/test/run-flow-report-tests.sh",\n "unit": "yarn unit-flow && yarn mocha",\n "unit:ci": "NODE_OPTIONS=--max-old-space-size=8192 npm run unit --forbid-only",\n "core-unit": "yarn unit-core",\n "cli-unit": "yarn unit-cli",\n "viewer-unit": "yarn unit-viewer",\n "watch": "yarn unit-core --watch",\n "unit:cicoverage": "yarn c8 --all yarn unit:ci",\n "coverage": "yarn unit:cicoverage && c8 report --reporter html",\n "coverage:smoke": "yarn c8 yarn smoke -j=1 && c8 report --reporter html",\n "devtools": "bash core/scripts/roll-to-devtools.sh",\n "chrome": "node core/scripts/manual-chrome-launcher.js",\n "fast": "node ./cli/index.js --preset=desktop --throttlingMethod=provided",\n "deploy-treemap": "yarn build-treemap --deploy",\n "deploy-viewer": "yarn build-viewer --deploy",\n "vercel-build": "yarn build-sample-reports && yarn build-viewer && yarn build-treemap",\n "dogfood-lhci": "./core/scripts/dogfood-lhci.sh",\n "timing-trace": "node core/scripts/generate-timing-trace.js",\n "changelog": "conventional-changelog --config ./build/changelog-generator/index.cjs --infile changelog.md --same-file",\n "type-check": "tsc --build ./tsconfig-all.json",\n "i18n:checks": "./core/scripts/i18n/assert-strings-collected.sh",\n "i18n:collect-strings": "node core/scripts/i18n/collect-strings.js",\n "update:lantern-baseline": "node core/scripts/lantern/update-baseline-lantern-values.js",\n "update:sample-artifacts": "node core/scripts/update-report-fixtures.js",\n "update:sample-json": "yarn i18n:collect-strings && node ./cli -A=./core/test/results/artifacts --config-path=./core/test/results/sample-config.js --output=json --output-path=./core/test/results/sample_v2.json && node core/scripts/cleanup-LHR-for-diff.js ./core/test/results/sample_v2.json --only-remove-timing && node ./core/scripts/update-flow-fixtures.js",\n "update:flow-sample-json": "yarn i18n:collect-strings && node ./core/scripts/update-flow-fixtures.js",\n "test-devtools": "bash core/test/devtools-tests/test-locally.sh",\n "open-devtools": "bash core/scripts/open-devtools.sh",\n "run-devtools": "node core/scripts/pptr-run-devtools.js",\n "diff:sample-json": "yarn i18n:checks && bash core/scripts/assert-golden-lhr-unchanged.sh",\n "diff:flow-sample-json": "yarn i18n:collect-strings && bash core/scripts/assert-baseline-flow-result-unchanged.sh",\n "computeBenchmarkIndex": "./core/scripts/benchmark.js",\n "save-latest-run": "./core/scripts/save-latest-run.sh",\n "compile-proto": "protoc --python_out=./ ./proto/lighthouse-result.proto && mv ./proto/*_pb2.py ./proto/scripts || (echo \\"❌ Install protobuf = 3.20.x to compile the proto file.\\" && false)",\n "build-proto-roundtrip": "mkdir -p .tmp && python3 proto/scripts/json_roundtrip_via_proto.py",\n "static-server": "node cli/test/fixtures/static-server.js",\n "serve-dist": "cd dist && python3 -m http.server 7878",\n "serve-gh-pages": "cd dist/gh-pages && python3 -m http.server 7333",\n "serve-treemap": "yarn serve-gh-pages",\n "serve-viewer": "yarn serve-gh-pages",\n "flow-report": "yarn build-report --flow && node ./core/scripts/build-test-flow-report.js"\n },\n "devDependencies": {\n "@build-tracker/cli": "^1.0.0-beta.15",\n "@esbuild-kit/esm-loader": "^2.1.1",\n "@jest/fake-timers": "^28.1.0",\n "@rollup/plugin-alias": "^3.1.2",\n "@rollup/plugin-commonjs": "^20.0.0",\n "@rollup/plugin-dynamic-import-vars": "^1.1.1",\n "@rollup/plugin-json": "^4.1.0",\n "@rollup/plugin-node-resolve": "^13.0.4",\n "@rollup/plugin-typescript": "^8.2.5",\n "@stadtlandnetz/rollup-plugin-postprocess": "^1.1.0",\n "@testing-library/preact": "^3.1.1",\n "@testing-library/preact-hooks": "^1.1.0",\n "@types/archiver": "^2.1.2",\n "@types/chrome": "^0.0.154",\n "@types/configstore": "^4.0.0",\n "@types/cpy": "^5.1.0",\n "@types/eslint": "^8.2.1",\n "@types/estree": "^0.0.50",\n "@types/gh-pages": "^2.0.0",\n "@types/google.analytics": "0.0.39",\n "@types/jpeg-js": "^0.3.7",\n "@types/jsdom": "^16.2.13",\n "@types/lodash": "^4.14.178",\n "@types/mocha": "^9.0.0",\n "@types/node": "*",\n "@types/pako": "^1.0.1",\n "@types/resize-observer-browser": "^0.1.1",\n "@types/semver": "^5.5.0",\n "@types/tabulator-tables": "^4.9.1",\n "@types/ws": "^7.0.0",\n "@types/yargs": "^17.0.8",\n "@types/yargs-parser": "^20.2.1",\n "@typescript-eslint/eslint-plugin": "^5.48.0",\n "@typescript-eslint/parser": "^5.48.0",\n "acorn": "^8.5.0",\n "angular": "^1.7.4",\n "archiver": "^3.0.0",\n "c8": "^7.11.3",\n "chalk": "^2.4.1",\n "chrome-devtools-frontend": "1.0.1070764",\n "concurrently": "^6.4.0",\n "conventional-changelog-cli": "^2.1.1",\n "cpy": "^8.1.2",\n "cross-env": "^7.0.2",\n "csv-validator": "^0.0.3",\n "devtools-protocol": "0.0.1081726",\n "es-main": "^1.0.2",\n "eslint": "^8.4.1",\n "eslint-config-google": "^0.14.0",\n "eslint-formatter-codeframe": "^7.32.1",\n "eslint-plugin-import": "^2.25.3",\n "eslint-plugin-local-rules": "1.1.0",\n "event-target-shim": "^6.0.2",\n "expect": "^28.1.0",\n "firebase": "^9.0.2",\n "gh-pages": "^2.0.1",\n "glob": "^7.1.3",\n "idb-keyval": "2.2.0",\n "intl-messageformat-parser": "^1.8.1",\n "jest-mock": "^27.3.0",\n "jest-snapshot": "^28.1.0",\n "jsdom": "^12.2.0",\n "lighthouse-plugin-publisher-ads": "1.5.7-beta",\n "magic-string": "^0.25.7",\n "mime-types": "^2.1.30",\n "mocha": "^10.0.0",\n "node-fetch": "^2.6.1",\n "npm-run-posix-or-windows": "^2.0.2",\n "pako": "^2.0.3",\n "preact": "^10.7.2",\n "pretty-json-stringify": "^0.0.2",\n "puppeteer": "^19.6.0",\n "resolve": "^1.20.0",\n "rollup": "^2.52.7",\n "rollup-plugin-node-resolve": "^5.2.0",\n "rollup-plugin-polyfill-node": "^0.8.0",\n "rollup-plugin-replace": "^2.2.0",\n "rollup-plugin-shim": "^1.0.0",\n "rollup-plugin-terser": "^7.0.2",\n "tabulator-tables": "^4.9.3",\n "terser": "^5.3.8",\n "testdouble": "^3.16.5",\n "typed-query-selector": "^2.6.1",\n "typescript": "^4.9.4",\n "wait-for-expect": "^3.0.2",\n "webtreemap-cdt": "^3.2.1"\n },\n "dependencies": {\n "@sentry/node": "^6.17.4",\n "axe-core": "4.6.3",\n "chrome-launcher": "^0.15.1",\n "configstore": "^5.0.1",\n "csp_evaluator": "1.1.1",\n "enquirer": "^2.3.6",\n "http-link-header": "^0.8.0",\n "intl-messageformat": "^4.4.0",\n "jpeg-js": "^0.4.4",\n "js-library-detector": "^6.6.0",\n "lighthouse-logger": "^1.3.0",\n "lighthouse-stack-packs": "1.9.1",\n "lodash": "^4.17.21",\n "lookup-closest-locale": "6.2.0",\n "metaviewport-parser": "0.3.0",\n "open": "^8.4.0",\n "parse-cache-control": "1.0.1",\n "ps-list": "^8.0.0",\n "puppeteer-core": "^19.6.0",\n "quibble": "connorjclark/quibble#fork",\n "robots-parser": "^3.0.0",\n "semver": "^5.3.0",\n "speedline-core": "^1.4.3",\n "third-party-web": "^0.20.2",\n "ws": "^7.0.0",\n "yargs": "^17.3.1",\n "yargs-parser": "^21.0.0"\n },\n "resolutions": {\n "puppeteer/**/devtools-protocol": "0.0.1081726",\n "puppeteer-core/**/devtools-protocol": "0.0.1081726",\n "testdouble/**/quibble": "connorjclark/quibble#fork"\n },\n "repository": "GoogleChrome/lighthouse",\n "keywords": [\n "google",\n "chrome",\n "devtools"\n ],\n "author": "The Lighthouse Authors",\n "license": "Apache-2.0",\n "bugs": {\n "url": "https://github.com/GoogleChrome/lighthouse/issues"\n },\n "homepage": "https://github.com/GoogleChrome/lighthouse#readme"\n}\n').version,Dr={
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",columnOverBudget:"Over Budget",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"};function lookupLocale(e,t){if("object"!=typeof Intl)throw new Error("Lighthouse must be run in Node with `Intl` support. See https://nodejs.org/api/intl.html for help")
;const n=Intl.getCanonicalLocales(e),a=Intl.NumberFormat.supportedLocalesOf(n),r=t||function getAvailableLocales(){return[...new Set([...Object.keys(gr),hr])].sort()}(),o=function lookupClosestLocale(e,t){if("string"==typeof e&&t[e])return e;for(var n=[].concat(e||[]),a=0,r=n.length;a<r;++a)for(var o=n[a].split("-");o.length;){var i=o.join("-");if(t[i])return i;o.pop()}}(a,Object.fromEntries(r.map((e=>[e,{}]))));return o||(0===Intl.NumberFormat.supportedLocalesOf("es").length&&Log.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"),Log.warn("i18n",`locale(s) '${e}' not available. Falling back to default 'en-US'`)),o||hr}function createIcuMessageFn(e,t){e.startsWith("file://")&&(e=tr.fileURLToPath(e)),Q.isAbsolute(e)&&(e=Q.relative(vr,e));const n={...Dr,...t};return(a,r)=>{
const o=Object.keys(n).find((e=>n[e]===a));if(!o)throw new Error(`Could not locate: ${a}`);return{i18nId:`${(o in t?e:Q.relative(vr,getModulePath({url:"core/lib/i18n/i18n.js"}))).replace(/\\/g,"/")} | ${o}`,values:r,formattedDefault:formatMessage(a,r,hr)}}}function isStringOrIcuMessage(e){return"string"==typeof e||isIcuMessage(e)}const Er={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 and 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."},Tr=createIcuMessageFn("core/lib/lh-error.js",Er),Sr="__LighthouseErrorSentinel",Cr="__ErrorSentinel";class LighthouseError extends Error{constructor(e,t){super(e.code),this.name="LighthouseError",this.code=e.code,this.friendlyMessage=Tr(e.message,{errorCode:this.code,...t}),this.lhrRuntimeError=!!e.lhrRuntimeError,t&&Object.assign(this,t),Error.captureStackTrace(this,LighthouseError)}static fromProtocolMessage(e,t){const n=Object.values(LighthouseError.errors).filter((e=>e.pattern)).find((e=>e.pattern&&e.pattern.test(t.message)));if(n)return new LighthouseError(n);let a=`(${e}): ${t.message}`;t.data&&(a+=` (${t.data})`);const r=new Error(`Protocol error ${a}`);return Object.assign(r,{protocolMethod:e,protocolError:t.message})}static stringifyReplacer(e){
if(e instanceof LighthouseError){const{name:t,code:n,message:a,friendlyMessage:r,lhrRuntimeError:o,stack:i,...s}=e;return{sentinel:Sr,code:n,stack:i,...s}}if(e instanceof Error){const{message:t,stack:n}=e,a=e.code;return{sentinel:Cr,message:t,code:a,stack:n}}throw new Error("Invalid value for LighthouseError stringification")}static parseReviver(e,t){if("object"==typeof t&&null!==t){if(t.sentinel===Sr){const{sentinel:e,code:n,stack:a,...r}=t,o=LighthouseError.errors[n],i=new LighthouseError(o,r);return i.stack=a,i}if(t.sentinel===Cr){const{message:e,code:n,stack:a}=t,r=new Error(e);return Object.assign(r,{code:n,stack:a}),r}}return t}}const _r={NO_SPEEDLINE_FRAMES:{code:"NO_SPEEDLINE_FRAMES",message:Er.didntCollectScreenshots,lhrRuntimeError:!0},SPEEDINDEX_OF_ZERO:{code:"SPEEDINDEX_OF_ZERO",message:Er.didntCollectScreenshots,lhrRuntimeError:!0},NO_SCREENSHOTS:{code:"NO_SCREENSHOTS",message:Er.didntCollectScreenshots,lhrRuntimeError:!0},INVALID_SPEEDLINE:{code:"INVALID_SPEEDLINE",
message:Er.didntCollectScreenshots,lhrRuntimeError:!0},NO_TRACING_STARTED:{code:"NO_TRACING_STARTED",message:Er.badTraceRecording,lhrRuntimeError:!0},NO_RESOURCE_REQUEST:{code:"NO_RESOURCE_REQUEST",message:Er.badTraceRecording,lhrRuntimeError:!0},NO_NAVSTART:{code:"NO_NAVSTART",message:Er.badTraceRecording,lhrRuntimeError:!0},NO_FCP:{code:"NO_FCP",message:Er.noFcp,lhrRuntimeError:!0},NO_DCL:{code:"NO_DCL",message:Er.badTraceRecording,lhrRuntimeError:!0},NO_FMP:{code:"NO_FMP",message:Er.badTraceRecording},NO_LCP:{code:"NO_LCP",message:Er.noLcp},NO_LCP_ALL_FRAMES:{code:"NO_LCP_ALL_FRAMES",message:Er.noLcp},UNSUPPORTED_OLD_CHROME:{code:"UNSUPPORTED_OLD_CHROME",message:Er.oldChromeDoesNotSupportFeature},NO_TTI_CPU_IDLE_PERIOD:{code:"NO_TTI_CPU_IDLE_PERIOD",message:Er.pageLoadTookTooLong},NO_TTI_NETWORK_IDLE_PERIOD:{code:"NO_TTI_NETWORK_IDLE_PERIOD",message:Er.pageLoadTookTooLong},NO_DOCUMENT_REQUEST:{code:"NO_DOCUMENT_REQUEST",message:Er.pageLoadFailed,lhrRuntimeError:!0},
FAILED_DOCUMENT_REQUEST:{code:"FAILED_DOCUMENT_REQUEST",message:Er.pageLoadFailedWithDetails,lhrRuntimeError:!0},ERRORED_DOCUMENT_REQUEST:{code:"ERRORED_DOCUMENT_REQUEST",message:Er.pageLoadFailedWithStatusCode,lhrRuntimeError:!0},INSECURE_DOCUMENT_REQUEST:{code:"INSECURE_DOCUMENT_REQUEST",message:Er.pageLoadFailedInsecure,lhrRuntimeError:!0},CHROME_INTERSTITIAL_ERROR:{code:"CHROME_INTERSTITIAL_ERROR",message:Er.pageLoadFailedInterstitial,lhrRuntimeError:!0},PAGE_HUNG:{code:"PAGE_HUNG",message:Er.pageLoadFailedHung,lhrRuntimeError:!0},NOT_HTML:{code:"NOT_HTML",message:Er.notHtml,lhrRuntimeError:!0},TRACING_ALREADY_STARTED:{code:"TRACING_ALREADY_STARTED",message:Er.internalChromeError,pattern:/Tracing.*started/,lhrRuntimeError:!0},PARSING_PROBLEM:{code:"PARSING_PROBLEM",message:Er.internalChromeError,pattern:/Parsing problem/,lhrRuntimeError:!0},READ_FAILED:{code:"READ_FAILED",message:Er.internalChromeError,pattern:/Read failed/,lhrRuntimeError:!0},INVALID_URL:{code:"INVALID_URL",
message:Er.urlInvalid},PROTOCOL_TIMEOUT:{code:"PROTOCOL_TIMEOUT",message:Er.protocolTimeout,lhrRuntimeError:!0},DNS_FAILURE:{code:"DNS_FAILURE",message:Er.dnsFailure,lhrRuntimeError:!0},CRI_TIMEOUT:{code:"CRI_TIMEOUT",message:Er.criTimeout,lhrRuntimeError:!0},MISSING_REQUIRED_ARTIFACT:{code:"MISSING_REQUIRED_ARTIFACT",message:Er.missingRequiredArtifact},ERRORED_REQUIRED_ARTIFACT:{code:"ERRORED_REQUIRED_ARTIFACT",message:Er.erroredRequiredArtifact}};LighthouseError.errors=_r,LighthouseError.NO_ERROR="NO_ERROR",LighthouseError.UNKNOWN_ERROR="UNKNOWN_ERROR";const Ar="…",kr={PASS:{label:"pass",minScore:.9},AVERAGE:{label:"average",minScore:.5},FAIL:{label:"fail"},ERROR:{label:"error"}},Fr=["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"];class Util{static get RATINGS(){return kr}static get PASS_THRESHOLD(){return.9}static get MS_DISPLAY_VALUE(){return"%10d ms"}static getFinalDisplayedUrl(e){
if(e.finalDisplayedUrl)return e.finalDisplayedUrl;if(e.finalUrl)return e.finalUrl;throw new Error("Could not determine final displayed URL")}static getMainDocumentUrl(e){return e.mainDocumentUrl||e.finalUrl}static getFullPageScreenshot(e){if(e.fullPageScreenshot)return e.fullPageScreenshot;return e.audits["full-page-screenshot"]?.details}static splitMarkdownCodeSpans(e){const t=[],n=e.split(/`(.*?)`/g);for(let e=0;e<n.length;e++){const a=n[e];if(!a)continue;const r=e%2!=0;t.push({isCode:r,text:a})}return t}static splitMarkdownLink(e){const t=[],n=e.split(/\[([^\]]+?)\]\((https?:\/\/.*?)\)/g);for(;n.length;){const[e,a,r]=n.splice(0,3);e&&t.push({isLink:!1,text:e}),a&&r&&t.push({isLink:!0,text:a,linkHref:r})}return t}static getURLDisplayName(e,t){const n=void 0!==(t=t||{numPathParts:void 0,preserveQuery:void 0,preserveHost:void 0}).numPathParts?t.numPathParts:2,a=void 0===t.preserveQuery||t.preserveQuery,r=t.preserveHost||!1;let o
;if("about:"===e.protocol||"data:"===e.protocol)o=e.href;else{o=e.pathname;const t=o.split("/").filter((e=>e.length));n&&t.length>n&&(o=Ar+t.slice(-1*n).join("/")),r&&(o=`${e.host}/${o.replace(/^\//,"")}`),a&&(o=`${o}${e.search}`)}if("data:"!==e.protocol&&(o=o.replace(/([a-f0-9]{7})[a-f0-9]{13}[a-f0-9]*/g,"$1…"),o=o.replace(/([a-zA-Z0-9-_]{9})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9-_]{10,}/g,"$1…"),o=o.replace(/(\d{3})\d{6,}/g,"$1…"),o=o.replace(/\u2026+/g,Ar),o.length>64&&o.includes("?")&&(o=o.replace(/\?([^=]*)(=)?.*/,"?$1$2…"),o.length>64&&(o=o.replace(/\?.*/,"?…")))),o.length>64){const e=o.lastIndexOf(".");o=e>=0?o.slice(0,63-(o.length-e))+`…${o.slice(e)}`:o.slice(0,63)+Ar}return o}static parseURL(e){const t=new URL(e);return{file:Util.getURLDisplayName(t),hostname:t.hostname,origin:t.origin}}static createOrReturnURL(e){return e instanceof URL?e:new URL(e)}static getTld(e){const t=e.split(".").slice(-2);return Fr.includes(t[0])?`.${t.join(".")}`:`.${t[t.length-1]}`}
static getRootDomain(e){const t=Util.createOrReturnURL(e).hostname,n=Util.getTld(t).split(".");return t.split(".").slice(-n.length).join(".")}static filterRelevantLines(e,t,n){if(0===t.length)return e.slice(0,2*n+1);const a=new Set;return(t=t.sort(((e,t)=>(e.lineNumber||0)-(t.lineNumber||0)))).forEach((({lineNumber:e})=>{let t=e-n,r=e+n;for(;t<1;)t++,r++;a.has(t-3-1)&&(t-=3);for(let e=t;e<=r;e++){const t=e;a.add(t)}})),e.filter((e=>a.has(e.lineNumber)))}}const Rr=["https:","http:","chrome:","chrome-extension:"],xr=["data","https","wss","blob","chrome","chrome-extension","about","filesystem"],Ir=["localhost","127.0.0.1"],Nr=["blob","data","intent","file","filesystem"];function rewriteChromeInternalUrl(e){return e&&e.startsWith("chrome://")?(e.endsWith("/")&&(e=e.replace(/\/$/,"")),e.replace(/^chrome:\/\/chrome\//,"chrome://")):e}class UrlUtils{static isValid(e){try{return new URL(e),!0}catch(e){return!1}}static hostsMatch(e,t){try{return new URL(e).host===new URL(t).host}catch(e){
return!1}}static originsMatch(e,t){try{return new URL(e).origin===new URL(t).origin}catch(e){return!1}}static getOrigin(e){try{const t=new URL(e);return t.host&&t.origin||null}catch(e){return null}}static rootDomainsMatch(e,t){let n,a;try{n=Util.createOrReturnURL(e),a=Util.createOrReturnURL(t)}catch(e){return!1}if(!n.hostname||!a.hostname)return!1;return Util.getRootDomain(n)===Util.getRootDomain(a)}static getURLDisplayName(e,t){return Util.getURLDisplayName(new URL(e),t)}static elideDataURI(e){try{return"data:"===new URL(e).protocol?e.slice(0,100):e}catch(t){return e}}static equalWithExcludedFragments(e,t){[e,t]=[e,t].map(rewriteChromeInternalUrl);try{const n=new URL(e);n.hash="";const a=new URL(t);return a.hash="",n.href===a.href}catch(e){return!1}}static isProtocolAllowed(e){try{const t=new URL(e);return Rr.includes(t.protocol)}catch(e){return!1}}static isLikeLocalhost(e){return Ir.includes(e)||e.endsWith(".localhost")}static isSecureScheme(e){return xr.includes(e)}
static isNonNetworkProtocol(e){const t=e.includes(":")?e.slice(0,e.indexOf(":")):e;return Nr.includes(t)}static guessMimeType(e){let t;try{t=new URL(e)}catch{return}if("data:"===t.protocol){const e=t.pathname.match(/^(image\/(png|jpeg|svg\+xml|webp|gif|avif))[;,]/);if(!e)return;return e[1]}const n=t.pathname.toLowerCase().match(/\.(png|jpeg|jpg|svg|webp|gif|avif)$/);if(!n)return;const a=n[1];return"svg"===a?"image/svg+xml":"jpg"===a?"image/jpeg":`image/${a}`}static normalizeUrl(e){if(e&&this.isValid(e)&&this.isProtocolAllowed(e))return new URL(e).href;throw new LighthouseError(LighthouseError.errors.INVALID_URL)}}UrlUtils.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.";const Lr="X-TCPMs",Mr="X-SSLMs",Pr="X-RequestMs",Or="X-ResponseMs",Br="X-TotalMs",Ur="X-TotalFetchedSize",jr="X-ProtocolIsH2",zr={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"};class 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.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.isLinkPreload=!1}hasErrorStatusCode(){return this.statusCode>=400}setInitiatorRequest(e){this.initiatorRequest=e}onRequestWillBeSent(e){let t;this.requestId=e.requestId;try{t=new URL(e.request.url)}catch(e){return}this.url=e.request.url,this.documentURL=e.documentURL,this.parsedURL={scheme:t.protocol.split(":")[0],host:t.hostname,securityOrigin:t.origin},this.isSecure=UrlUtils.isSecureScheme(this.parsedURL.scheme),this.rendererStartTime=1e3*e.timestamp,this.networkRequestTime=this.rendererStartTime,this.requestMethod=e.request.method,this.initiator=e.initiator,this.resourceType=e.type&&zr[e.type],this.priority=e.request.initialPriority,this.frameId=e.frameId,this.isLinkPreload="preload"===e.initiator.type||!!e.request.isLinkPreload,this.isValid=!0}
onRequestServedFromCache(){this.fromMemoryCache=!0}onResponseReceived(e){this._onResponse(e.response,e.timestamp,e.type),this._updateProtocolForLightrider(),this.frameId=e.frameId}onDataReceived(e){this.resourceSize+=e.dataLength,-1!==e.encodedDataLength&&(this.transferSize+=e.encodedDataLength)}onLoadingFinished(e){this.finished||(this.finished=!0,this.networkEndTime=1e3*e.timestamp,e.encodedDataLength>=0&&(this.transferSize=e.encodedDataLength),this._updateResponseHeadersEndTimeIfNecessary(),this._updateTransferSizeForLightrider(),this._updateTimingsForLightrider())}onLoadingFailed(e){this.finished||(this.finished=!0,this.networkEndTime=1e3*e.timestamp,this.failed=!0,this.resourceType=e.type&&zr[e.type],this.localizedFailDescription=e.errorText,this._updateResponseHeadersEndTimeIfNecessary(),this._updateTransferSizeForLightrider(),this._updateTimingsForLightrider())}onResourceChangedPriority(e){this.priority=e.newPriority}onRedirectResponse(e){
if(!e.redirectResponse)throw new Error("Missing redirectResponse data");this._onResponse(e.redirectResponse,e.timestamp,e.type),this.resourceType=void 0,this.finished=!0,this.networkEndTime=1e3*e.timestamp,this._updateResponseHeadersEndTimeIfNecessary()}setSession(e){this.sessionId=e}_onResponse(e,t,n){this.url=e.url,this.connectionId=String(e.connectionId),this.connectionReused=e.connectionReused,e.protocol&&(this.protocol=e.protocol),this.responseHeadersEndTime=1e3*t,this.transferSize=e.encodedDataLength,"boolean"==typeof e.fromDiskCache&&(this.fromDiskCache=e.fromDiskCache),"boolean"==typeof e.fromPrefetchCache&&(this.fromPrefetchCache=e.fromPrefetchCache),this.statusCode=e.status,this.timing=e.timing,n&&(this.resourceType=zr[n]),this.mimeType=e.mimeType,this.responseHeadersText=e.headersText||"",this.responseHeaders=NetworkRequest._headersDictToHeadersArray(e.headers),this.fetchedViaServiceWorker=!!e.fromServiceWorker,this.fromMemoryCache&&(this.timing=void 0),
this.timing&&this._recomputeTimesWithResourceTiming(this.timing)}_recomputeTimesWithResourceTiming(e){if(0===e.requestTime||-1===e.receiveHeadersEnd)return;this.networkRequestTime=1e3*e.requestTime;const t=this.networkRequestTime+e.receiveHeadersEnd;(!this.responseHeadersEndTime||this.responseHeadersEndTime<0)&&(this.responseHeadersEndTime=t),this.responseHeadersEndTime=Math.min(this.responseHeadersEndTime,t),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;const e=this.responseHeaders.find((e=>e.name===Ur));if(!e)return;const t=parseFloat(e.value);isNaN(t)||(this.transferSize=t)}_updateProtocolForLightrider(){
globalThis.isLightrider&&this.responseHeaders.some((e=>e.name===jr))&&(this.protocol="h2")}_updateTimingsForLightrider(){if(!globalThis.isLightrider)return;const e=this.responseHeaders.find((e=>e.name===Br));if(!e)return;const t=parseInt(e.value),n=this.responseHeaders.find((e=>e.name===Lr)),a=this.responseHeaders.find((e=>e.name===Mr)),r=this.responseHeaders.find((e=>e.name===Pr)),o=this.responseHeaders.find((e=>e.name===Or)),i=n?Math.max(0,parseInt(n.value)):0,s=a?Math.max(0,parseInt(a.value)):0,c=r?Math.max(0,parseInt(r.value)):0,l=o?Math.max(0,parseInt(o.value)):0;i+c+l===t&&(s>i||(this.lrStatistics={endTimeDeltaMs:this.networkEndTime-(this.networkRequestTime+t),TCPMs:i,requestMs:c,responseMs:l}))}static getRequestIdForBackend(e){return e.replace(/(:redirect)+$/,"")}static _headersDictToHeadersArray(e){const t=[];for(const n of Object.keys(e)){const a=e[n].split("\n");for(let e=0;e<a.length;++e)t.push({name:n,value:a[e]})}return t}static get TYPES(){return zr}
static isNonNetworkRequest(e){return UrlUtils.isNonNetworkProtocol(e.protocol)||UrlUtils.isNonNetworkProtocol(e.parsedURL.scheme)}static isSecureRequest(e){return UrlUtils.isSecureScheme(e.parsedURL.scheme)||UrlUtils.isSecureScheme(e.protocol)||UrlUtils.isLikeLocalhost(e.parsedURL.host)||NetworkRequest.isHstsRequest(e)}static isHstsRequest(e){const t=e.redirectDestination;if(!t)return!1;return"HSTS"===e.responseHeaders.find((e=>"Non-Authoritative-Reason"===e.name))?.value&&NetworkRequest.isSecureRequest(t)}static getResourceSizeOnNetwork(e){return Math.min(e.resourceSize||0,e.transferSize||1/0)}}async function fetchResponseBodyFromCache(e,t,n=1e3){t=NetworkRequest.getRequestIdForBackend(t),e.setNextProtocolTimeout(n);return(await e.sendCommand("Network.getResponseBody",{requestId:t})).body}NetworkRequest.HEADER_TCP=Lr,NetworkRequest.HEADER_SSL=Mr,NetworkRequest.HEADER_REQ=Pr,NetworkRequest.HEADER_RES=Or,NetworkRequest.HEADER_TOTAL=Br,NetworkRequest.HEADER_FETCHED_SIZE=Ur,
NetworkRequest.HEADER_PROTOCOL_IS_H2=jr;class FRGatherer{meta={supportedModes:[]};startInstrumentation(e){}startSensitiveInstrumentation(e){}stopSensitiveInstrumentation(e){}stopInstrumentation(e){}getArtifact(e){}get name(){let e=this.constructor.name;return e.includes("$")&&(e=e.substr(0,e.indexOf("$"))),e}async beforePass(e){await this.startInstrumentation({...e,dependencies:{}}),await this.startSensitiveInstrumentation({...e,dependencies:{}})}pass(e){}async afterPass(e,t){if("dependencies"in this.meta)throw Error("Gatherer with dependencies should override afterPass");return await this.stopSensitiveInstrumentation({...e,dependencies:{}}),await this.stopInstrumentation({...e,dependencies:{}}),this.getArtifact({...e,dependencies:{}})}}class DevtoolsLog extends FRGatherer{static symbol=Symbol("DevtoolsLog");meta={symbol:DevtoolsLog.symbol,supportedModes:["timespan","navigation"]};constructor(){super(),this._messageLog=new DevtoolsMessageLog(/^(Page|Network|Target|Runtime)\./),
this._onProtocolMessage=e=>this._messageLog.record(e)}async startSensitiveInstrumentation({driver:e}){this._messageLog.reset(),this._messageLog.beginRecording(),e.targetManager.on("protocolevent",this._onProtocolMessage),await e.defaultSession.sendCommand("Page.enable")}async stopSensitiveInstrumentation({driver:e}){this._messageLog.endRecording(),e.targetManager.off("protocolevent",this._onProtocolMessage)}async getArtifact(){return this._messageLog.messages}}class DevtoolsMessageLog{constructor(e){this._filter=e,this._messages=[],this._isRecording=!1}get messages(){return this._messages}reset(){this._messages=[]}beginRecording(){this._isRecording=!0}endRecording(){this._isRecording=!1}record(e){this._isRecording&&"string"==typeof e.method&&(this._filter&&!this._filter.test(e.method)||this._messages.push(e))}}var qr=Object.freeze({__proto__:null,default:DevtoolsLog,DevtoolsMessageLog});const $r=/^(chrome|https?):/;class 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(e){return"navigationStart"===e.name&&(void 0===e.args.data?.documentLoaderURL||!!e.args.data?.documentLoaderURL&&$r.test(e.args.data.documentLoaderURL))}static _sortTimestampEventGroup(e,t,n,a){const lookupArrayIndexByTsIndex=e=>t[e],lookupEventByTsIndex=e=>a[lookupArrayIndexByTsIndex(e)],r=[],o=[],i=[];for(const t of e){const e=lookupArrayIndexByTsIndex(t),n=lookupEventByTsIndex(t);"E"===n.ph?r.push(e):"X"===n.ph||"B"===n.ph?o.push(e):i.push(e)}
const s=new Map;for(const r of o){const o=a[r];if("X"===o.ph)s.set(r,o.dur);else{let a=Number.MAX_SAFE_INTEGER,i=0;for(let r=n+e.length;r<t.length;r++){const e=lookupEventByTsIndex(r);if(e.name===o.name&&e.pid===o.pid&&e.tid===o.tid){if("E"===e.ph&&0===i){a=e.ts-o.ts;break}"E"===e.ph?i--:"B"===e.ph&&i++}}s.set(r,a)}}return o.sort(((e,t)=>(s.get(t)||0)-(s.get(e)||0)||e-t)),i.sort(((e,t)=>e-t)),[...r,...o,...i]}static filteredTraceSort(e,t){const n=[];for(let a=0;a<e.length;a++)t(e[a])&&n.push(a);n.sort(((t,n)=>e[t].ts-e[n].ts));for(let t=0;t<n.length-1;t++){const a=e[n[t]].ts,r=[t];for(let o=t+1;o<n.length&&e[n[o]].ts===a;o++)r.push(o);if(1===r.length)continue;const o=TraceProcessor._sortTimestampEventGroup(r,n,t,e);n.splice(t,o.length,...o),t+=r.length-1}const a=[];for(let t=0;t<n.length;t++)a.push(e[n[t]]);return a}static assertHasToplevelEvents(e){if(!e.some(this.isScheduleableTask))throw new Error("Could not find any top level events")}static _riskPercentiles(e,t,n,a=0){let r=0
;for(let t=0;t<e.length;t++)r+=e[t];r-=a;let o=t-r,i=0,s=o;const c=[];let l=-1,u=e.length+1;a>0&&u--;for(const r of n){const n=r*t;for(;s<n&&l<e.length-1;)o+=i,u-=i<0?-1:1,a>0&&a<e[l+1]?(i=-a,a=0):(l++,i=e[l]),s=o+Math.abs(i)*u;c.push({percentile:r,time:Math.max(0,(n-o)/u)+16})}return c}static getRiskToResponsiveness(e,t,n,a=[.5,.75,.9,.99,1]){const r=n-t;a.sort(((e,t)=>e-t));const o=this.getMainThreadTopLevelEventDurations(e,t,n);return this._riskPercentiles(o.durations,r,a,o.clippedLength)}static getMainThreadTopLevelEventDurations(e,t=0,n=1/0){const a=[];let r=0;for(const o of e){if(o.end<t||o.start>n)continue;let e=o.duration,i=o.start;i<t&&(i=t,e=o.end-t),o.end>n&&(r=e-(n-i)),a.push(e)}return a.sort(((e,t)=>e-t)),{durations:a,clippedLength:r}}static getMainThreadTopLevelEvents(e,t=0,n=1/0){const a=[];for(const r of e.mainThreadEvents){if(!this.isScheduleableTask(r)||!r.dur)continue;const o=(r.ts-e.timeOriginEvt.ts)/1e3,i=(r.ts+r.dur-e.timeOriginEvt.ts)/1e3;o>n||i<t||a.push({
start:o,end:i,duration:r.dur/1e3})}return a}static findMainFrameIds(e){const t=e.find((e=>"TracingStartedInBrowser"===e.name));if(t?.args.data?.frames){const e=t.args.data.frames.find((e=>!e.parent)),n=e?.frame,a=e?.processId;if(a&&n)return{startingPid:a,frameId:n}}const n=e.find((e=>"TracingStartedInPage"===e.name));if(n?.args?.data){const e=n.args.data.page;if(e)return{startingPid:n.pid,frameId:e}}const a=e.find((e=>this._isNavigationStartOfInterest(e)&&e.args.data?.isLoadingMainFrame)),r=e.find((e=>"ResourceSendRequest"===e.name));if(a?.args?.data&&r&&r.pid===a.pid&&r.tid===a.tid){const e=a.args.frame;if(e)return{startingPid:a.pid,frameId:e}}throw this.createNoTracingStartedError()}static findMainFramePidTids(e,t){const n=t.filter((t=>"FrameCommittedInBrowser"===t.name&&t.args?.data?.frame===e.frameId)),a=n.length?n.map((e=>e?.args?.data?.processId)):[e.startingPid],r=new Map;return a.forEach((e=>{
const n=t.find((t=>"__metadata"===t.cat&&t.pid===e&&"M"===t.ph&&"thread_name"===t.name&&"CrRendererMain"===t.args.name))?.tid;if(!n)throw new Error("Unable to determine tid for renderer process");r.set(e,n)})),r}static isScheduleableTask(e){return"RunTask"===e.name||"ThreadControllerImpl::RunTask"===e.name||"ThreadControllerImpl::DoWork"===e.name||"TaskQueueManager::ProcessTaskFromWorkQueue"===e.name}static isLCPEvent(e){return("largestContentfulPaint::Invalidate"===e.name||"largestContentfulPaint::Candidate"===e.name)&&Boolean(e.args?.frame)}static isLCPCandidateEvent(e){return Boolean("largestContentfulPaint::Candidate"===e.name&&e.args?.frame&&e.args.data&&void 0!==e.args.data.size)}static computeValidLCPAllFrames(e,t){const n=e.filter(this.isLCPEvent).reverse(),a=new Map;for(const e of n){if(e.ts<=t.ts)break;const n=e.args.frame;a.has(n)||a.set(n,e)}let r;for(const e of a.values())this.isLCPCandidateEvent(e)&&(!r||e.args.data.size>r.args.data.size)&&(r=e);return{lcp:r,
invalidated:Boolean(!r&&a.size)}}static resolveRootFrames(e){const t=new Map;for(const n of e)n.parent&&t.set(n.id,n.parent);const n=new Map;for(const a of e){let e=a.id;for(;t.has(e);)e=t.get(e);if(void 0===e)throw new Error("Unexpected undefined frameId");n.set(a.id,e)}return n}static processTrace(e,t){const{timeOriginDeterminationMethod:n="auto"}=t||{},a=this.filteredTraceSort(e.traceEvents,(e=>e.cat.includes("blink.user_timing")||e.cat.includes("loading")||e.cat.includes("devtools.timeline")||"__metadata"===e.cat)),r=this.findMainFrameIds(a),o=this.findMainFramePidTids(r,a),i=TraceProcessor.filteredTraceSort(e.traceEvents,(e=>o.has(e.pid))),s=new Map,c=a.find((e=>"TracingStartedInBrowser"===e.name))?.args?.data?.frames;if(c)for(const e of c)s.set(e.frame,{id:e.frame,url:e.url,parent:e.parent});a.filter((e=>Boolean("FrameCommittedInBrowser"===e.name&&e.args.data?.frame&&e.args.data.url))).forEach((e=>{s.set(e.args.data.frame,{id:e.args.data.frame,url:e.args.data.url,
parent:e.args.data.parent})}));const l=[...s.values()],u=this.resolveRootFrames(l),d=[...u.entries()].filter((([,e])=>e===r.frameId)).map((([e])=>e));const m=a.filter((e=>function associatedToMainFrame(e){return(e.args?.data?.frame||e.args.frame)===r.frameId}(e)));let p=[];u.has(r.frameId)?p=a.filter((e=>function associatedToAllFrames(e){const t=e.args?.data?.frame||e.args.frame;return!!t&&d.includes(t)}(e))):(Log.warn("TraceProcessor","frameTreeEvents may be incomplete, make sure the trace has frame events"),u.set(r.frameId,r.frameId),p=m);const h=this.computeTimeOrigin({keyEvents:a,frameEvents:m,mainFrameInfo:r},n),f=i.filter((e=>e.tid===o.get(e.pid))),y=this.computeTraceEnd(e.traceEvents,h);return{frames:l,mainThreadEvents:f,frameEvents:m,frameTreeEvents:p,processEvents:i,mainFrameInfo:r,timeOriginEvt:h,timings:{timeOrigin:0,traceEnd:y.timing},timestamps:{timeOrigin:h.ts,traceEnd:y.timestamp},_keyEvents:a,_rendererPidToTid:o}}static processNavigation(e){
const{frameEvents:t,frameTreeEvents:n,timeOriginEvt:a,timings:r,timestamps:o}=e,i=this.computeNavigationTimingsForFrame(t,{timeOriginEvt:a}),s=n.find((e=>"firstContentfulPaint"===e.name&&e.ts>a.ts));if(!s)throw this.createNoFirstContentfulPaintError();const c=this.computeValidLCPAllFrames(n,a).lcp,getTiming=e=>(e-a.ts)/1e3;return{timings:{timeOrigin:r.timeOrigin,firstPaint:i.timings.firstPaint,firstContentfulPaint:i.timings.firstContentfulPaint,firstContentfulPaintAllFrames:getTiming(s.ts),firstMeaningfulPaint:i.timings.firstMeaningfulPaint,largestContentfulPaint:i.timings.largestContentfulPaint,largestContentfulPaintAllFrames:(l=c?.ts,void 0===l?void 0:getTiming(l)),load:i.timings.load,domContentLoaded:i.timings.domContentLoaded,traceEnd:r.traceEnd},timestamps:{timeOrigin:o.timeOrigin,firstPaint:i.timestamps.firstPaint,firstContentfulPaint:i.timestamps.firstContentfulPaint,firstContentfulPaintAllFrames:s.ts,firstMeaningfulPaint:i.timestamps.firstMeaningfulPaint,
largestContentfulPaint:i.timestamps.largestContentfulPaint,largestContentfulPaintAllFrames:c?.ts,load:i.timestamps.load,domContentLoaded:i.timestamps.domContentLoaded,traceEnd:o.traceEnd},firstPaintEvt:i.firstPaintEvt,firstContentfulPaintEvt:i.firstContentfulPaintEvt,firstContentfulPaintAllFramesEvt:s,firstMeaningfulPaintEvt:i.firstMeaningfulPaintEvt,largestContentfulPaintEvt:i.largestContentfulPaintEvt,largestContentfulPaintAllFramesEvt:c,loadEvt:i.loadEvt,domContentLoadedEvt:i.domContentLoadedEvt,fmpFellBack:i.fmpFellBack,lcpInvalidated:i.lcpInvalidated};var l}static computeTraceEnd(e,t){let n=-1/0;for(const t of e)n=Math.max(t.ts+(t.dur||0),n);return{timestamp:n,timing:(n-t.ts)/1e3}}static computeTimeOrigin(e,t){const lastNavigationStart=()=>e.frameEvents.filter(this._isNavigationStartOfInterest).pop(),lighthouseMarker=()=>e.keyEvents.find((e=>"clock_sync"===e.name&&e.args.sync_id===TraceProcessor.TIMESPAN_MARKER_ID));switch(t){case"firstResourceSendRequest":{
const t=e.keyEvents.find((t=>{if("ResourceSendRequest"!==t.name)return!1;return(t.args.data||{}).frame===e.mainFrameInfo.frameId}));if(!t)throw this.createNoResourceSendRequestError();return t}case"lastNavigationStart":{const e=lastNavigationStart();if(!e)throw this.createNoNavstartError();return e}case"lighthouseMarker":{const e=lighthouseMarker();if(!e)throw this.createNoLighthouseMarkerError();return e}case"auto":{const e=lighthouseMarker()||lastNavigationStart();if(!e)throw this.createNoNavstartError();return e}}}static computeNavigationTimingsForFrame(e,t){const{timeOriginEvt:n}=t,a=e.find((e=>"firstPaint"===e.name&&e.ts>n.ts)),r=e.find((e=>"firstContentfulPaint"===e.name&&e.ts>n.ts));if(!r)throw this.createNoFirstContentfulPaintError();let o=e.find((e=>"firstMeaningfulPaint"===e.name&&e.ts>n.ts)),i=!1;if(!o){const t="firstMeaningfulPaintCandidate";i=!0,Log.verbose("TraceProcessor",`No firstMeaningfulPaint found, falling back to last ${t}`);const n=e.filter((e=>e.name===t)).pop()
;n||Log.verbose("TraceProcessor","No `firstMeaningfulPaintCandidate` events found in trace"),o=n}const s=this.computeValidLCPAllFrames(e,n),c=e.find((e=>"loadEventEnd"===e.name&&e.ts>n.ts)),l=e.find((e=>"domContentLoadedEventEnd"===e.name&&e.ts>n.ts)),getTimestamp=e=>e?.ts,u={timeOrigin:n.ts,firstPaint:getTimestamp(a),firstContentfulPaint:r.ts,firstMeaningfulPaint:getTimestamp(o),largestContentfulPaint:getTimestamp(s.lcp),load:getTimestamp(c),domContentLoaded:getTimestamp(l)},getTiming=e=>(e-n.ts)/1e3,maybeGetTiming=e=>void 0===e?void 0:getTiming(e);return{timings:{timeOrigin:0,firstPaint:maybeGetTiming(u.firstPaint),firstContentfulPaint:getTiming(u.firstContentfulPaint),firstMeaningfulPaint:maybeGetTiming(u.firstMeaningfulPaint),largestContentfulPaint:maybeGetTiming(u.largestContentfulPaint),load:maybeGetTiming(u.load),domContentLoaded:maybeGetTiming(u.domContentLoaded)},timestamps:u,timeOriginEvt:n,firstPaintEvt:a,firstContentfulPaintEvt:r,firstMeaningfulPaintEvt:o,
largestContentfulPaintEvt:s.lcp,loadEvt:c,domContentLoadedEvt:l,fmpFellBack:i,lcpInvalidated:s.invalidated}}}class Trace extends FRGatherer{_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"]}static async endTraceAndCollectEvents(e){const t=[],dataListener=function(e){t.push(...e.value)};return e.on("Tracing.dataCollected",dataListener),new Promise(((n,a)=>{e.once("Tracing.tracingComplete",(a=>{e.off("Tracing.dataCollected",dataListener),n({traceEvents:t})})),e.sendCommand("Tracing.end").catch(a)}))}static symbol=Symbol("Trace");meta={symbol:Trace.symbol,supportedModes:["timespan","navigation"]};async startSensitiveInstrumentation({driver:e,gatherMode:t,settings:n}){
const a=Trace.getDefaultTraceCategories().concat(n.additionalTraceCategories||[]);await e.defaultSession.sendCommand("Page.enable"),await e.defaultSession.sendCommand("Tracing.start",{categories:a.join(","),options:"sampling-frequency=10000"}),"timespan"===t&&await e.defaultSession.sendCommand("Tracing.recordClockSyncMarker",{syncId:TraceProcessor.TIMESPAN_MARKER_ID})}async stopSensitiveInstrumentation({driver:e}){this._trace=await Trace.endTraceAndCollectEvents(e.defaultSession)}getArtifact(){return this._trace}}var Vr=Object.freeze({__proto__:null,default:Trace});const Wr=3.75,Hr=.9,Gr={DEVTOOLS_RTT_ADJUSTMENT_FACTOR:Wr,DEVTOOLS_THROUGHPUT_ADJUSTMENT_FACTOR:Hr,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}},Yr={mobile:{mobile:!0,width:412,height:823,deviceScaleFactor:1.75,disabled:!1},desktop:{mobile:!1,width:1350,height:940,deviceScaleFactor:1,disabled:!1}},Kr={mobile:"Mozilla/5.0 (Linux; Android 11; moto g power (2022)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Mobile Safari/537.36",desktop:"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"},Jr={output:"json",maxWaitForFcp:3e4,maxWaitForLoad:45e3,pauseAfterFcpMs:1e3,pauseAfterLoadMs:1e3,networkQuietThresholdMs:1e3,cpuQuietThresholdMs:1e3,formFactor:"mobile",throttling:Gr.mobileSlow4G,throttlingMethod:"simulate",screenEmulation:Yr.mobile,emulatedUserAgent:Kr.mobile,auditMode:!1,gatherMode:!1,disableStorageReset:!1,debugNavigation:!1,channel:"node",usePassiveGathering:!1,disableFullPageScreenshot:!1,skipAboutBlank:!1,
blankPage:"about:blank",budgets:null,locale:"en-US",blockedUrlPatterns:null,additionalTraceCategories:null,extraHeaders:null,precomputedLanternData:null,onlyAudits:null,onlyCategories:null,skipAudits:null},Zr={passName:"defaultPass",loadFailureMode:"fatal",recordTrace:!1,useThrottling:!1,pauseAfterFcpMs:0,pauseAfterLoadMs:0,networkQuietThresholdMs:0,cpuQuietThresholdMs:0,blockedUrlPatterns:[],blankPage:"about:blank",gatherers:[]},Xr={id:"default",loadFailureMode:"fatal",disableThrottling:!1,disableStorageReset:!1,pauseAfterFcpMs:0,pauseAfterLoadMs:0,networkQuietThresholdMs:0,cpuQuietThresholdMs:0,blockedUrlPatterns:[],blankPage:"about:blank",artifacts:[]},Qr={pauseAfterFcpMs:5250,pauseAfterLoadMs:5250,networkQuietThresholdMs:5250,cpuQuietThresholdMs:5250};var eo=Object.freeze({__proto__:null,throttling:Gr,screenEmulationMetrics:Yr,userAgents:Kr,defaultSettings:Jr,defaultPassConfig:Zr,defaultNavigationConfig:Xr,nonSimulatedPassConfigOverrides:Qr});const to={
warningSlowHostCpu:"The tested device appears to have a slower CPU than Lighthouse expects. This can negatively affect your performance score. Learn more about [calibrating an appropriate CPU slowdown multiplier](https://github.com/GoogleChrome/lighthouse/blob/main/docs/throttling.md#cpu-throttling)."},no=createIcuMessageFn("core/gather/driver/environment.js",to);async function getBrowserVersion(e){const t={msg:"Getting browser version",id:"lh:gather:getVersion"};Log.time(t,"verbose");const n=await e.sendCommand("Browser.getVersion"),a=n.product.match(/\/(\d+)/),r=a?parseInt(a[1]):0;return Log.timeEnd(t),Object.assign(n,{milestone:r})}async function getBenchmarkIndex(e){const t={msg:"Benchmarking machine",id:"lh:gather:getBenchmarkIndex"};Log.time(t);const n=await e.evaluate(Qa.computeBenchmarkIndex,{args:[]});return Log.timeEnd(t),n}function getSlowHostCpuWarning(e){const{settings:t,baseArtifacts:n}=e,{throttling:a,throttlingMethod:r}=t,o=Jr.throttling;if("cli"!==t.channel)return
;const i="simulate"===r||"devtools"===r,s=a.cpuSlowdownMultiplier===o.cpuSlowdownMultiplier;return!i||!s||n.BenchmarkIndex>1e3?void 0:no(to.warningSlowHostCpu)}function getEnvironmentWarnings(e){return[getSlowHostCpuWarning(e)].filter((e=>!!e))}const ao={warningData:"{locationCount, plural,\n =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.}\n 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.}\n }",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."},ro=createIcuMessageFn("core/gather/driver/storage.js",ao)
;async function clearDataForOrigin(e,t){const n={msg:"Cleaning origin data",id:"lh:storage:clearDataForOrigin"};Log.time(n);const a=[],r=new URL(t).origin,o=["file_systems","shader_cache","service_workers","cache_storage"].join(",");e.setNextProtocolTimeout(5e3);try{await e.sendCommand("Storage.clearDataForOrigin",{origin:r,storageTypes:o})}catch(e){if("PROTOCOL_TIMEOUT"!==e.code)throw e;Log.warn("Driver","clearDataForOrigin timed out"),a.push(ro(ao.warningOriginDataTimeout))}finally{Log.timeEnd(n)}return a}const oo={latency:0,downloadThroughput:0,uploadThroughput:0,offline:!1},io={rate:1};function parseUseragentIntoMetadata(e,t){const n=e.match(/Chrome\/([\d.]+)/)?.[1]||"99.0.1234.0",[a]=n.split(".",1),r="mobile"===t;return{brands:[{brand:"Chromium",version:a},{brand:"Google Chrome",version:a},{brand:"Lighthouse",version:wr}],fullVersion:n,...r?{platform:"Android",platformVersion:"11.0",architecture:"",model:"moto g power (2022)"}:{platform:"macOS",platformVersion:"10.15.7",
architecture:"x86",model:""},mobile:r}}async function emulate(e,t){if(!1!==t.emulatedUserAgent){const n=t.emulatedUserAgent;await e.sendCommand("Network.setUserAgentOverride",{userAgent:n,userAgentMetadata:parseUseragentIntoMetadata(n,t.formFactor)})}if(!0!==t.screenEmulation.disabled){const{width:n,height:a,deviceScaleFactor:r,mobile:o}=t.screenEmulation,i={width:n,height:a,deviceScaleFactor:r,mobile:o};await e.sendCommand("Emulation.setDeviceMetricsOverride",i),await e.sendCommand("Emulation.setTouchEmulationEnabled",{enabled:i.mobile})}}async function clearThrottling(e){await Promise.all([clearNetworkThrottling(e),clearCPUThrottling(e)])}function enableNetworkThrottling(e,t){const n={offline:!1,latency:t.requestLatencyMs||0,downloadThroughput:t.downloadThroughputKbps||0,uploadThroughput:t.uploadThroughputKbps||0};return n.downloadThroughput=Math.floor(1024*n.downloadThroughput/8),n.uploadThroughput=Math.floor(1024*n.uploadThroughput/8),
e.sendCommand("Network.emulateNetworkConditions",n)}function clearNetworkThrottling(e){return e.sendCommand("Network.emulateNetworkConditions",oo)}function enableCPUThrottling(e,t){const n=t.cpuSlowdownMultiplier;return e.sendCommand("Emulation.setCPUThrottlingRate",{rate:n})}function clearCPUThrottling(e){return e.sendCommand("Emulation.setCPUThrottlingRate",io)}async function enableAsyncStacks(e){const enable=async()=>{await e.sendCommand("Debugger.enable"),await e.sendCommand("Debugger.setSkipAllPauses",{skip:!0}),await e.sendCommand("Debugger.setAsyncCallStackDepth",{maxDepth:8})};function onDebuggerPaused(){e.sendCommand("Debugger.resume")}function onFrameNavigated(e){e.frame.parentId||enable().catch((e=>Log.error("Driver",e)))}return e.on("Debugger.paused",onDebuggerPaused),e.on("Page.frameNavigated",onFrameNavigated),await enable(),async()=>{await e.sendCommand("Debugger.disable"),e.off("Debugger.paused",onDebuggerPaused),e.off("Page.frameNavigated",onFrameNavigated)}}
async function resetStorageForUrl(e,t){const n=[],a=await async function getImportantStorageWarning(e,t){const n=await e.sendCommand("Storage.getUsageAndQuota",{origin:t}),a={local_storage:"Local Storage",indexeddb:"IndexedDB",websql:"Web SQL"},r=n.usageBreakdown.filter((e=>e.usage)).map((e=>a[e.storageType]||"")).filter(Boolean);if(r.length)return ro(ao.warningData,{locations:r.join(", "),locationCount:r.length})}(e,t);a&&n.push(a);const r=await clearDataForOrigin(e,t);n.push(...r);const o=await async function clearBrowserCaches(e){const t={msg:"Cleaning browser cache",id:"lh:storage:clearBrowserCaches"};Log.time(t);const n=[];try{await e.sendCommand("Network.clearBrowserCache"),await e.sendCommand("Network.setCacheDisabled",{cacheDisabled:!0}),await e.sendCommand("Network.setCacheDisabled",{cacheDisabled:!1})}catch(e){if("PROTOCOL_TIMEOUT"!==e.code)throw e;Log.warn("Driver","clearBrowserCaches timed out"),n.push(ro(ao.warningCacheTimeout))}finally{Log.timeEnd(t)}return n}(e)
;return n.push(...o),{warnings:n}}async function prepareThrottlingAndNetwork(e,t,n){const a={msg:"Preparing network conditions",id:"lh:gather:prepareThrottlingAndNetwork"};Log.time(a),n.disableThrottling?await clearThrottling(e):await async function throttle(e,t){if("devtools"!==t.throttlingMethod)return clearNetworkThrottling(e);await Promise.all([enableNetworkThrottling(e,t.throttling),enableCPUThrottling(e,t.throttling)])}(e,t);const r=(n.blockedUrlPatterns||[]).concat(t.blockedUrlPatterns||[]);await e.sendCommand("Network.setBlockedURLs",{urls:r});const o=t.extraHeaders;o&&await e.sendCommand("Network.setExtraHTTPHeaders",{headers:o}),Log.timeEnd(a)}async function prepareDeviceEmulation(e,t){await e.defaultSession.sendCommand("Network.enable"),await emulate(e.defaultSession,t)}async function prepareTargetForNavigationMode(e,t){const n={msg:"Preparing target for navigation mode",id:"lh:prepare:navigationMode"};Log.time(n),await prepareDeviceEmulation(e,t),
await async function dismissJavaScriptDialogs(e){e.on("Page.javascriptDialogOpening",(t=>{Log.warn("Driver",`${t.type} dialog opened by the page automatically suppressed.`),e.sendCommand("Page.handleJavaScriptDialog",{accept:!0,promptText:"Lighthouse prompt response"}).catch((e=>Log.warn("Driver",e)))})),await e.sendCommand("Page.enable")}(e.defaultSession),await e.executionContext.cacheNativesOnNewDocument(),"simulate"===t.throttlingMethod&&await async function shimRequestIdleCallbackOnNewDocument(e,t){await e.executionContext.evaluateOnNewDocument(Qa.wrapRequestIdleCallback,{args:[t.throttling.cpuSlowdownMultiplier]})}(e,t),Log.timeEnd(n)}async function prepareTargetForIndividualNavigation(e,t,n){const a={msg:"Preparing target for navigation",id:"lh:prepare:navigation"};Log.time(a);const r=[],{requestor:o}=n;if(!t.disableStorageReset&&!n.disableStorageReset&&"string"==typeof o){const t=o,{warnings:n}=await resetStorageForUrl(e,t);r.push(...n)}
return await prepareThrottlingAndNetwork(e,t,n),Log.timeEnd(a),{warnings:r}}const so=3e4;class Driver$1{_eventEmitter=new EventEmitter;_devtoolsLog=new DevtoolsMessageLog(/^(Page|Network|Target|Runtime)\./);_domainEnabledCounts=new Map;_nextProtocolTimeout=so;online=!0;executionContext=new ExecutionContext(this);defaultSession=this;fetcher=new Fetcher(this.defaultSession);constructor(e){this._connection=e,this.on("Target.attachedToTarget",(e=>{this._handleTargetAttached(e).catch(this._handleEventError)})),this.on("Page.frameNavigated",(e=>{e.frame.parentId||this.sendCommand("Target.setAutoAttach",{flatten:!0,autoAttach:!0,waitForDebuggerOnStart:!0}).catch(this._handleEventError)})),e.on("protocolevent",this._handleProtocolEvent.bind(this)),this.evaluate=this.executionContext.evaluate.bind(this.executionContext),this.evaluateAsync=this.executionContext.evaluateAsync.bind(this.executionContext),this.targetManager={rootSession:()=>this.defaultSession,on:(e,t)=>{
this._connection.on("protocolevent",t)},off:(e,t)=>{this._connection.off("protocolevent",t)}}}static get traceCategories(){return Trace.getDefaultTraceCategories()}async getBrowserVersion(){return getBrowserVersion(this)}async connect(){const e={msg:"Connecting to browser",id:"lh:init:connect"};Log.time(e),await this._connection.connect(),Log.timeEnd(e)}disconnect(){return this._connection.disconnect()}dispose(){return this.disconnect()}wsEndpoint(){return this._connection.wsEndpoint()}on(e,t){if(null===this._eventEmitter)throw new Error("connect() must be called before attempting to listen to events.");Log.formatProtocol("listen for event =>",{method:e},"verbose"),this._eventEmitter.on(e,t)}once(e,t){if(null===this._eventEmitter)throw new Error("connect() must be called before attempting to listen to events.");Log.formatProtocol("listen once for event =>",{method:e},"verbose"),this._eventEmitter.once(e,t)}off(e,t){
if(null===this._eventEmitter)throw new Error("connect() must be called before attempting to remove an event listener.");this._eventEmitter.removeListener(e,t)}setTargetInfo(e){}_shouldToggleDomain(e,t,n){const a=e+(t||""),r=(this._domainEnabledCounts.get(a)||0)+(n?1:-1);return this._domainEnabledCounts.set(a,Math.max(0,r)),n&&1===r||!n&&0===r?(Log.verbose("Driver",`${e}.${n?"enable":"disable"}`),!0):(r<0&&Log.error("Driver",`Attempted to disable domain '${e}' when already disabled.`),!1)}hasNextProtocolTimeout(){return this._nextProtocolTimeout!==so}getNextProtocolTimeout(){return this._nextProtocolTimeout}setNextProtocolTimeout(e){this._nextProtocolTimeout=e}_handleProtocolEvent(e){this._devtoolsLog.record(e),this._eventEmitter.emit(e.method,e.params)}_handleEventError(e){Log.error("Driver","Unhandled event error",e.message)}async _handleTargetAttached(e){
"iframe"===e.targetInfo.type?await Promise.all([this.sendCommandToSession("Network.enable",e.sessionId),this.sendCommandToSession("Target.setAutoAttach",e.sessionId,{autoAttach:!0,flatten:!0,waitForDebuggerOnStart:!0}),this.sendCommandToSession("Runtime.runIfWaitingForDebugger",e.sessionId)]):await this.sendCommandToSession("Runtime.runIfWaitingForDebugger",e.sessionId)}sendCommandToSession(e,t,...n){const a=this._nextProtocolTimeout;let r;this._nextProtocolTimeout=so;const o=new Promise(((t,n)=>{a!==1/0&&(r=setTimeout(n,a,new LighthouseError(LighthouseError.errors.PROTOCOL_TIMEOUT,{protocolMethod:e})))}));return Promise.race([this._innerSendCommand(e,t,...n),o]).finally((()=>{r&&clearTimeout(r)}))}sendCommand(e,...t){return this.sendCommandToSession(e,void 0,...t)}_innerSendCommand(e,t,...n){const a=/^(\w+)\.(enable|disable)$/.exec(e);if(a){const e="enable"===a[2];if(!this._shouldToggleDomain(a[1],t,e))return Promise.resolve()}return this._connection.sendCommand(e,t,...n)}
isDomainEnabled(e){return!!this._domainEnabledCounts.get(e)}async getRequestContent(e,t=1e3){return fetchResponseBodyFromCache(this.defaultSession,e,t)}async beginTrace(e){const t=e?.additionalTraceCategories&&e.additionalTraceCategories.split(",")||[],n=Trace.getDefaultTraceCategories().concat(t),a=Array.from(new Set(n));if(this.isDomainEnabled("CSS"))throw new Error("CSS domain enabled when starting trace");if(this.isDomainEnabled("DOM"))throw new Error("DOM domain enabled when starting trace");return this.sendCommand("Page.enable").then((e=>this.sendCommand("Tracing.start",{categories:a.join(","),options:"sampling-frequency=10000"})))}endTrace(){return Trace.endTraceAndCollectEvents(this.defaultSession)}async beginDevtoolsLog(){this._disableAsyncStacks=await enableAsyncStacks(this),this._devtoolsLog.reset(),this._devtoolsLog.beginRecording()}async endDevtoolsLog(){return this._devtoolsLog.endRecording(),await(this._disableAsyncStacks?.()),this._devtoolsLog.messages}async url(){
const{frameTree:e}=await this.sendCommand("Page.getFrameTree");return`${e.frame.url}${e.frame.urlFragment||""}`}}class ArbitraryEqualityMap{constructor(){this._equalsFn=ArbitraryEqualityMap.deepEquals,this._entries=[]}setEqualityFn(e){this._equalsFn=e}has(e){return-1!==this._findIndexOf(e)}get(e){return this._entries[this._findIndexOf(e)]?.value}set(e,t){let n=this._findIndexOf(e);-1===n&&(n=this._entries.length),this._entries[n]={key:e,value:t}}_findIndexOf(e){for(let t=0;t<this._entries.length;t++)if(this._equalsFn(e,this._entries[t].key))return t;return-1}static deepEquals(e,t){return Za(e,t)}}function makeComputedArtifact(e,t){return Object.assign(e,{request:(n,a)=>{const r=t?Object.fromEntries(t.map((e=>[e,n[e]]))):n,o=a.computedCache,i=e.name,s=o.get(i)||new ArbitraryEqualityMap;o.set(i,s);const c=s.get(r);if(c)return c;const l={msg:`Computing artifact: ${i}`,id:`lh:computed:${i}`};Log.time(l,"verbose");const u=e.compute_(r,a);return s.set(r,u),
u.then((()=>Log.timeEnd(l))).catch((()=>Log.timeEnd(l))),u}})}class BaseNode{constructor(e){this._id=e,this._isMainDocument=!1,this._dependents=[],this._dependencies=[]}get id(){return this._id}get type(){throw new Error("Unimplemented")}get startTime(){throw new Error("Unimplemented")}get endTime(){throw new Error("Unimplemented")}setIsMainDocument(e){this._isMainDocument=e}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 e=this;for(;e._dependencies.length;)e=e._dependencies[0];return e}addDependent(e){e.addDependency(this)}addDependency(e){if(e===this)throw new Error("Cannot add dependency on itself");this._dependencies.includes(e)||(e._dependents.push(this),this._dependencies.push(e))}removeDependent(e){e.removeDependency(this)}removeDependency(e){
if(!this._dependencies.includes(e))return;const t=e._dependents.indexOf(this);e._dependents.splice(t,1),this._dependencies.splice(this._dependencies.indexOf(e),1)}removeAllDependencies(){for(const e of this._dependencies.slice())this.removeDependency(e)}isDependentOn(e){let t=!1;return this.traverse((n=>{t||(t=n===e)}),(e=>t?[]:e.getDependencies())),t}cloneWithoutRelationships(){const e=new BaseNode(this.id);return e.setIsMainDocument(this._isMainDocument),e}cloneWithRelationships(e){const t=this.getRootNode(),n=new Map;t.traverse((t=>{n.has(t.id)||(void 0!==e?e(t)&&t.traverse((e=>n.set(e.id,e.cloneWithoutRelationships())),(e=>e._dependencies.filter((e=>!n.has(e.id))))):n.set(t.id,t.cloneWithoutRelationships()))})),t.traverse((e=>{const t=n.get(e.id);if(t)for(const a of e._dependencies){const e=n.get(a.id);if(!e)throw new Error("Dependency somehow not cloned");t.addDependency(e)}}));const a=n.get(this.id);if(!a)throw new Error("Cloned graph missing node");return a}traverse(e,t){
for(const{node:n,traversalPath:a}of this.traverseGenerator(t))e(n,a)}*traverseGenerator(e){e||(e=e=>e.getDependents());const t=[[this]],n=new Set([this.id]);for(;t.length;){const a=t.shift(),r=a[0];yield{node:r,traversalPath:a};for(const o of e(r))n.has(o.id)||(n.add(o.id),t.push([o,...a]))}}static hasCycle(e,t="both"){if("both"===t)return BaseNode.hasCycle(e,"dependents")||BaseNode.hasCycle(e,"dependencies");const n=new Set,a=[],r=[e],o=new Map([[e,0]]);for(;r.length;){const e=r.pop();if(a.includes(e))return!0;if(n.has(e))continue;for(;a.length>o.get(e);)a.pop();n.add(e),a.push(e);const i="dependents"===t?e._dependents:e._dependencies;for(const e of i)r.includes(e)||(r.push(e),o.set(e,a.length))}return!1}canDependOn(e){return e.startTime<=this.startTime}}BaseNode.TYPES={NETWORK:"network",CPU:"cpu"};class NetworkNode extends BaseNode{constructor(e){super(e.requestId),this._record=e}get type(){return BaseNode.TYPES.NETWORK}get startTime(){return 1e3*this._record.networkRequestTime}
get endTime(){return 1e3*this._record.networkEndTime}get record(){return this._record}get initiatorType(){return this._record.initiator&&this._record.initiator.type}get fromDiskCache(){return!!this._record.fromDiskCache}get isNonNetworkProtocol(){return NetworkRequest.isNonNetworkRequest(this._record)}get isConnectionless(){return this.fromDiskCache||this.isNonNetworkProtocol}hasRenderBlockingPriority(){const e=this._record.priority,t=this._record.resourceType===NetworkRequest.TYPES.Script,n=this._record.resourceType===NetworkRequest.TYPES.Document;return"VeryHigh"===e||"High"===e&&t||"High"===e&&n}cloneWithoutRelationships(){const e=new NetworkNode(this._record);return e.setIsMainDocument(this._isMainDocument),e}}class CPUNode extends BaseNode{constructor(e,t=[]){super(`${e.tid}.${e.ts}`),this._event=e,this._childEvents=t}get type(){return BaseNode.TYPES.CPU}get startTime(){return this._event.ts}get endTime(){return this._event.ts+this._event.dur}get event(){return this._event}
get childEvents(){return this._childEvents}didPerformLayout(){return this._childEvents.some((e=>"Layout"===e.name))}getEvaluateScriptURLs(){const e=new Set;for(const t of this._childEvents)"EvaluateScript"===t.name&&t.args.data&&t.args.data.url&&e.add(t.args.data.url);return e}cloneWithoutRelationships(){return new CPUNode(this._event,this._childEvents)}}class LHTraceProcessor extends TraceProcessor{static createNoNavstartError(){return new LighthouseError(LighthouseError.errors.NO_NAVSTART)}static createNoResourceSendRequestError(){return new LighthouseError(LighthouseError.errors.NO_RESOURCE_REQUEST)}static createNoTracingStartedError(){return new LighthouseError(LighthouseError.errors.NO_TRACING_STARTED)}static createNoFirstContentfulPaintError(){return new LighthouseError(LighthouseError.errors.NO_FCP)}}const co=makeComputedArtifact(class ProcessedTrace{static async compute_(e){return LHTraceProcessor.processTrace(e)}},null),lo={Document:.9,XHR:.9,Fetch:.9};class NetworkAnalyzer{
static get SUMMARY(){return"__SUMMARY__"}static groupByOrigin(e){const t=new Map;return e.forEach((e=>{const n=e.parsedURL.securityOrigin,a=t.get(n)||[];a.push(e),t.set(n,a)})),t}static getSummary(e){return e.sort(((e,t)=>e-t)),{min:e[0],max:e[e.length-1],avg:e.reduce(((e,t)=>e+t),0)/e.length,median:e[Math.floor((e.length-1)/2)]}}static summarize(e){const t=new Map,n=[];for(const[a,r]of e)t.set(a,NetworkAnalyzer.getSummary(r)),n.push(...r);return t.set(NetworkAnalyzer.SUMMARY,NetworkAnalyzer.getSummary(n)),t}static _estimateValueByOrigin(e,t){const n=NetworkAnalyzer.estimateIfConnectionWasReused(e),a=NetworkAnalyzer.groupByOrigin(e),r=new Map;for(const[e,o]of a.entries()){let a=[];for(const e of o){const r=e.timing;if(!r)continue;const o=t({record:e,timing:r,connectionReused:n.get(e.requestId)});void 0!==o&&(a=a.concat(o))}a.length&&r.set(e,a)}return r}static _estimateRTTByOriginViaTCPTiming(e){return NetworkAnalyzer._estimateValueByOrigin(e,(({timing:e,connectionReused:t})=>{
if(!t)return e.sslStart>0&&e.sslEnd>0?[e.connectEnd-e.sslStart,e.sslStart-e.connectStart]:e.connectStart>0&&e.connectEnd>0?e.connectEnd-e.connectStart:void 0}))}static _estimateRTTByOriginViaDownloadTiming(e){return NetworkAnalyzer._estimateValueByOrigin(e,(({record:e,timing:t,connectionReused:n})=>{if(n)return;if(e.transferSize<=14336)return;if(!Number.isFinite(t.receiveHeadersEnd)||t.receiveHeadersEnd<0)return;const a=e.networkEndTime-e.networkRequestTime-t.receiveHeadersEnd,r=Math.log2(e.transferSize/14336);return r>5?void 0:a/r}))}static _estimateRTTByOriginViaSendStartTiming(e){return NetworkAnalyzer._estimateValueByOrigin(e,(({record:e,timing:t,connectionReused:n})=>{if(n)return;if(!Number.isFinite(t.sendStart)||t.sendStart<0)return;let a=2;return"https"===e.parsedURL.scheme&&(a+=1),t.sendStart/a}))}static _estimateRTTByOriginViaHeadersEndTiming(e){return NetworkAnalyzer._estimateValueByOrigin(e,(({record:e,timing:t,connectionReused:n})=>{
if(!Number.isFinite(t.receiveHeadersEnd)||t.receiveHeadersEnd<0)return;if(!e.resourceType)return;const a=lo[e.resourceType]||.4,r=t.receiveHeadersEnd*a;let o=1;return n||(o+=1,"https"===e.parsedURL.scheme&&(o+=1),o+=1),Math.max((t.receiveHeadersEnd-r)/o,3)}))}static _estimateResponseTimeByOrigin(e,t){return NetworkAnalyzer._estimateValueByOrigin(e,(({record:e,timing:n})=>{if(!Number.isFinite(n.receiveHeadersEnd)||n.receiveHeadersEnd<0)return;if(!Number.isFinite(n.sendEnd)||n.sendEnd<0)return;const a=n.receiveHeadersEnd-n.sendEnd,r=e.parsedURL.securityOrigin,o=t.get(r)||t.get(NetworkAnalyzer.SUMMARY)||0;return Math.max(a-o,0)}))}static canTrustConnectionInformation(e){const t=new Map;for(const n of e){const e=t.get(n.connectionId)||!n.connectionReused;t.set(n.connectionId,e)}return!(t.size<=1)&&Array.from(t.values()).every((e=>e))}static estimateIfConnectionWasReused(e,t){const{forceCoarseEstimates:n=!1}=t||{}
;if(!n&&NetworkAnalyzer.canTrustConnectionInformation(e))return new Map(e.map((e=>[e.requestId,!!e.connectionReused])));const a=new Map,r=NetworkAnalyzer.groupByOrigin(e);for(const[e,t]of r.entries()){const e=t.map((e=>e.networkEndTime)).reduce(((e,t)=>Math.min(e,t)),1/0);for(const n of t)a.set(n.requestId,n.networkRequestTime>=e||"h2"===n.protocol);const n=t.reduce(((e,t)=>e.networkRequestTime>t.networkRequestTime?t:e));a.set(n.requestId,!1)}return a}static estimateRTTByOrigin(e,t){const{forceCoarseEstimates:n=!1,coarseEstimateMultiplier:a=.3,useDownloadEstimates:r=!0,useSendStartEstimates:o=!0,useHeadersEndEstimates:i=!0}=t||{};let s=NetworkAnalyzer._estimateRTTByOriginViaTCPTiming(e);if(!s.size||n){s=new Map;const t=NetworkAnalyzer._estimateRTTByOriginViaDownloadTiming(e),n=NetworkAnalyzer._estimateRTTByOriginViaSendStartTiming(e),c=NetworkAnalyzer._estimateRTTByOriginViaHeadersEndTiming(e);for(const[e,n]of t.entries())r&&s.set(e,n);for(const[e,t]of n.entries()){if(!o)continue
;const n=s.get(e)||[];s.set(e,n.concat(t))}for(const[e,t]of c.entries()){if(!i)continue;const n=s.get(e)||[];s.set(e,n.concat(t))}for(const e of s.values())e.forEach(((t,n)=>e[n]=t*a))}if(!s.size)throw new Error("No timing information available");return NetworkAnalyzer.summarize(s)}static estimateServerResponseTimeByOrigin(e,t){let n=(t||{}).rttByOrigin;if(!n){n=new Map;const a=NetworkAnalyzer.estimateRTTByOrigin(e,t);for(const[e,t]of a.entries())n.set(e,t.min)}const a=NetworkAnalyzer._estimateResponseTimeByOrigin(e,n);return NetworkAnalyzer.summarize(a)}static estimateThroughput(e){let t=0;const n=e.reduce(((e,n)=>("data"===n.parsedURL?.scheme||n.failed||!n.finished||n.statusCode>300||!n.transferSize||(t+=n.transferSize,e.push({time:n.responseHeadersEndTime/1e3,isStart:!0}),e.push({time:n.networkEndTime/1e3,isStart:!1})),e)),[]).sort(((e,t)=>e.time-t.time));if(!n.length)return 1/0;let a=0,r=0,o=0;return n.forEach((e=>{e.isStart?(0===a&&(r=e.time),a++):(a--,0===a&&(o+=e.time-r))})),
8*t/o}static findResourceForUrl(e,t){return e.find((e=>t.startsWith(e.url)&&UrlUtils.equalWithExcludedFragments(e.url,t)))}static resolveRedirects(e){for(;e.redirectDestination;)e=e.redirectDestination;return e}}const uo=/^video/;class PageDependencyGraph{static getNetworkInitiators(e){if(!e.initiator)return[];if(e.initiator.url)return[e.initiator.url];if("script"===e.initiator.type){const t=new Set;let n=e.initiator.stack;for(;n;){const e=n.callFrames||[];for(const n of e)n.url&&t.add(n.url);n=n.parent}return Array.from(t)}return[]}static getNetworkNodeOutput(e){const t=[],n=new Map,a=new Map,r=new Map;return e.forEach((e=>{if(uo.test(e.mimeType))return;for(;n.has(e.requestId);)e.requestId+=":duplicate";const o=new NetworkNode(e);t.push(o);const i=a.get(e.url)||[];if(i.push(o),n.set(e.requestId,o),a.set(e.url,i),e.frameId&&e.resourceType===NetworkRequest.TYPES.Document&&e.documentURL===e.url){const t=r.has(e.frameId)?null:o;r.set(e.frameId,t)}})),{nodes:t,idToNodeMap:n,urlToNodeMap:a,
frameIdToNodeMap:r}}static getCPUNodes({mainThreadEvents:e}){const t=[];let n=0;for(TraceProcessor.assertHasToplevelEvents(e);n<e.length;){const a=e[n];if(n++,!TraceProcessor.isScheduleableTask(a)||!a.dur)continue;const r=[];for(const t=a.ts+a.dur;n<e.length&&e[n].ts<t;n++)r.push(e[n]);t.push(new CPUNode(a,r))}return t}static linkNetworkNodes(e,t){t.nodes.forEach((n=>{const a=n.record.initiatorRequest||e.record,r=t.idToNodeMap.get(a.requestId)||e,o=!r.isDependentOn(n)&&n.canDependOn(r),i=PageDependencyGraph.getNetworkInitiators(n.record);if(i.length?i.forEach((e=>{const a=t.urlToNodeMap.get(e)||[];1===a.length&&a[0].startTime<=n.startTime&&!a[0].isDependentOn(n)?n.addDependency(a[0]):o&&r.addDependent(n)})):o&&r.addDependent(n),n!==e&&0===n.getDependencies().length&&n.canDependOn(e)&&n.addDependency(e),!n.record.redirects)return;const s=[...n.record.redirects,n.record];for(let e=1;e<s.length;e++){const n=t.idToNodeMap.get(s[e-1].requestId),a=t.idToNodeMap.get(s[e].requestId)
;a&&n&&a.addDependency(n)}}))}static linkCPUNodes(e,t,n){const a=new Set([NetworkRequest.TYPES.XHR,NetworkRequest.TYPES.Fetch,NetworkRequest.TYPES.Script]);function addDependentNetworkRequest(e,n){const r=t.idToNodeMap.get(n);if(!r||r.startTime<=e.startTime)return;const{record:o}=r,i=o.resourceType||o.redirectDestination?.resourceType;a.has(i)&&e.addDependent(r)}function addDependencyOnFrame(e,n){if(!n)return;const a=t.frameIdToNodeMap.get(n);a&&(a.startTime>=e.startTime||e.addDependency(a))}function addDependencyOnUrl(e,n){if(!n)return;const a=t.urlToNodeMap.get(n)||[];let r=null,o=1/0;for(const t of a){if(e.startTime<=t.startTime)return;const n=e.startTime-t.endTime;n>=-1e5&&n<o&&(r=t,o=n)}r&&e.addDependency(r)}const r=new Map;for(const t of n){for(const e of t.childEvents){if(!e.args.data)continue;const n=e.args.data.url,a=(e.args.data.stackTrace||[]).map((e=>e.url)).filter(Boolean);switch(e.name){case"TimerInstall":r.set(e.args.data.timerId,t),
a.forEach((e=>addDependencyOnUrl(t,e)));break;case"TimerFire":{const n=r.get(e.args.data.timerId);if(!n||n.endTime>t.startTime)break;n.addDependent(t);break}case"InvalidateLayout":case"ScheduleStyleRecalculation":addDependencyOnFrame(t,e.args.data.frame),a.forEach((e=>addDependencyOnUrl(t,e)));break;case"EvaluateScript":addDependencyOnFrame(t,e.args.data.frame),addDependencyOnUrl(t,n),a.forEach((e=>addDependencyOnUrl(t,e)));break;case"XHRReadyStateChange":if(4!==e.args.data.readyState)break;addDependencyOnUrl(t,n),a.forEach((e=>addDependencyOnUrl(t,e)));break;case"FunctionCall":case"v8.compile":addDependencyOnFrame(t,e.args.data.frame),addDependencyOnUrl(t,n);break;case"ParseAuthorStyleSheet":addDependencyOnFrame(t,e.args.data.frame),addDependencyOnUrl(t,e.args.data.styleSheetUrl);break;case"ResourceSendRequest":addDependencyOnFrame(t,e.args.data.frame),addDependentNetworkRequest(t,e.args.data.requestId),a.forEach((e=>addDependencyOnUrl(t,e)))}}
0===t.getNumberOfDependencies()&&t.canDependOn(e)&&t.addDependency(e)}let o=!1,i=!1,s=!1;for(const e of n){let t=!1;!o&&e.childEvents.some((e=>"Layout"===e.name))&&(t=o=!0),!i&&e.childEvents.some((e=>"Paint"===e.name))&&(t=i=!0),!s&&e.childEvents.some((e=>"ParseHTML"===e.name))&&(t=s=!0),t||e.event.dur>=1e4||(1===e.getNumberOfDependencies()||e.getNumberOfDependents()<=1)&&PageDependencyGraph._pruneNode(e)}}static _pruneNode(e){const t=e.getDependencies(),n=e.getDependents();for(const a of t){e.removeDependency(a);for(const e of n)a.addDependent(e)}for(const t of n)e.removeDependent(t)}static createGraph(e,t,n){const a=PageDependencyGraph.getNetworkNodeOutput(t),r=PageDependencyGraph.getCPUNodes(e),{requestedUrl:o,mainDocumentUrl:i}=n;if(!o)throw new Error("requestedUrl is required to get the root request");if(!i)throw new Error("mainDocumentUrl is required to get the main resource");const s=NetworkAnalyzer.findResourceForUrl(t,o);if(!s)throw new Error("rootRequest not found")
;const c=a.idToNodeMap.get(s.requestId);if(!c)throw new Error("rootNode not found");const l=NetworkAnalyzer.findResourceForUrl(t,i);if(!l)throw new Error("mainDocumentRequest not found");const u=a.idToNodeMap.get(l.requestId);if(!u)throw new Error("mainDocumentNode not found");if(PageDependencyGraph.linkNetworkNodes(c,a),PageDependencyGraph.linkCPUNodes(c,a,r),u.setIsMainDocument(!0),NetworkNode.hasCycle(c))throw new Error("Invalid dependency graph created, cycle detected");return c}static printGraph(e,t=100){function padRight(e,t,n=" "){return e+n.repeat(Math.max(t-e.length,0))}const n=[];e.traverse((e=>n.push(e))),n.sort(((e,t)=>e.startTime-t.startTime));const a=n[0].startTime,r=(n.reduce(((e,t)=>Math.max(e,t.endTime)),0)-a)/t;n.forEach((e=>{const n=Math.round((e.startTime-a)/r),o=Math.ceil((e.endTime-e.startTime)/r),i=padRight("",n)+padRight("",o,"="),s=e.record?e.record.url:e.type;console.log(padRight(i,t),`| ${s.slice(0,30)}`)}))}static getDocumentUrls(e,t,n){
const a=n.mainFrameInfo.frameId;let r,o;for(const t of e)if("Page.frameNavigated"===t.method&&t.params.frame.id===a){const{url:e}=t.params.frame;r||(r=e),o=e}if(!r||!o)throw new Error("No main frame navigations found");const i=NetworkAnalyzer.findResourceForUrl(t,r);return i?.redirects?.length&&(r=i.redirects[0].url),{requestedUrl:r,mainDocumentUrl:o}}static async compute_(e,t){const{trace:n,devtoolsLog:a}=e,[r,o]=await Promise.all([co.request(n,t),go.request(a,t)]),i=e.URL||PageDependencyGraph.getDocumentUrls(a,o,r);return PageDependencyGraph.createGraph(r,o,i)}}const mo=makeComputedArtifact(PageDependencyGraph,["devtoolsLog","trace","URL"]),po=EventEmitter;class NetworkRecorder extends po{constructor(){super(),this._records=[],this._recordsById=new Map,this._mainSessionId=null}getRawRecords(){return Array.from(this._records)}onRequestStarted(e){this._records.push(e),this._recordsById.set(e.requestId,e),this.emit("requeststarted",e)}onRequestFinished(e){this.emit("requestfinished",e)}
onRequestWillBeSent(e){const t=e.params,n=this._findRealRequestAndSetSession(t.requestId,e.sessionId);if(!n){const n=new NetworkRequest;return n.onRequestWillBeSent(t),n.sessionId=e.sessionId,this.onRequestStarted(n),void Log.verbose("network",`request will be sent to ${n.url}`)}if(!t.redirectResponse)return;const a={...t,initiator:n.initiator,requestId:`${n.requestId}:redirect`},r=new NetworkRequest;r.onRequestWillBeSent(a),n.onRedirectResponse(t),Log.verbose("network",`${n.url} redirected to ${r.url}`),n.redirectDestination=r,r.redirectSource=n,this.onRequestStarted(r),this.onRequestFinished(n)}onRequestServedFromCache(e){const t=e.params,n=this._findRealRequestAndSetSession(t.requestId,e.sessionId);n&&(Log.verbose("network",`${n.url} served from cache`),n.onRequestServedFromCache())}onResponseReceived(e){const t=e.params,n=this._findRealRequestAndSetSession(t.requestId,e.sessionId);n&&(Log.verbose("network",`${n.url} response received`),n.onResponseReceived(t))}onDataReceived(e){
const t=e.params,n=this._findRealRequestAndSetSession(t.requestId,e.sessionId);n&&(Log.verbose("network",`${n.url} data received`),n.onDataReceived(t))}onLoadingFinished(e){const t=e.params,n=this._findRealRequestAndSetSession(t.requestId,e.sessionId);n&&(Log.verbose("network",`${n.url} loading finished`),n.onLoadingFinished(t),this.onRequestFinished(n))}onLoadingFailed(e){const t=e.params,n=this._findRealRequestAndSetSession(t.requestId,e.sessionId);n&&(Log.verbose("network",`${n.url} loading failed`),n.onLoadingFailed(t),this.onRequestFinished(n))}onResourceChangedPriority(e){const t=e.params,n=this._findRealRequestAndSetSession(t.requestId,e.sessionId);n&&n.onResourceChangedPriority(t)}dispatch(e){switch(e.method){case"Network.requestWillBeSent":return this.onRequestWillBeSent(e);case"Network.requestServedFromCache":return this.onRequestServedFromCache(e);case"Network.responseReceived":return this.onResponseReceived(e);case"Network.dataReceived":return this.onDataReceived(e)
;case"Network.loadingFinished":return this.onLoadingFinished(e);case"Network.loadingFailed":return this.onLoadingFailed(e);case"Network.resourceChangedPriority":return this.onResourceChangedPriority(e);default:return}}_findRealRequestAndSetSession(e,t){null===this._mainSessionId&&(this._mainSessionId=t),this._mainSessionId===t&&(t=void 0);let n=this._recordsById.get(e);if(n&&n.isValid){for(;n.redirectDestination;)n=n.redirectDestination;return n.setSession(t),n}}static _chooseInitiatorRequest(e,t){if(e.redirectSource)return e.redirectSource;const n=mo.getNetworkInitiators(e)[0];let a=t.get(n)||[];if(a=a.filter((t=>t.responseHeadersEndTime<=e.networkRequestTime)),a.length>1){const e=a.filter((e=>e.resourceType!==NetworkRequest.TYPES.Other));e.length&&(a=e)}if(a.length>1){const t=a.filter((t=>t.frameId===e.frameId));t.length&&(a=t)}if(a.length>1&&"parser"===e.initiator.type){const e=a.filter((e=>e.resourceType===NetworkRequest.TYPES.Document));e.length&&(a=e)}if(a.length>1){
const e=a.filter((e=>e.isLinkPreload));if(e.length){const t=a.filter((e=>!e.isLinkPreload)),n=t.every((e=>e.fromDiskCache||e.fromMemoryCache));t.length&&n&&(a=e)}}return 1===a.length?a[0]:null}static recordsFromLogs(e){const t=new NetworkRecorder;e.forEach((e=>t.dispatch(e)));const n=t.getRawRecords().filter((e=>e.isValid)),a=new Map;for(const e of n){const t=a.get(e.url)||[];t.push(e),a.set(e.url,t)}for(const e of n){const t=NetworkRecorder._chooseInitiatorRequest(e,a);t&&e.setInitiatorRequest(t);let n=e;for(;n.redirectDestination;)n=n.redirectDestination;if(n===e||n.redirects)continue;const r=[];for(let e=n.redirectSource;e;e=e.redirectSource)r.unshift(e);n.redirects=r}return n}}const go=makeComputedArtifact(class NetworkRecords{static async compute_(e){return NetworkRecorder.recordsFromLogs(e)}},null),ho={warningXhtml:"The page MIME type is XHTML: Lighthouse does not explicitly support this document type"
},fo=createIcuMessageFn("core/lib/navigation-error.js",ho),yo="application/xhtml+xml";function getPageLoadError(e,t){const{url:n,loadFailureMode:a,networkRecords:r}=t;let o,i=NetworkAnalyzer.findResourceForUrl(r,n);if(!i){const e=r.filter((e=>e.resourceType===NetworkRequest.TYPES.Document));e.length&&(i=e.reduce(((e,t)=>t.networkRequestTime<e.networkRequestTime?t:e)))}i&&(o=NetworkAnalyzer.resolveRedirects(i)),o?.mimeType===yo&&t.warnings.push(fo(ho.warningXhtml));const s=function getNetworkError(e){if(!e)return new LighthouseError(LighthouseError.errors.NO_DOCUMENT_REQUEST);if(e.failed){const t=e.localizedFailDescription;return"net::ERR_NAME_NOT_RESOLVED"===t||"net::ERR_NAME_RESOLUTION_FAILED"===t||t.startsWith("net::ERR_DNS_")?new LighthouseError(LighthouseError.errors.DNS_FAILURE):new LighthouseError(LighthouseError.errors.FAILED_DOCUMENT_REQUEST,{errorDetails:t})}return e.hasErrorStatusCode()?new LighthouseError(LighthouseError.errors.ERRORED_DOCUMENT_REQUEST,{
statusCode:`${e.statusCode}`}):void 0}(i),c=function getInterstitialError(e,t){if(!e)return;return t.find((e=>e.documentURL.startsWith("chrome-error://")))&&e.failed?e.localizedFailDescription.startsWith("net::ERR_CERT")?new LighthouseError(LighthouseError.errors.INSECURE_DOCUMENT_REQUEST,{securityMessages:e.localizedFailDescription}):new LighthouseError(LighthouseError.errors.CHROME_INTERSTITIAL_ERROR):void 0}(i,r),l=function getNonHtmlError(e){if(e)return"text/html"!==e.mimeType&&e.mimeType!==yo?new LighthouseError(LighthouseError.errors.NOT_HTML,{mimeType:e.mimeType}):void 0}(o);if("ignore"!==a)return c||(s||(l||e))}const bo=EventEmitter;class NetworkMonitor extends bo{_networkRecorder=void 0;_frameNavigations=[];constructor(e){super(),this._targetManager=e,this._session=e.rootSession(),this._onFrameNavigated=e=>this._frameNavigations.push(e.frame),this._onProtocolMessage=e=>{this._networkRecorder&&this._networkRecorder.dispatch(e)}}async enable(){if(this._networkRecorder)return
;this._frameNavigations=[],this._networkRecorder=new NetworkRecorder;const reEmit=e=>t=>{this.emit(e,t),this._emitNetworkStatus()};this._networkRecorder.on("requeststarted",reEmit("requeststarted")),this._networkRecorder.on("requestfinished",reEmit("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(){const e=this._frameNavigations;if(!e.length)return{};const t=(await this._session.sendCommand("Page.getFrameTree")).frameTree.frame.id,n=e.filter((e=>e.id===t));n.length||Log.warn("NetworkMonitor","No detected navigations");let a=n[0]?.url;if(this._networkRecorder){let e=this._networkRecorder.getRawRecords().find((e=>e.url===a))
;for(;e?.redirectSource;)e=e.redirectSource,a=e.url}return{requestedUrl:a,mainDocumentUrl:n[n.length-1]?.url}}getInflightRequests(){return this._networkRecorder?this._networkRecorder.getRawRecords().filter((e=>!e.finished)):[]}isIdle(){return this._isActiveIdlePeriod(0)}isCriticalIdle(){if(!this._networkRecorder)return!1;const e=this._networkRecorder.getRawRecords().find((e=>"Document"===e.resourceType))?.frameId;return this._isActiveIdlePeriod(0,(t=>t.frameId===e&&("VeryHigh"===t.priority||"High"===t.priority)))}is2Idle(){return this._isActiveIdlePeriod(2)}_isActiveIdlePeriod(e,t){if(!this._networkRecorder)return!1;const n=this._networkRecorder.getRawRecords();let a=0;for(let e=0;e<n.length;e++){const r=n[e];r.finished||(t&&!t(r)||NetworkRequest.isNonNetworkRequest(r)||a++)}return a<=e}_emitNetworkStatus(){const e=this.isIdle(),t=this.is2Idle(),n=this.isCriticalIdle();this.emit(e?"networkidle":"networkbusy"),this.emit(t?"network-2-idle":"network-2-busy"),
this.emit(n?"network-critical-idle":"network-critical-busy"),t&&e?Log.verbose("NetworkRecorder","network fully-quiet"):t&&!e?Log.verbose("NetworkRecorder","network semi-quiet"):Log.verbose("NetworkRecorder","network busy")}static findNetworkQuietPeriods(e,t,n=1/0){let a=[];e.forEach((e=>{UrlUtils.isNonNetworkProtocol(e.protocol)||"ws"!==e.protocol&&"wss"!==e.protocol&&(a.push({time:1e3*e.networkRequestTime,isStart:!0}),e.finished&&a.push({time:1e3*e.networkEndTime,isStart:!1}))})),a=a.filter((e=>e.time<=n)).sort(((e,t)=>e.time-t.time));let r=0,o=0;const i=[];return a.forEach((e=>{e.isStart?(r===t&&i.push({start:o,end:e.time}),r++):(r--,r===t&&(o=e.time))})),r<=t&&i.push({start:o,end:n}),i.filter((e=>e.start!==e.end))}}function waitForNothing(){return{promise:Promise.resolve(),cancel(){}}}function waitForFrameNavigated(e){let cancel=()=>{throw new Error("waitForFrameNavigated.cancel() called before it was defined")};return{promise:new Promise(((t,n)=>{e.once("Page.frameNavigated",t),
cancel=()=>{e.off("Page.frameNavigated",t),n(new Error("Wait for navigated cancelled"))}})),cancel}}function waitForNetworkIdle(e,t,n){let a,r=!1,cancel=()=>{throw new Error("waitForNetworkIdle.cancel() called before it was defined")};const{networkQuietThresholdMs:o,busyEvent:i,idleEvent:s,isIdle:c}=n;return{promise:new Promise(((l,u)=>{const onIdle=()=>{t.once(i,onBusy),a=setTimeout((()=>{cancel(),l()}),o)},onBusy=()=>{t.once(s,onIdle),a&&clearTimeout(a)},domContentLoadedListener=()=>{r=!0,c(t)?onIdle():onBusy()},logStatus=()=>{if(!r)return void Log.verbose("waitFor","Waiting on DomContentLoaded");const e=t.getInflightRequests();if(Log.isVerbose()&&e.length<20&&e.length>0){Log.verbose("waitFor",`=== Waiting on ${e.length} requests to finish`);for(const t of e)Log.verbose("waitFor",`Waiting on ${t.url.slice(0,120)} to finish`)}};t.on("requeststarted",logStatus),t.on("requestfinished",logStatus),t.on(i,logStatus),
n.pretendDCLAlreadyFired?domContentLoadedListener():e.once("Page.domContentEventFired",domContentLoadedListener);let d=!1;cancel=()=>{d||(d=!0,a&&clearTimeout(a),n.pretendDCLAlreadyFired||e.off("Page.domContentEventFired",domContentLoadedListener),t.removeListener(i,onBusy),t.removeListener(s,onIdle),t.removeListener("requeststarted",logStatus),t.removeListener("requestfinished",logStatus),t.removeListener(i,logStatus))}})),cancel}}function registerPerformanceObserverInPage(){if(void 0!==window.____lastLongTask)return;window.____lastLongTask=performance.now();new window.PerformanceObserver((e=>{const t=e.getEntries();for(const e of t)if("longtask"===e.entryType){const t=e.startTime+e.duration;window.____lastLongTask=Math.max(window.____lastLongTask||0,t)}})).observe({type:"longtask",buffered:!0})}function checkTimeSinceLastLongTaskInPage(){return new Promise((e=>{const t=performance.now(),n=window.____lastLongTask||0;setTimeout((()=>{const a=window.____lastLongTask||0;e(n===a?t-n:0)
}),150)}))}function waitForLoadEvent(e,t){let cancel=()=>{throw new Error("waitForLoadEvent.cancel() called before it was defined")};return{promise:new Promise(((n,a)=>{let r;const loadListener=function(){r=setTimeout(n,t)};e.once("Page.loadEventFired",loadListener);let o=!1;cancel=()=>{o||(o=!0,e.off("Page.loadEventFired",loadListener),r&&clearTimeout(r))}})),cancel}}const vo={waitForFcp:function waitForFcp(e,t,n){let cancel=()=>{throw new Error("waitForFcp.cancel() called before it was defined")};return{promise:new Promise(((a,r)=>{const o=setTimeout((()=>{r(new LighthouseError(LighthouseError.errors.NO_FCP))}),n);let i;const lifecycleListener=e=>{"firstContentfulPaint"===e.name&&(i=setTimeout((()=>{a(),cancel()}),t))};e.on("Page.lifecycleEvent",lifecycleListener);let s=!1;cancel=()=>{s||(s=!0,e.off("Page.lifecycleEvent",lifecycleListener),o&&clearTimeout(o),i&&clearTimeout(i),r(new Error("Wait for FCP canceled")))}})),cancel}},waitForLoadEvent,
waitForCPUIdle:function waitForCPUIdle(e,t){if(!t)return{promise:Promise.resolve(),cancel:()=>{}};let n,a=!1;async function checkForQuiet(e,r){if(a)return;const o=await e.evaluate(checkTimeSinceLastLongTaskInPage,{args:[],useIsolation:!0});if(!a&&"number"==typeof o)if(o>=t)Log.verbose("waitFor",`CPU has been idle for ${o} ms`),r();else{Log.verbose("waitFor",`CPU has been idle for ${o} ms`);n=setTimeout((()=>checkForQuiet(e,r)),t-o)}}let cancel=()=>{throw new Error("waitForCPUIdle.cancel() called before it was defined")};const r=new ExecutionContext(e);return{promise:new Promise(((e,t)=>{r.evaluate(registerPerformanceObserverInPage,{args:[],useIsolation:!0}).then((()=>checkForQuiet(r,e))).catch(t),cancel=()=>{a||(a=!0,n&&clearTimeout(n),t(new Error("Wait for CPU idle canceled")))}})),cancel}},waitForNetworkIdle};const wo={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."},Do=createIcuMessageFn("core/gather/driver/navigation.js",wo);async function gotoURL(e,t,n){const a="string"==typeof t?{msg:`Navigating to ${t}`,id:"lh:driver:navigate"}:{msg:"Navigating using a user defined function",id:"lh:driver:navigate"};Log.time(a);const r=e.defaultSession,o=new NetworkMonitor(e.targetManager);let i;await o.enable(),await r.sendCommand("Page.enable"),await r.sendCommand("Page.setLifecycleEventsEnabled",{enabled:!0}),"string"==typeof t?(r.setNextProtocolTimeout(1/0),i=r.sendCommand("Page.navigate",{url:t})):i=t();const s=n.waitUntil.includes("navigated"),c=n.waitUntil.includes("load"),l=n.waitUntil.includes("fcp"),u=[];if(s){const e=waitForFrameNavigated(r).promise;u.push(e.then((()=>({timedOut:!1}))))}if(c){const e=function resolveWaitForFullyLoadedOptions(e){
let{pauseAfterFcpMs:t,pauseAfterLoadMs:n,networkQuietThresholdMs:a,cpuQuietThresholdMs:r}=e,o=e.maxWaitForLoad,i=e.maxWaitForFcp;return"number"!=typeof t&&(t=0),"number"!=typeof n&&(n=0),"number"!=typeof a&&(a=5e3),"number"!=typeof r&&(r=0),"number"!=typeof o&&(o=Jr.maxWaitForLoad),"number"!=typeof i&&(i=Jr.maxWaitForFcp),e.waitUntil.includes("fcp")||(i=void 0),{pauseAfterFcpMs:t,pauseAfterLoadMs:n,networkQuietThresholdMs:a,cpuQuietThresholdMs:r,maxWaitForLoadedMs:o,maxWaitForFcpMs:i}}(n);u.push(async function waitForFullyLoaded(e,t,n){const{pauseAfterFcpMs:a,pauseAfterLoadMs:r,networkQuietThresholdMs:o,cpuQuietThresholdMs:i,maxWaitForLoadedMs:s,maxWaitForFcpMs:c}=n,{waitForFcp:l,waitForLoadEvent:u,waitForNetworkIdle:d,waitForCPUIdle:m}=n._waitForTestOverrides||vo;let p;const h=c?l(e,a,c):waitForNothing(),f=u(e,r),y=d(e,t,{networkQuietThresholdMs:o,busyEvent:"network-2-busy",idleEvent:"network-2-idle",isIdle:e=>e.is2Idle()}),b=d(e,t,{networkQuietThresholdMs:o,
busyEvent:"network-critical-busy",idleEvent:"network-critical-idle",isIdle:e=>e.isCriticalIdle()});let v=waitForNothing();const w=Promise.all([h.promise,f.promise,y.promise,b.promise]).then((()=>(v=m(e,i),v.promise))).then((()=>async function(){return Log.verbose("waitFor","loadEventFired and network considered idle"),{timedOut:!1}})).catch((e=>function(){throw e})),D=new Promise(((e,t)=>{p=setTimeout(e,s)})).then((t=>async()=>{if(Log.warn("waitFor","Timed out waiting for page load. Checking if page is hung..."),await async function isPageHung(e){try{return e.setNextProtocolTimeout(1e3),await e.sendCommand("Runtime.evaluate",{expression:'"ping"',returnByValue:!0,timeout:1e3}),!1}catch(e){return!0}}(e))throw Log.warn("waitFor","Page appears to be hung, killing JavaScript..."),await e.sendCommand("Emulation.setScriptExecutionDisabled",{value:!0}),await e.sendCommand("Runtime.terminateExecution"),new LighthouseError(LighthouseError.errors.PAGE_HUNG);return{timedOut:!0}
})),E=await Promise.race([w,D]);return p&&clearTimeout(p),h.cancel(),f.cancel(),y.cancel(),v.cancel(),E()}(r,o,e))}else if(l)throw new Error("Cannot wait for FCP without waiting for page load");const d=(await Promise.all(u)).some((e=>e.timedOut)),m=await o.getNavigationUrls();let p=m.requestedUrl;if("string"==typeof t&&(p&&!UrlUtils.equalWithExcludedFragments(t,p)&&Log.error("Navigation",`Provided URL (${t}) did not match initial navigation URL (${p})`),p=t),!p)throw Error("No navigations detected when running user defined requestor.");const h=m.mainDocumentUrl||p;return await i,await o.disable(),n.debugNavigation&&await function waitForUserToContinue(e){return e.defaultSession.setNextProtocolTimeout(2**31-1),e.executionContext.evaluate((function createInPagePromise(){let resolve=()=>{};const e=new Promise((e=>resolve=e))
;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=resolve,e}),{args:[]})}(e),Log.timeEnd(a),{requestedUrl:p,mainDocumentUrl:h,warnings:getNavigationWarnings({timedOut:d,mainDocumentUrl:h,requestedUrl:p})}}function getNavigationWarnings(e){const{requestedUrl:t,mainDocumentUrl:n}=e,a=[];return e.timedOut&&a.push(Do(wo.warningTimeout)),UrlUtils.equalWithExcludedFragments(t,n)||a.push(Do(wo.warningRedirected,{requested:t,final:n})),a}function getServiceWorkerVersions(e){return new Promise(((t,n)=>{const versionUpdatedListener=a=>{const r=a.versions.filter((e=>"redundant"!==e.status)),o=r.find((e=>"activated"===e.status));r.length&&!o||(e.off("ServiceWorker.workerVersionUpdated",versionUpdatedListener),e.sendCommand("ServiceWorker.disable").then((e=>t(a)),n))}
;e.on("ServiceWorker.workerVersionUpdated",versionUpdatedListener),e.sendCommand("ServiceWorker.enable").catch(n)}))}function getServiceWorkerRegistrations(e){return new Promise(((t,n)=>{e.once("ServiceWorker.workerRegistrationUpdated",(a=>{e.sendCommand("ServiceWorker.disable").then((e=>t(a)),n)})),e.sendCommand("ServiceWorker.enable").catch(n)}))}class NetworkUserAgent extends FRGatherer{meta={supportedModes:["timespan","navigation"],dependencies:{DevtoolsLog:DevtoolsLog.symbol}};static getNetworkUserAgent(e){for(const t of e){if("Network.requestWillBeSent"!==t.method)continue;const e=t.params.request.headers["User-Agent"];if(e)return e}return""}async getArtifact(e){return NetworkUserAgent.getNetworkUserAgent(e.dependencies.DevtoolsLog)}}var Eo=Object.freeze({__proto__:null,default:NetworkUserAgent});async function getBaseArtifacts(e,t,n){const a=await getBenchmarkIndex(t.executionContext),{userAgent:r}=await getBrowserVersion(t.defaultSession);return{fetchTime:(new Date).toJSON(),
Timing:[],LighthouseRunWarnings:[],settings:e.settings,BenchmarkIndex:a,HostUserAgent:r,HostFormFactor:r.includes("Android")||r.includes("Mobile")?"mobile":"desktop",URL:{finalDisplayedUrl:""},PageLoadError:null,GatherContext:n,NetworkUserAgent:"",traces:{},devtoolsLogs:{}}}function finalizeArtifacts(e,t){const n=e.LighthouseRunWarnings.concat(t.LighthouseRunWarnings||[]).concat(getEnvironmentWarnings({settings:e.settings,baseArtifacts:e})),a={...e,...t};if(a.Timing=Log.getTimeEntries(),a.LighthouseRunWarnings=function deduplicateWarnings(e){const t=[];for(const n of e)t.some((e=>Za(n,e)))||t.push(n);return t}(n),a.PageLoadError&&!a.URL.finalDisplayedUrl&&(a.URL.finalDisplayedUrl=a.URL.requestedUrl||""),!a.URL.finalDisplayedUrl)throw new Error("Runner did not set finalDisplayedUrl");return a}class GatherRunner{static async loadBlank(e,t=Zr.blankPage){const n={msg:"Resetting state with about:blank",id:"lh:gather:loadBlank"};Log.time(n),await gotoURL(e,t,{waitUntil:["navigated"]}),
Log.timeEnd(n)}static async loadPage(e,t){const n={msg:"Loading page & waiting for onload",id:`lh:gather:loadPage-${t.passConfig.passName}`};Log.time(n);try{const a=t.url,{mainDocumentUrl:r,warnings:o}=await gotoURL(e,a,{waitUntil:t.passConfig.recordTrace?["load","fcp"]:["load"],debugNavigation:t.settings.debugNavigation,maxWaitForFcp:t.settings.maxWaitForFcp,maxWaitForLoad:t.settings.maxWaitForLoad,...t.passConfig});t.url=r;const{URL:i}=t.baseArtifacts;i.finalDisplayedUrl&&i.mainDocumentUrl||(i.mainDocumentUrl=r,i.finalDisplayedUrl=await t.driver.url()),"fatal"===t.passConfig.loadFailureMode&&t.LighthouseRunWarnings.push(...o)}catch(e){if("NO_FCP"===e.code||"PAGE_HUNG"===e.code)return{navigationError:e};throw e}finally{Log.timeEnd(n)}return{}}static assertNoSameOriginServiceWorkerClients(e,t){let n,a;return getServiceWorkerRegistrations(e).then((e=>{n=e.registrations})).then((t=>getServiceWorkerVersions(e))).then((e=>{a=e.versions})).then((e=>{const r=new URL(t).origin;n.filter((e=>{
const t=new URL(e.scopeURL).origin;return r===t})).forEach((e=>{a.forEach((t=>{if(t.registrationId===e.registrationId&&t.controlledClients&&t.controlledClients.length>0)throw new Error("You probably have multiple tabs open to the same origin.")}))}))}))}static async setupDriver(e,t){const n={msg:"Initializing…",id:"lh:gather:setupDriver"};Log.time(n);const a=e.defaultSession;await GatherRunner.assertNoSameOriginServiceWorkerClients(a,t.requestedUrl),await prepareTargetForNavigationMode(e,t.settings),Log.timeEnd(n)}static async disposeDriver(e,t){const n={msg:"Disconnecting from browser...",id:"lh:gather:disconnect"};Log.time(n);try{const n=e.defaultSession;!t.settings.disableStorageReset&&await clearDataForOrigin(n,t.requestedUrl),await e.disconnect()}catch(e){/close\/.*status: (500|404)$/.test(e.message)||Log.error("GatherRunner disconnect",e.message)}Log.timeEnd(n)}static async beginRecording(e){const t={msg:"Beginning devtoolsLog and trace",id:"lh:gather:beginRecording"};Log.time(t)
;const{driver:n,passConfig:a,settings:r}=e;await n.beginDevtoolsLog(),a.recordTrace&&await n.beginTrace(r),Log.timeEnd(t)}static async endRecording(e){const{driver:t,passConfig:n}=e;let a;if(n.recordTrace){const e={msg:"Gathering trace",id:"lh:gather:getTrace"};Log.time(e),a=await t.endTrace(),Log.timeEnd(e)}const r={msg:"Gathering devtoolsLog & network records",id:"lh:gather:getDevtoolsLog"};Log.time(r);const o=await t.endDevtoolsLog(),i=await go.request(o,e);return Log.timeEnd(r),{networkRecords:i,devtoolsLog:o,trace:a}}static async beforePass(e,t){const n={msg:"Running beforePass methods",id:"lh:gather:beforePass"};Log.time(n,"verbose");for(const n of e.passConfig.gatherers){const a=n.instance,r={msg:`Gathering setup: ${a.name}`,id:`lh:gather:beforePass:${a.name}`};Log.time(r,"verbose");const o=Promise.resolve().then((t=>a.beforePass(e)));t[a.name]=[o],await o.catch((()=>{})),Log.timeEnd(r)}Log.timeEnd(n)}static async pass(e,t){const n=e.passConfig.gatherers,a={
msg:"Running pass methods",id:"lh:gather:pass"};Log.time(a,"verbose");for(const a of n){const n=a.instance,r={msg:`Gathering in-page: ${n.name}`,id:`lh:gather:pass:${n.name}`};Log.time(r);const o=Promise.resolve().then((t=>n.pass(e))),i=t[n.name]||[];i.push(o),t[n.name]=i,await o.catch((()=>{}))}Log.timeEnd(a)}static async afterPass(e,t,n){const a=e.passConfig.gatherers,r={msg:"Running afterPass methods",id:"lh:gather:afterPass"};Log.time(r,"verbose");for(const r of a){const a=r.instance,o={msg:`Gathering: ${a.name}`,id:`lh:gather:afterPass:${a.name}`};Log.time(o);const i=Promise.resolve().then((n=>a.afterPass(e,t))),s=n[a.name]||[];s.push(i),n[a.name]=s,await i.catch((()=>{})),Log.timeEnd(o)}Log.timeEnd(r)}static async collectArtifacts(e){const t={},n=Object.entries(e);for(const[e,a]of n){try{const n=(await Promise.all(a)).filter((e=>void 0!==e)),r=n[n.length-1];t[e]=r}catch(n){t[e]=n}if(void 0===t[e])throw new Error(`${e} failed to provide an artifact.`)}return{artifacts:t}}
static async initializeBaseArtifacts(e){const t=(await e.driver.getBrowserVersion()).userAgent,n=t.includes("Android")||t.includes("Mobile")?"mobile":"desktop";return{fetchTime:(new Date).toJSON(),LighthouseRunWarnings:[],HostFormFactor:n,HostUserAgent:t,NetworkUserAgent:"",BenchmarkIndex:0,traces:{},devtoolsLogs:{},settings:e.settings,GatherContext:{gatherMode:"navigation"},URL:{requestedUrl:e.requestedUrl,mainDocumentUrl:"",finalDisplayedUrl:""},Timing:[],PageLoadError:null}}static async populateBaseArtifacts(e){const t={msg:"Populate base artifacts",id:"lh:gather:populateBaseArtifacts"};Log.time(t);const n=e.baseArtifacts,a=n.devtoolsLogs[e.passConfig.passName];n.NetworkUserAgent=NetworkUserAgent.getNetworkUserAgent(a);const r=getEnvironmentWarnings(e);n.LighthouseRunWarnings.push(...r),Log.timeEnd(t)}static async run(e,t){const n=t.driver,a={};try{await n.connect(),await GatherRunner.loadBlank(n);const r=await GatherRunner.initializeBaseArtifacts(t)
;r.BenchmarkIndex=await getBenchmarkIndex(n.executionContext);const o=UrlUtils.isValid(t.requestedUrl)&&new URL(t.requestedUrl);if("lr"===t.settings.channel&&o&&o.searchParams.has("bidx")){const e=o.searchParams.get("bidx")||0,t=[r.BenchmarkIndex];for(let a=0;a<e;a++){const e=await getBenchmarkIndex(n.executionContext);t.push(e)}r.BenchmarkIndexes=t}await GatherRunner.setupDriver(n,t);let i=!0;for(const o of e){const e={gatherMode:"navigation",driver:n,url:t.requestedUrl,settings:t.settings,passConfig:o,baseArtifacts:r,computedCache:t.computedCache,LighthouseRunWarnings:r.LighthouseRunWarnings},s=await GatherRunner.runPass(e);if(Object.assign(a,s.artifacts),s.pageLoadError&&"fatal"===o.loadFailureMode){r.PageLoadError=s.pageLoadError;break}i&&(await GatherRunner.populateBaseArtifacts(e),i=!1)}return await GatherRunner.disposeDriver(n,t),finalizeArtifacts(r,a)}catch(e){throw GatherRunner.disposeDriver(n,t),e}}static _addLoadDataToBaseArtifacts(e,t,n){const a=e.baseArtifacts
;a.devtoolsLogs[n]=t.devtoolsLog,t.trace&&(a.traces[n]=t.trace)}static async runPass(e){const t={msg:`Running ${e.passConfig.passName} pass`,id:`lh:gather:runPass-${e.passConfig.passName}`,args:[e.passConfig.gatherers.map((e=>e.instance.name)).join(", ")]};Log.time(t);const n={},{driver:a,passConfig:r}=e;await GatherRunner.loadBlank(a,r.blankPage);const{warnings:o}=await prepareTargetForIndividualNavigation(a.defaultSession,e.settings,{requestor:e.url,disableStorageReset:!r.useThrottling,disableThrottling:!r.useThrottling,blockedUrlPatterns:r.blockedUrlPatterns});e.LighthouseRunWarnings.push(...o),await GatherRunner.beforePass(e,n),await GatherRunner.beginRecording(e);const{navigationError:i}=await GatherRunner.loadPage(a,e);await GatherRunner.pass(e,n);const s=await GatherRunner.endRecording(e);await clearThrottling(a.defaultSession);const c=getPageLoadError(i,{url:e.url,loadFailureMode:r.loadFailureMode,networkRecords:s.networkRecords,warnings:e.LighthouseRunWarnings});if(c){
const n=getFormatted(c.friendlyMessage,e.settings.locale);return Log.error("GatherRunner",n,e.url),e.LighthouseRunWarnings.push(c.friendlyMessage),GatherRunner._addLoadDataToBaseArtifacts(e,s,`pageLoadError-${r.passName}`),Log.timeEnd(t),{artifacts:{},pageLoadError:c}}GatherRunner._addLoadDataToBaseArtifacts(e,s,r.passName),await GatherRunner.afterPass(e,s,n);const l=GatherRunner.collectArtifacts(n);return Log.timeEnd(t),l}}const To=!!_.env.CI||"test"===_.env.NODE_ENV;function getLogNormalScore({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;const a=Math.max(Number.MIN_VALUE,n/e),r=Math.log(a),o=Math.max(Number.MIN_VALUE,t/e),i=(1-function erf(e){const t=Math.sign(e),n=1/(1+.3275911*(e=Math.abs(e)));return t*(1-n*(.254829592+n*(n*(1.421413741+n*(1.061405429*n-1.453152027))-.284496736))*Math.exp(-e*e))
}(.9061938024368232*r/-Math.log(o)))/2;let s;return s=n<=t?Math.max(.9,Math.min(1,i)):n<=e?Math.max(.5,Math.min(.8999999999999999,i)):Math.max(0,Math.min(.49999999999999994,i)),s}function linearInterpolation(e,t,n,a,r){return t+(r-e)*((a-t)/(n-e))}class Audit{static get DEFAULT_PASS(){return"defaultPass"}static get SCORING_MODES(){return{NUMERIC:"numeric",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(e,t){throw new Error("audit() method must be overriden")}static computeLogNormalScore(e,t){let n=getLogNormalScore(e,t);return n>.9&&(n+=.05*(n-.9)),Math.floor(100*n)/100}static assertHeadingKeysExist(e,t){if(t.length&&To)for(const n of e){if(null===n.key)continue;const e=n.key;if(!t.some((t=>e in t)))throw new Error(`"${n.key}" is missing from items`)}}static makeTableDetails(e,t,n={}){
const{wastedBytes:a,wastedMs:r}=n,o=a||r?{wastedBytes:a,wastedMs:r}:void 0;return 0===t.length?{type:"table",headings:[],items:[],summary:o}:(Audit.assertHeadingKeysExist(e,t),{type:"table",headings:e,items:t,summary:o})}static makeListDetails(e){return{type:"list",items:e}}static makeSnippetDetails({content:e,title:t,lineMessages:n,generalMessages:a,node:r,maxLineLength:o=200,maxLinesAroundMessage:i=20}){const s=Audit._makeSnippetLinesArray(e,o);return{type:"snippet",lines:Util.filterRelevantLines(s,n,i),title:t,lineMessages:n,generalMessages:a,lineCount:s.length,node:r}}static _makeSnippetLinesArray(e,t){return e.split("\n").map(((e,n)=>{const a=n+1,r={content:e.slice(0,t),lineNumber:a};return e.length>t&&(r.truncated=!0),r}))}static makeOpportunityDetails(e,t,n){Audit.assertHeadingKeysExist(e,t);const{overallSavingsMs:a,overallSavingsBytes:r}=n;return{type:"opportunity",headings:0===t.length?[]:e,items:t,overallSavingsMs:a,overallSavingsBytes:r}}static makeNodeItem(e){return{
type:"node",lhId:e.lhId,path:e.devtoolsNodePath,selector:e.selector,boundingRect:e.boundingRect,snippet:e.snippet,nodeLabel:e.nodeLabel}}static _findOriginalLocation(e,t,n){const a=e?.map.findEntry(t,n);if(a)return{file:a.sourceURL||"",line:a.sourceLineNumber||0,column:a.sourceColumnNumber||0}}static makeSourceLocation(e,t,n,a){return{type:"source-location",url:e,urlProvider:"network",line:t,column:n,original:a&&this._findOriginalLocation(a,t,n)}}static makeSourceLocationFromConsoleMessage(e,t){if(!e.url)return;const n=e.lineNumber||0,a=e.columnNumber||0;return this.makeSourceLocation(e.url,n,a,t)}static _normalizeAuditScore(e,t,n){if(t!==Audit.SCORING_MODES.BINARY&&t!==Audit.SCORING_MODES.NUMERIC)return null;if(null===e||!Number.isFinite(e))throw new Error(`Invalid score for ${n}: ${e}`);if(e>1)throw new Error(`Audit score for ${n} is > 1`);if(e<0)throw new Error(`Audit score for ${n} is < 0`);var a;return a=e,e=Math.round(100*a)/100}static generateErrorAuditResult(e,t){
return Audit.generateAuditResult(e,{score:null,errorMessage:t})}static generateAuditResult(e,t){if(void 0===t.score)throw new Error("generateAuditResult requires a score");let n=e.meta.scoreDisplayMode||Audit.SCORING_MODES.BINARY;t.errorMessage?n=Audit.SCORING_MODES.ERROR:t.notApplicable&&(n=Audit.SCORING_MODES.NOT_APPLICABLE);const a=Audit._normalizeAuditScore(t.score,n,e.meta.id);let r=e.meta.title;e.meta.failureTitle&&null!==a&&a<Util.PASS_THRESHOLD&&(r=e.meta.failureTitle);const o="numericUnit"in t?t:void 0;return{id:e.meta.id,title:r,description:e.meta.description,score:a,scoreDisplayMode:n,numericValue:o?.numericValue,numericUnit:o?.numericUnit,displayValue:t.displayValue,explanation:t.explanation,errorMessage:t.errorMessage,warnings:t.warnings,details:t.details}}}class ReportScoring{static arithmeticMean(e){if((e=e.filter((e=>e.weight>0))).some((e=>null===e.score)))return null;const t=e.reduce(((e,t)=>{const n=t.score,a=t.weight;return{weight:e.weight+a,sum:e.sum+n*a}}),{
weight:0,sum:0});return n=t.sum/t.weight||0,Math.round(100*n)/100;var n}static scoreAllCategories(e,t){const n={};for(const[a,r]of Object.entries(e)){const e=r.auditRefs.map((e=>{const n={...e},a=t[n.id];return a.scoreDisplayMode!==Audit.SCORING_MODES.NOT_APPLICABLE&&a.scoreDisplayMode!==Audit.SCORING_MODES.INFORMATIVE&&a.scoreDisplayMode!==Audit.SCORING_MODES.MANUAL||(n.weight=0),n})),o=e.map((e=>({score:t[e.id].score,weight:e.weight}))),i=ReportScoring.arithmeticMean(o);n[a]={...r,auditRefs:e,id:a,score:i}}return n}}var So=[{id:"amp",title:"AMP",
icon:'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>',UIStrings:{"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. [Learn more](https://amp.dev/documentation/guides-and-tutorials/develop/style_and_layout/art_direction/)."}},{id:"angular",title:"Angular",icon:'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>',UIStrings:{
"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/)."}},{id:"drupal",title:"Drupal",
icon:'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>',UIStrings:{
"unused-css-rules":"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 link](https://www.drupal.org/docs/8/creating-custom-modules/adding-stylesheets-css-and-javascript-js-to-a-drupal-8-module#library) for details. To identify attached libraries 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/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 enqueue a stylesheet if it is actually used on the page.",
"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 link](https://www.drupal.org/docs/8/creating-custom-modules/adding-stylesheets-css-and-javascript-js-to-a-drupal-8-module#library) for details. To identify attached libraries that are adding extraneous JavaScript, try running [code coverage](https://developers.google.com/web/updates/2017/04/devtools-release-notes#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 enqueue a script 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":"Install [a Drupal module](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A67&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=%22lazy+load%22&solrsort=iss_project_release_usage+desc&op=Search) that can lazy load images. Such modules provide the ability to defer any offscreen images to improve performance.","total-byte-weight":"Consider using [Responsive Image Styles](https://www.drupal.org/docs/8/mobile-guide/responsive-images-in-drupal-8) 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 to inline critical CSS and JavaScript, or potentially load assets asynchronously via JavaScript such as the [Advanced CSS/JS Aggregation](https://www.drupal.org/project/advagg) module. Beware that optimizations provided by this module may break your site, so you will likely need to make code changes.","unminified-css":'Ensure you have enabled "Aggregate CSS files" in the "Administration » Configuration » Development" page. You can also configure more advanced aggregation options through [additional modules](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=css+aggregation&solrsort=iss_project_release_usage+desc&op=Search) to speed up your site by concatenating, minifying, and compressing your CSS styles.',
"unminified-javascript":'Ensure you have enabled "Aggregate JavaScript files" in the "Administration » Configuration » Development" page. You can also configure more advanced aggregation options through [additional modules](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=javascript+aggregation&solrsort=iss_project_release_usage+desc&op=Search) to speed up your site by concatenating, minifying, and compressing your JavaScript assets.',"efficient-animated-content":"Consider uploading your GIF to a service which will make it available to embed as an HTML5 video.",
"uses-long-cache-ttl":'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/7/managing-site-performance-and-scalability/caching-to-improve-performance/caching-overview#s-drupal-performance-resources).',"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=optimize+images&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/docs/8/mobile-guide/responsive-images-in-drupal-8) provided from Drupal (available in Drupal 8 and above) for all images rendered on the site.",
"uses-responsive-images":"Ensure that you are using the native [Responsive Image Styles](https://www.drupal.org/docs/8/mobile-guide/responsive-images-in-drupal-8) provided from Drupal (available in Drupal 8 and above). Use the Responsive Image Styles when rendering image fields through view modes, views, or images uploaded through the WYSIWYG editor.","server-response-time":"Themes, modules, and server specifications all contribute to server response time. Consider finding a more optimized theme, carefully selecting an optimization module, and/or upgrading your server. Your hosting servers should make use of PHP opcode caching, memory-caching to reduce database query times such as Redis or Memcached, as well as optimized application logic to prepare pages faster.",
"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=dns-prefetch&solrsort=iss_project_release_usage+desc&op=Search) that provides facilities for user agent resource hints.","font-display":"Specify `@font-display` when defining custom fonts in your theme."}},{id:"ezoic",title:"Ezoic",
icon:'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>',UIStrings:{"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/speed) 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."}},{id:"joomla",title:"Joomla",
icon:'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 119l61.7 61.4 23.4-24.3-48.6-49.4"/></svg>',
UIStrings:{"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 provides 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 extensions](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 extension 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."}},{id:"magento",title:"Magento",
icon:'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>',UIStrings:{"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-preconnect":"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)."}},{id:"next.js",title:"Next.js",
icon:'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>',
UIStrings:{"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-image":'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)."}},{id:"nuxt",title:"Nuxt",icon:'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 124 124"><path fill="%2380EEC0" fill-rule="evenodd" d="M55.75 27.155c-3.222-5.54-11.278-5.54-14.5 0L6.134 87.535C2.912 93.075 6.94 100 13.384 100h27.413c-2.753-2.407-3.773-6.57-1.69-10.142L65.704 44.27 55.75 27.155Z" clip-rule="evenodd"/><path fill="%2300DC82" d="M78 40.4c2.667-4.533 9.333-4.533 12 0l29.06 49.4c2.667 4.533-.666 10.199-5.999 10.199H54.938c-5.333 0-8.666-5.666-6-10.199L78 40.4Z"/></svg>',UIStrings:{
"modern-image-formats":'Use the `nuxt/image` component and set `format="webp"`. [Learn more](https://image.nuxtjs.org/components/nuxt-img#format).',"offscreen-images":'Use the `nuxt/image` component and set `loading="lazy"` for offscreen images. [Learn more](https://image.nuxtjs.org/components/nuxt-img#loading).',"uses-optimized-images":"Use the `nuxt/image` component and set the appropriate `quality`. [Learn more](https://image.nuxtjs.org/components/nuxt-img#quality).","uses-responsive-images":"Use the `nuxt/image` component and set the appropriate `sizes`. [Learn more](https://image.nuxtjs.org/components/nuxt-img#sizes).","prioritize-lcp-image":"Use the `nuxt/image` component and specify `preload` for LCP image. [Learn more](https://image.nuxtjs.org/components/nuxt-img#preload).","unsized-images":"Use the `nuxt/image` component and specify explicit `width` and `height`. [Learn more](https://image.nuxtjs.org/components/nuxt-img#width--height)."}},{id:"octobercms",title:"October CMS",
icon:'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>',UIStrings:{
"unused-css-rules":"Consider reviewing the [plugins](https://octobercms.com/plugins) loading unused CSS on the website. 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 ability 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 can 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 script. 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."}},{id:"react",title:"React",
icon:'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>',
UIStrings:{"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).","unminified-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, minimize 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-effects) only until certain dependencies have changed if you are using the `Effect` hook to improve runtime performance.'}},{id:"wordpress",title:"WordPress",
icon:'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>',UIStrings:{
"unused-css-rules":"Consider reducing, or switching, the number of [WordPress plugins](https://wordpress.org/plugins/) loading unused CSS in your page. To identify plugins 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 also 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://wordpress.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":"Themes, plugins, and server specifications all contribute to server response time. Consider finding a more optimized theme, carefully selecting an optimization plugin, and/or upgrading your server."}},{id:"wp-rocket",title:"WP Rocket",
icon:'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 294 524"><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.306c1.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>',
UIStrings:{"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 Rocket'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":"Enable [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."}}];const Co=[{packId:"wordpress",requiredStacks:["js:wordpress"]},{packId:"wp-rocket",requiredStacks:["js:wp-rocket"]},{packId:"ezoic",requiredStacks:["js:ezoic"]},{packId:"drupal",requiredStacks:["js:drupal"]},{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"]}];function getStackPacks(e){if(!e)return[];const t=[];for(const n of e){const e=Co.find((e=>e.requiredStacks.includes(`${n.detector}:${n.id}`)))
;if(!e)continue;const a=So.find((t=>t.id===e.packId));if(!a){Log.warn("StackPacks",`'${e.packId}' stack pack was matched but is not found in stack-packs lib`);continue}const r=createIcuMessageFn(`node_modules/lighthouse-stack-packs/packs/${a.id}.js`,a.UIStrings),o={},i=a.UIStrings;for(const e in i)i[e]&&(o[e]=r(i[e]));t.push({id:a.id,title:a.title,iconDataURL:a.icon,descriptions:o})}return t}var _o="function"==typeof Object.create?function inherits(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:function inherits(e,t){e.super_=t;var TempCtor=function(){};TempCtor.prototype=t.prototype,e.prototype=new TempCtor,e.prototype.constructor=e},Ao=/%[sdj%]/g;function format$1(e){if(!isString(e)){for(var t=[],n=0;n<arguments.length;n++)t.push(inspect(arguments[n]));return t.join(" ")}n=1;for(var a=arguments,r=a.length,o=String(e).replace(Ao,(function(e){if("%%"===e)return"%";if(n>=r)return e;switch(e){case"%s":
return String(a[n++]);case"%d":return Number(a[n++]);case"%j":try{return JSON.stringify(a[n++])}catch(e){return"[Circular]"}default:return e}})),i=a[n];n<r;i=a[++n])isNull(i)||!isObject(i)?o+=" "+i:o+=" "+inspect(i);return o}function deprecate(t,n){if(isUndefined(e.process))return function(){return deprecate(t,n).apply(this,arguments)};var a=!1;return function deprecated(){return a||(console.error(n),a=!0),t.apply(this,arguments)}}var ko,Fo={};function debuglog(e){if(isUndefined(ko)&&(ko=""),e=e.toUpperCase(),!Fo[e])if(new RegExp("\\b"+e+"\\b","i").test(ko)){Fo[e]=function(){var t=format$1.apply(null,arguments);console.error("%s %d: %s",e,0,t)}}else Fo[e]=function(){};return Fo[e]}function inspect(e,t){var n={seen:[],stylize:stylizeNoColor};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),isBoolean(t)?n.showHidden=t:t&&_extend(n,t),isUndefined(n.showHidden)&&(n.showHidden=!1),isUndefined(n.depth)&&(n.depth=2),
isUndefined(n.colors)&&(n.colors=!1),isUndefined(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=stylizeWithColor),formatValue(n,e,n.depth)}function stylizeWithColor(e,t){var n=inspect.styles[t];return n?"["+inspect.colors[n][0]+"m"+e+"["+inspect.colors[n][1]+"m":e}function stylizeNoColor(e,t){return e}function formatValue(e,t,n){if(e.customInspect&&t&&isFunction(t.inspect)&&t.inspect!==inspect&&(!t.constructor||t.constructor.prototype!==t)){var a=t.inspect(n,e);return isString(a)||(a=formatValue(e,a,n)),a}var r=function formatPrimitive(e,t){if(isUndefined(t))return e.stylize("undefined","undefined");if(isString(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(isNumber$1(t))return e.stylize(""+t,"number");if(isBoolean(t))return e.stylize(""+t,"boolean");if(isNull(t))return e.stylize("null","null")}(e,t);if(r)return r;var o=Object.keys(t),i=function arrayToHash(e){var t={}
;return e.forEach((function(e,n){t[e]=!0})),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(t)),isError(t)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return formatError(t);if(0===o.length){if(isFunction(t)){var s=t.name?": "+t.name:"";return e.stylize("[Function"+s+"]","special")}if(isRegExp(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(isDate(t))return e.stylize(Date.prototype.toString.call(t),"date");if(isError(t))return formatError(t)}var c,l="",u=!1,d=["{","}"];(isArray$1(t)&&(u=!0,d=["[","]"]),isFunction(t))&&(l=" [Function"+(t.name?": "+t.name:"")+"]");return isRegExp(t)&&(l=" "+RegExp.prototype.toString.call(t)),isDate(t)&&(l=" "+Date.prototype.toUTCString.call(t)),isError(t)&&(l=" "+formatError(t)),0!==o.length||u&&0!=t.length?n<0?isRegExp(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special"):(e.seen.push(t),c=u?function formatArray(e,t,n,a,r){
for(var o=[],i=0,s=t.length;i<s;++i)hasOwnProperty$1(t,String(i))?o.push(formatProperty(e,t,n,a,String(i),!0)):o.push("");return r.forEach((function(r){r.match(/^\d+$/)||o.push(formatProperty(e,t,n,a,r,!0))})),o}(e,t,n,i,o):o.map((function(a){return formatProperty(e,t,n,i,a,u)})),e.seen.pop(),function reduceToSingleString(e,t,n){if(e.reduce((function(e,t){return t.indexOf("\n"),e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1];return n[0]+t+" "+e.join(", ")+" "+n[1]}(c,l,d)):d[0]+l+d[1]}function formatError(e){return"["+Error.prototype.toString.call(e)+"]"}function formatProperty(e,t,n,a,r,o){var i,s,c;if((c=Object.getOwnPropertyDescriptor(t,r)||{value:t[r]}).get?s=c.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):c.set&&(s=e.stylize("[Setter]","special")),hasOwnProperty$1(a,r)||(i="["+r+"]"),
s||(e.seen.indexOf(c.value)<0?(s=isNull(n)?formatValue(e,c.value,null):formatValue(e,c.value,n-1)).indexOf("\n")>-1&&(s=o?s.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+s.split("\n").map((function(e){return" "+e})).join("\n")):s=e.stylize("[Circular]","special")),isUndefined(i)){if(o&&r.match(/^\d+$/))return s;(i=JSON.stringify(""+r)).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+": "+s}function isArray$1(e){return Array.isArray(e)}function isBoolean(e){return"boolean"==typeof e}function isNull(e){return null===e}function isNumber$1(e){return"number"==typeof e}function isString(e){return"string"==typeof e}function isUndefined(e){return void 0===e}function isRegExp(e){return isObject(e)&&"[object RegExp]"===objectToString(e)}function isObject(e){return"object"==typeof e&&null!==e}function isDate(e){
return isObject(e)&&"[object Date]"===objectToString(e)}function isError(e){return isObject(e)&&("[object Error]"===objectToString(e)||e instanceof Error)}function isFunction(e){return"function"==typeof e}function objectToString(e){return Object.prototype.toString.call(e)}function pad(e){return e<10?"0"+e.toString(10):e.toString(10)}inspect.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]},inspect.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};var Ro=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function timestamp(){var e=new Date,t=[pad(e.getHours()),pad(e.getMinutes()),pad(e.getSeconds())].join(":");return[e.getDate(),Ro[e.getMonth()],t].join(" ")}function _extend(e,t){if(!t||!isObject(t))return e
;for(var n=Object.keys(t),a=n.length;a--;)e[n[a]]=t[n[a]];return e}function hasOwnProperty$1(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var xo={inherits:_o,_extend,log:function log(){console.log("%s - %s",timestamp(),format$1.apply(null,arguments))},isBuffer:function isBuffer(e){return Buffer$1.isBuffer(e)},isPrimitive:function isPrimitive(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},isFunction,isError,isDate,isObject,isRegExp,isUndefined,isSymbol:function isSymbol(e){return"symbol"==typeof e},isString,isNumber:isNumber$1,isNullOrUndefined:function isNullOrUndefined(e){return null==e},isNull,isBoolean,isArray:isArray$1,inspect,deprecate,format:format$1,debuglog};function BufferList(){this.head=null,this.tail=null,this.length=0}BufferList.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},BufferList.prototype.unshift=function(e){var t={
data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},BufferList.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},BufferList.prototype.clear=function(){this.head=this.tail=null,this.length=0},BufferList.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n},BufferList.prototype.concat=function(e){if(0===this.length)return Buffer$1.alloc(0);if(1===this.length)return this.head.data;for(var t=Buffer$1.allocUnsafe(e>>>0),n=this.head,a=0;n;)n.data.copy(t,a),a+=n.data.length,n=n.next;return t};var Io=Buffer$1.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}};function StringDecoder(e){
switch(this.encoding=(e||"utf8").toLowerCase().replace(/[-_]/,""),function assertEncoding(e){if(e&&!Io(e))throw new Error("Unknown encoding: "+e)}(e),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=utf16DetectIncompleteChar;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=base64DetectIncompleteChar;break;default:return void(this.write=passThroughWrite)}this.charBuffer=new Buffer$1(6),this.charReceived=0,this.charLength=0}function passThroughWrite(e){return e.toString(this.encoding)}function utf16DetectIncompleteChar(e){this.charReceived=e.length%2,this.charLength=this.charReceived?2:0}function base64DetectIncompleteChar(e){this.charReceived=e.length%3,this.charLength=this.charReceived?3:0}StringDecoder.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"";if(e=e.slice(n,e.length),!((r=(t=this.charBuffer.slice(0,this.charLength).toString(this.encoding)).charCodeAt(t.length-1))>=55296&&r<=56319)){if(this.charReceived=this.charLength=0,0===e.length)return t;break}this.charLength+=this.surrogateSize,t=""}this.detectIncompleteChar(e);var a=e.length;this.charLength&&(e.copy(this.charBuffer,0,e.length-this.charReceived,a),a-=this.charReceived);var r;a=(t+=e.toString(this.encoding,0,a)).length-1;if((r=t.charCodeAt(a))>=55296&&r<=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,a)}return t},StringDecoder.prototype.detectIncompleteChar=function(e){for(var t=e.length>=3?3:e.length;t>0;t--){var n=e[e.length-t];if(1==t&&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},StringDecoder.prototype.end=function(e){var t="";if(e&&e.length&&(t=this.write(e)),this.charReceived){var n=this.charReceived,a=this.charBuffer,r=this.encoding;t+=a.slice(0,n).toString(r)}return t},Readable.ReadableState=ReadableState;var No=debuglog("stream");function ReadableState(e,t){e=e||{},this.objectMode=!!e.objectMode,t instanceof Duplex&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var n=e.highWaterMark,a=this.objectMode?16:16384;this.highWaterMark=n||0===n?n:a,this.highWaterMark=~~this.highWaterMark,this.buffer=new BufferList,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 StringDecoder(e.encoding),this.encoding=e.encoding)}function Readable(e){if(!(this instanceof Readable))return new Readable(e);this._readableState=new ReadableState(e,this),this.readable=!0,e&&"function"==typeof e.read&&(this._read=e.read),EventEmitter.call(this)}function readableAddChunk(e,t,n,a,r){var o=function chunkInvalid(e,t){var n=null;Buffer$1.isBuffer(t)||"string"==typeof t||null==t||e.objectMode||(n=new TypeError("Invalid non-string/buffer chunk"));return n}(t,n);if(o)e.emit("error",o);else if(null===n)t.reading=!1,function onEofChunk(e,t){if(t.ended)return;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,emitReadable(e)}(e,t);else if(t.objectMode||n&&n.length>0)if(t.ended&&!r){var i=new Error("stream.push() after EOF");e.emit("error",i)}else if(t.endEmitted&&r){var s=new Error("stream.unshift() after end event");e.emit("error",s)}else{var c;!t.decoder||r||a||(n=t.decoder.write(n),
c=!t.objectMode&&0===n.length),r||(t.reading=!1),c||(t.flowing&&0===t.length&&!t.sync?(e.emit("data",n),e.read(0)):(t.length+=t.objectMode?1:n.length,r?t.buffer.unshift(n):t.buffer.push(n),t.needReadable&&emitReadable(e))),function maybeReadMore(e,t){t.readingMore||(t.readingMore=!0,nextTick(maybeReadMore_,e,t))}(e,t)}else r||(t.reading=!1);return function needMoreData(e){return!e.ended&&(e.needReadable||e.length<e.highWaterMark||0===e.length)}(t)}_o(Readable,EventEmitter),Readable.prototype.push=function(e,t){var n=this._readableState;return n.objectMode||"string"!=typeof e||(t=t||n.defaultEncoding)!==n.encoding&&(e=Buffer$1.from(e,t),t=""),readableAddChunk(this,n,e,t,!1)},Readable.prototype.unshift=function(e){return readableAddChunk(this,this._readableState,e,"",!0)},Readable.prototype.isPaused=function(){return!1===this._readableState.flowing},Readable.prototype.setEncoding=function(e){return this._readableState.decoder=new StringDecoder(e),this._readableState.encoding=e,this}
;var Lo=8388608;function howMuchToRead(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!=e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=function computeNewHighWaterMark(e){return e>=Lo?e=Lo:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function emitReadable(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(No("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?nextTick(emitReadable_,e):emitReadable_(e))}function emitReadable_(e){No("emit readable"),e.emit("readable"),flow(e)}function maybeReadMore_(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length<t.highWaterMark&&(No("maybeReadMore read 0"),e.read(0),n!==t.length);)n=t.length;t.readingMore=!1}function nReadingNextTick(e){No("readable nexttick read 0"),e.read(0)}function resume_(e,t){t.reading||(No("resume read 0"),e.read(0)),t.resumeScheduled=!1,t.awaitDrain=0,
e.emit("resume"),flow(e),t.flowing&&!t.reading&&e.read(0)}function flow(e){var t=e._readableState;for(No("flow",t.flowing);t.flowing&&null!==e.read(););}function fromList(e,t){return 0===t.length?null:(t.objectMode?n=t.buffer.shift():!e||e>=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=function fromListPartial(e,t,n){var a;e<t.head.data.length?(a=t.head.data.slice(0,e),t.head.data=t.head.data.slice(e)):a=e===t.head.data.length?t.shift():n?function copyFromBufferString(e,t){var n=t.head,a=1,r=n.data;e-=r.length;for(;n=n.next;){var o=n.data,i=e>o.length?o.length:e;if(i===o.length?r+=o:r+=o.slice(0,e),0===(e-=i)){i===o.length?(++a,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=o.slice(i));break}++a}return t.length-=a,r}(e,t):function copyFromBuffer(e,t){var n=Buffer$1.allocUnsafe(e),a=t.head,r=1;a.data.copy(n),e-=a.data.length;for(;a=a.next;){var o=a.data,i=e>o.length?o.length:e
;if(o.copy(n,n.length-e,0,i),0===(e-=i)){i===o.length?(++r,a.next?t.head=a.next:t.head=t.tail=null):(t.head=a,a.data=o.slice(i));break}++r}return t.length-=r,n}(e,t);return a}(e,t.buffer,t.decoder),n);var n}function endReadable(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,nextTick(endReadableNT,t,e))}function endReadableNT(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function indexOf(e,t){for(var n=0,a=e.length;n<a;n++)if(e[n]===t)return n;return-1}function nop(){}function WriteReq(e,t,n){this.chunk=e,this.encoding=t,this.callback=n,this.next=null}function WritableState(e,t){Object.defineProperty(this,"buffer",{get:deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")}),e=e||{},this.objectMode=!!e.objectMode,t instanceof Duplex&&(this.objectMode=this.objectMode||!!e.writableObjectMode)
;var n=e.highWaterMark,a=this.objectMode?16:16384;this.highWaterMark=n||0===n?n:a,this.highWaterMark=~~this.highWaterMark,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1;var r=!1===e.decodeStrings;this.decodeStrings=!r,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function onwrite(e,t){var n=e._writableState,a=n.sync,r=n.writecb;if(function onwriteStateUpdate(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function onwriteError(e,t,n,a,r){--t.pendingcb,n?nextTick(r,a):r(a);e._writableState.errorEmitted=!0,e.emit("error",a)}(e,n,a,t,r);else{var o=needFinish(n);o||n.corked||n.bufferProcessing||!n.bufferedRequest||clearBuffer(e,n),a?nextTick(afterWrite,e,n,o,r):afterWrite(e,n,o,r)}}(t,e)},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 CorkedRequest(this)}function Writable(e){if(!(this instanceof Writable||this instanceof Duplex))return new Writable(e);this._writableState=new WritableState(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev)),EventEmitter.call(this)}function doWrite(e,t,n,a,r,o,i){t.writelen=a,t.writecb=i,t.writing=!0,t.sync=!0,n?e._writev(r,t.onwrite):e._write(r,o,t.onwrite),t.sync=!1}function afterWrite(e,t,n,a){n||function onwriteDrain(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,a(),finishMaybe(e,t)}function clearBuffer(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var a=t.bufferedRequestCount,r=new Array(a),o=t.corkedRequestsFree;o.entry=n;for(var i=0;n;)r[i]=n,n=n.next,i+=1;doWrite(e,t,!0,t.length,r,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,
o.next=null):t.corkedRequestsFree=new CorkedRequest(t)}else{for(;n;){var s=n.chunk,c=n.encoding,l=n.callback;if(doWrite(e,t,!1,t.objectMode?1:s.length,s,c,l),n=n.next,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequestCount=0,t.bufferedRequest=n,t.bufferProcessing=!1}function needFinish(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function prefinish(e,t){t.prefinished||(t.prefinished=!0,e.emit("prefinish"))}function finishMaybe(e,t){var n=needFinish(t);return n&&(0===t.pendingcb?(prefinish(e,t),t.finished=!0,e.emit("finish")):prefinish(e,t)),n}function CorkedRequest(e){var t=this;this.next=null,this.entry=null,this.finish=function(n){var a=t.entry;for(t.entry=null;a;){var r=a.callback;e.pendingcb--,r(n),a=a.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}}Readable.prototype.read=function(e){No("read",e),e=parseInt(e,10);var t=this._readableState,n=e;if(0!==e&&(t.emittedReadable=!1),
0===e&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return No("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?endReadable(this):emitReadable(this),null;if(0===(e=howMuchToRead(e,t))&&t.ended)return 0===t.length&&endReadable(this),null;var a,r=t.needReadable;return No("need readable",r),(0===t.length||t.length-e<t.highWaterMark)&&No("length less than watermark",r=!0),t.ended||t.reading?No("reading or ended",r=!1):r&&(No("do read"),t.reading=!0,t.sync=!0,0===t.length&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1,t.reading||(e=howMuchToRead(n,t))),null===(a=e>0?fromList(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&endReadable(this)),null!==a&&this.emit("data",a),a},Readable.prototype._read=function(e){this.emit("error",new Error("not implemented"))},Readable.prototype.pipe=function(e,t){var n=this,a=this._readableState;switch(a.pipesCount){case 0:a.pipes=e;break;case 1:a.pipes=[a.pipes,e];break
;default:a.pipes.push(e)}a.pipesCount+=1,No("pipe count=%d opts=%j",a.pipesCount,t);var r=!t||!1!==t.end?onend:cleanup;function onunpipe(e){No("onunpipe"),e===n&&cleanup()}function onend(){No("onend"),e.end()}a.endEmitted?nextTick(r):n.once("end",r),e.on("unpipe",onunpipe);var o=function pipeOnDrain(e){return function(){var t=e._readableState;No("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&e.listeners("data").length&&(t.flowing=!0,flow(e))}}(n);e.on("drain",o);var i=!1;function cleanup(){No("cleanup"),e.removeListener("close",onclose),e.removeListener("finish",onfinish),e.removeListener("drain",o),e.removeListener("error",onerror),e.removeListener("unpipe",onunpipe),n.removeListener("end",onend),n.removeListener("end",cleanup),n.removeListener("data",ondata),i=!0,!a.awaitDrain||e._writableState&&!e._writableState.needDrain||o()}var s=!1;function ondata(t){No("ondata"),s=!1,
!1!==e.write(t)||s||((1===a.pipesCount&&a.pipes===e||a.pipesCount>1&&-1!==indexOf(a.pipes,e))&&!i&&(No("false write response, pause",n._readableState.awaitDrain),n._readableState.awaitDrain++,s=!0),n.pause())}function onerror(t){No("onerror",t),unpipe(),e.removeListener("error",onerror),0===function listenerCount(e,t){return e.listeners(t).length}(e,"error")&&e.emit("error",t)}function onclose(){e.removeListener("finish",onfinish),unpipe()}function onfinish(){No("onfinish"),e.removeListener("close",onclose),unpipe()}function unpipe(){No("unpipe"),n.unpipe(e)}return n.on("data",ondata),function prependListener(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(e,"error",onerror),e.once("close",onclose),e.once("finish",onfinish),e.emit("pipe",n),a.flowing||(No("pipe resume"),n.resume()),e},Readable.prototype.unpipe=function(e){
var t=this._readableState;if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(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,a=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var r=0;r<a;r++)n[r].emit("unpipe",this);return this}var o=indexOf(t.pipes,e);return-1===o||(t.pipes.splice(o,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit("unpipe",this)),this},Readable.prototype.on=function(e,t){var n=EventEmitter.prototype.on.call(this,e,t);if("data"===e)!1!==this._readableState.flowing&&this.resume();else if("readable"===e){var a=this._readableState;a.endEmitted||a.readableListening||(a.readableListening=a.needReadable=!0,a.emittedReadable=!1,a.reading?a.length&&emitReadable(this):nextTick(nReadingNextTick,this))}return n},Readable.prototype.addListener=Readable.prototype.on,Readable.prototype.resume=function(){var e=this._readableState;return e.flowing||(No("resume"),e.flowing=!0,
function resume(e,t){t.resumeScheduled||(t.resumeScheduled=!0,nextTick(resume_,e,t))}(this,e)),this},Readable.prototype.pause=function(){return No("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(No("pause"),this._readableState.flowing=!1,this.emit("pause")),this},Readable.prototype.wrap=function(e){var t=this._readableState,n=!1,a=this;for(var r in e.on("end",(function(){if(No("wrapped end"),t.decoder&&!t.ended){var e=t.decoder.end();e&&e.length&&a.push(e)}a.push(null)})),e.on("data",(function(r){(No("wrapped data"),t.decoder&&(r=t.decoder.write(r)),t.objectMode&&null==r)||(t.objectMode||r&&r.length)&&(a.push(r)||(n=!0,e.pause()))})),e)void 0===this[r]&&"function"==typeof e[r]&&(this[r]=function(t){return function(){return e[t].apply(e,arguments)}}(r));return function forEach(e,t){for(var n=0,a=e.length;n<a;n++)t(e[n],n)}(["error","close","destroy","pause","resume"],(function(t){e.on(t,a.emit.bind(a,t))})),a._read=function(t){
No("wrapped _read",t),n&&(n=!1,e.resume())},a},Readable._fromList=fromList,Writable.WritableState=WritableState,_o(Writable,EventEmitter),WritableState.prototype.getBuffer=function writableStateGetBuffer(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},Writable.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},Writable.prototype.write=function(e,t,n){var a=this._writableState,r=!1;return"function"==typeof t&&(n=t,t=null),Buffer$1.isBuffer(e)?t="buffer":t||(t=a.defaultEncoding),"function"!=typeof n&&(n=nop),a.ended?function writeAfterEnd(e,t){var n=new Error("write after end");e.emit("error",n),nextTick(t,n)}(this,n):function validChunk(e,t,n,a){var r=!0,o=!1;return null===n?o=new TypeError("May not write null values to stream"):Buffer$1.isBuffer(n)||"string"==typeof n||void 0===n||t.objectMode||(o=new TypeError("Invalid non-string/buffer chunk")),o&&(e.emit("error",o),nextTick(a,o),r=!1),r}(this,a,e,n)&&(a.pendingcb++,
r=function writeOrBuffer(e,t,n,a,r){n=function decodeChunk(e,t,n){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=Buffer$1.from(t,n));return t}(t,n,a),Buffer$1.isBuffer(n)&&(a="buffer");var o=t.objectMode?1:n.length;t.length+=o;var i=t.length<t.highWaterMark;i||(t.needDrain=!0);if(t.writing||t.corked){var s=t.lastBufferedRequest;t.lastBufferedRequest=new WriteReq(n,a,r),s?s.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else doWrite(e,t,!1,o,n,a,r);return i}(this,a,e,t,n)),r},Writable.prototype.cork=function(){this._writableState.corked++},Writable.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.finished||e.bufferProcessing||!e.bufferedRequest||clearBuffer(this,e))},Writable.prototype.setDefaultEncoding=function setDefaultEncoding(e){if("string"==typeof e&&(e=e.toLowerCase()),
!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Writable.prototype._write=function(e,t,n){n(new Error("not implemented"))},Writable.prototype._writev=null,Writable.prototype.end=function(e,t,n){var a=this._writableState;"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),a.corked&&(a.corked=1,this.uncork()),a.ending||a.finished||function endWritable(e,t,n){t.ending=!0,finishMaybe(e,t),n&&(t.finished?nextTick(n):e.once("finish",n));t.ended=!0,e.writable=!1}(this,a,n)},_o(Duplex,Readable);for(var Mo=Object.keys(Writable.prototype),Po=0;Po<Mo.length;Po++){var Oo=Mo[Po];Duplex.prototype[Oo]||(Duplex.prototype[Oo]=Writable.prototype[Oo])}function Duplex(e){if(!(this instanceof Duplex))return new Duplex(e);Readable.call(this,e),Writable.call(this,e),
e&&!1===e.readable&&(this.readable=!1),e&&!1===e.writable&&(this.writable=!1),this.allowHalfOpen=!0,e&&!1===e.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",onend)}function onend(){this.allowHalfOpen||this._writableState.ended||nextTick(onEndNT,this)}function onEndNT(e){e.end()}function TransformState(e){this.afterTransform=function(t,n){return function afterTransform(e,t,n){var a=e._transformState;a.transforming=!1;var r=a.writecb;if(!r)return e.emit("error",new Error("no writecb in Transform class"));a.writechunk=null,a.writecb=null,null!=n&&e.push(n);r(t);var o=e._readableState;o.reading=!1,(o.needReadable||o.length<o.highWaterMark)&&e._read(o.highWaterMark)}(e,t,n)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null,this.writeencoding=null}function Transform(e){if(!(this instanceof Transform))return new Transform(e);Duplex.call(this,e),this._transformState=new TransformState(this);var t=this;this._readableState.needReadable=!0,
this._readableState.sync=!1,e&&("function"==typeof e.transform&&(this._transform=e.transform),"function"==typeof e.flush&&(this._flush=e.flush)),this.once("prefinish",(function(){"function"==typeof this._flush?this._flush((function(e){done(t,e)})):done(t)}))}function done(e,t){if(t)return e.emit("error",t);var n=e._writableState,a=e._transformState;if(n.length)throw new Error("Calling transform done when ws.length != 0");if(a.transforming)throw new Error("Calling transform done when still transforming");return e.push(null)}function PassThrough(e){if(!(this instanceof PassThrough))return new PassThrough(e);Transform.call(this,e)}function Stream(){EventEmitter.call(this)}_o(Transform,Duplex),Transform.prototype.push=function(e,t){return this._transformState.needTransform=!1,Duplex.prototype.push.call(this,e,t)},Transform.prototype._transform=function(e,t,n){throw new Error("Not implemented")},Transform.prototype._write=function(e,t,n){var a=this._transformState;if(a.writecb=n,
a.writechunk=e,a.writeencoding=t,!a.transforming){var r=this._readableState;(a.needTransform||r.needReadable||r.length<r.highWaterMark)&&this._read(r.highWaterMark)}},Transform.prototype._read=function(e){var t=this._transformState;null!==t.writechunk&&t.writecb&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0},_o(PassThrough,Transform),PassThrough.prototype._transform=function(e,t,n){n(null,e)},_o(Stream,EventEmitter),Stream.Readable=Readable,Stream.Writable=Writable,Stream.Duplex=Duplex,Stream.Transform=Transform,Stream.PassThrough=PassThrough,Stream.Stream=Stream,Stream.prototype.pipe=function(e,t){var n=this;function ondata(t){e.writable&&!1===e.write(t)&&n.pause&&n.pause()}function ondrain(){n.readable&&n.resume&&n.resume()}n.on("data",ondata),e.on("drain",ondrain),e._isStdio||t&&!1===t.end||(n.on("end",onend),n.on("close",onclose));var a=!1;function onend(){a||(a=!0,e.end())}function onclose(){a||(a=!0,
"function"==typeof e.destroy&&e.destroy())}function onerror(e){if(cleanup(),0===EventEmitter.listenerCount(this,"error"))throw e}function cleanup(){n.removeListener("data",ondata),e.removeListener("drain",ondrain),n.removeListener("end",onend),n.removeListener("close",onclose),n.removeListener("error",onerror),e.removeListener("error",onerror),n.removeListener("end",cleanup),n.removeListener("close",cleanup),e.removeListener("close",cleanup)}return n.on("error",onerror),e.on("error",onerror),n.on("end",cleanup),n.on("close",cleanup),e.on("close",cleanup),e.emit("pipe",n),e};const Bo=1460;class TcpConnection{constructor(e,t,n=0,a=!0,r=!1){this._warmed=!1,this._ssl=a,this._h2=r,this._rtt=e,this._throughput=t,this._serverLatency=n,this._congestionWindow=10,this._h2OverflowBytesDownloaded=0}static maximumSaturatedConnections(e,t){const n=8*(1460*(1e3/e));return Math.floor(t/n)}_computeMaximumCongestionWindowInSegments(){const e=this._throughput/8*(this._rtt/1e3);return Math.floor(e/Bo)}
setThroughput(e){this._throughput=e}setCongestionWindow(e){this._congestionWindow=e}setWarmed(e){this._warmed=e}isWarm(){return this._warmed}isH2(){return this._h2}get congestionWindow(){return this._congestionWindow}setH2OverflowBytesDownloaded(e){this._h2&&(this._h2OverflowBytesDownloaded=e)}clone(){return Object.assign(new TcpConnection(this._rtt,this._throughput),this)}simulateDownloadUntil(e,t){const{timeAlreadyElapsed:n=0,maximumTimeToElapse:a=1/0,dnsResolutionTime:r=0}=t||{};this._warmed&&this._h2&&(e-=this._h2OverflowBytesDownloaded);const o=this._rtt,i=o/2,s=this._computeMaximumCongestionWindowInSegments();let c=i;this._warmed||(c=r+i+i+i+(this._ssl?o:0));let l=Math.ceil(c/o),u=c+this._serverLatency+i;this._warmed&&this._h2&&(u=0);const d=Math.max(u-n,0),m=a-d;let p=Math.min(this._congestionWindow,s),h=0;d>0?h=p*Bo:l=0;let f=0,y=e-h;for(;y>0&&f<=m;){l++,f+=o,p=Math.max(Math.min(s,2*p),1);const e=p*Bo;h+=e,y-=e}
const b=d+f,v=this._h2?Math.max(h-e,0):0,w=Math.max(Math.min(h,e),0);let D;return D=this._warmed?this._h2?{timeToFirstByte:u}:{connectionTime:c,timeToFirstByte:u}:{dnsResolutionTime:r,connectionTime:c-r,sslTime:this._ssl?o:void 0,timeToFirstByte:u},{roundTrips:l,timeElapsed:b,bytesDownloaded:w,extraBytesDownloaded:v,congestionWindow:p,connectionTiming:D}}}const Uo=["https","wss"];class ConnectionPool{constructor(e,t){this._options=t,this._records=e,this._connectionsByOrigin=new Map,this._connectionsByRecord=new Map,this._connectionsInUse=new Set,this._connectionReusedByRequestId=NetworkAnalyzer.estimateIfConnectionWasReused(e,{forceCoarseEstimates:!0}),this._initializeConnections()}connectionsInUse(){return Array.from(this._connectionsInUse)}_initializeConnections(){const e=this._connectionReusedByRequestId,t=this._options.additionalRttByOrigin,n=this._options.serverResponseTimeByOrigin,a=NetworkAnalyzer.groupByOrigin(this._records);for(const[r,o]of a.entries()){
const a=[],i=t.get(r)||0,s=n.get(r)||30;for(const t of o){if(e.get(t.requestId))continue;const n=Uo.includes(t.parsedURL.scheme),r="h2"===t.protocol,o=new TcpConnection(this._options.rtt+i,this._options.throughput,s,n,r);a.push(o)}if(!a.length)throw new Error(`Could not find a connection for origin: ${r}`);const c=a[0].isH2()?1:6;for(;a.length<c;)a.push(a[0].clone());this._connectionsByOrigin.set(r,a)}}_findAvailableConnectionWithLargestCongestionWindow(e,t){const{ignoreConnectionReused:n,observedConnectionWasReused:a}=t;let r=null;for(let t=0;t<e.length;t++){const o=e[t];if(!n&&o._warmed!==a)continue;if(this._connectionsInUse.has(o))continue;const i=r?.congestionWindow||-1/0;o.congestionWindow>i&&(r=o)}return r}acquire(e,t={}){if(this._connectionsByRecord.has(e))throw new Error("Record already has a connection")
;const n=e.parsedURL.securityOrigin,a=!!this._connectionReusedByRequestId.get(e.requestId),r=this._connectionsByOrigin.get(n)||[],o=this._findAvailableConnectionWithLargestCongestionWindow(r,{ignoreConnectionReused:t.ignoreConnectionReused,observedConnectionWasReused:a});return o?(this._connectionsInUse.add(o),this._connectionsByRecord.set(e,o),o):null}acquireActiveConnectionFromRecord(e){const t=this._connectionsByRecord.get(e);if(!t)throw new Error("Could not find an active connection for record");return t}release(e){const t=this._connectionsByRecord.get(e);this._connectionsByRecord.delete(e),this._connectionsInUse.delete(t)}}class DNSCache{constructor({rtt:e}){this._rtt=e,this._resolvedDomainNames=new Map}getTimeUntilResolution(e,t){const{requestedAt:n=0,shouldUpdateCache:a=!1}=t||{},r=e.parsedURL.host,o=this._resolvedDomainNames.get(r);let i=this._rtt*DNSCache.RTT_MULTIPLIER;if(o){const e=Math.max(o.resolvedAt-n,0);i=Math.min(e,i)}const s=n+i
;return a&&this._updateCacheResolvedAtIfNeeded(e,s),i}_updateCacheResolvedAtIfNeeded(e,t){const n=e.parsedURL.host,a=this._resolvedDomainNames.get(n)||{resolvedAt:t};a.resolvedAt=Math.min(a.resolvedAt,t),this._resolvedDomainNames.set(n,a)}setResolvedAt(e,t){this._resolvedDomainNames.set(e,{resolvedAt:t})}}DNSCache.RTT_MULTIPLIER=2;class SimulatorTimingMap{constructor(){this._nodeTimings=new Map}getNodes(){return Array.from(this._nodeTimings.keys())}setReadyToStart(e,t){this._nodeTimings.set(e,t)}setInProgress(e,t){const n={...this.getQueued(e),startTime:t.startTime,timeElapsed:0};this._nodeTimings.set(e,e.type===BaseNode.TYPES.NETWORK?{...n,timeElapsedOvershoot:0,bytesDownloaded:0}:n)}setCompleted(e,t){const n={...this.getInProgress(e),endTime:t.endTime,connectionTiming:t.connectionTiming};this._nodeTimings.set(e,n)}setCpu(e,t){const n={...this.getCpuStarted(e),timeElapsed:t.timeElapsed};this._nodeTimings.set(e,n)}setCpuEstimated(e,t){const n={...this.getCpuStarted(e),
estimatedTimeElapsed:t.estimatedTimeElapsed};this._nodeTimings.set(e,n)}setNetwork(e,t){const n={...this.getNetworkStarted(e),timeElapsed:t.timeElapsed,timeElapsedOvershoot:t.timeElapsedOvershoot,bytesDownloaded:t.bytesDownloaded};this._nodeTimings.set(e,n)}setNetworkEstimated(e,t){const n={...this.getNetworkStarted(e),estimatedTimeElapsed:t.estimatedTimeElapsed};this._nodeTimings.set(e,n)}getQueued(e){const t=this._nodeTimings.get(e);if(!t)throw new Error(`Node ${e.id} not yet queued`);return t}getCpuStarted(e){const t=this._nodeTimings.get(e);if(!t)throw new Error(`Node ${e.id} not yet queued`);if(!("startTime"in t))throw new Error(`Node ${e.id} not yet started`);if("bytesDownloaded"in t)throw new Error(`Node ${e.id} timing not valid`);return t}getNetworkStarted(e){const t=this._nodeTimings.get(e);if(!t)throw new Error(`Node ${e.id} not yet queued`);if(!("startTime"in t))throw new Error(`Node ${e.id} not yet started`)
;if(!("bytesDownloaded"in t))throw new Error(`Node ${e.id} timing not valid`);return t}getInProgress(e){const t=this._nodeTimings.get(e);if(!t)throw new Error(`Node ${e.id} not yet queued`);if(!("startTime"in t))throw new Error(`Node ${e.id} not yet started`);if(!("estimatedTimeElapsed"in t))throw new Error(`Node ${e.id} not yet in progress`);return t}getCompleted(e){const t=this._nodeTimings.get(e);if(!t)throw new Error(`Node ${e.id} not yet queued`);if(!("startTime"in t))throw new Error(`Node ${e.id} not yet started`);if(!("estimatedTimeElapsed"in t))throw new Error(`Node ${e.id} not yet in progress`);if(!("endTime"in t))throw new Error(`Node ${e.id} not yet completed`);return t}}const jo=Gr.mobileSlow4G,zo={NotReadyToStart:0,ReadyToStart:1,InProgress:2,Complete:3},qo={VeryHigh:0,High:.25,Medium:.5,Low:1,VeryLow:2},$o=new Map;class Simulator{constructor(e){if(this._options=Object.assign({rtt:jo.rttMs,throughput:1024*jo.throughputKbps,maximumConcurrentRequests:10,
cpuSlowdownMultiplier:jo.cpuSlowdownMultiplier,layoutTaskMultiplier:.5,additionalRttByOrigin:new Map,serverResponseTimeByOrigin:new Map},e),this._rtt=this._options.rtt,this._throughput=this._options.throughput,this._maximumConcurrentRequests=Math.max(Math.min(TcpConnection.maximumSaturatedConnections(this._rtt,this._throughput),this._options.maximumConcurrentRequests),1),this._cpuSlowdownMultiplier=this._options.cpuSlowdownMultiplier,this._layoutTaskMultiplier=this._cpuSlowdownMultiplier*this._options.layoutTaskMultiplier,this._cachedNodeListByStartPosition=[],this._flexibleOrdering=!1,this._nodeTimings=new SimulatorTimingMap,this._numberInProgressByType=new Map,this._nodes={},this._dns=new DNSCache({rtt:this._rtt}),this._connectionPool=null,!Number.isFinite(this._rtt))throw new Error(`Invalid rtt ${this._rtt}`);if(!Number.isFinite(this._throughput))throw new Error(`Invalid rtt ${this._throughput}`)}get rtt(){return this._rtt}_initializeConnectionPool(e){const t=[]
;e.getRootNode().traverse((e=>{e.type===BaseNode.TYPES.NETWORK&&t.push(e.record)})),this._connectionPool=new ConnectionPool(t,this._options)}_initializeAuxiliaryData(){this._nodeTimings=new SimulatorTimingMap,this._numberInProgressByType=new Map,this._nodes={},this._cachedNodeListByStartPosition=[];for(const e of Object.values(zo))this._nodes[e]=new Set}_numberInProgress(e){return this._numberInProgressByType.get(e)||0}_markNodeAsReadyToStart(e,t){const n=Simulator._computeNodeStartPosition(e),a=this._cachedNodeListByStartPosition.findIndex((e=>Simulator._computeNodeStartPosition(e)>n)),r=-1===a?this._cachedNodeListByStartPosition.length:a;this._cachedNodeListByStartPosition.splice(r,0,e),this._nodes[zo.ReadyToStart].add(e),this._nodes[zo.NotReadyToStart].delete(e),this._nodeTimings.setReadyToStart(e,{queuedTime:t})}_markNodeAsInProgress(e,t){const n=this._cachedNodeListByStartPosition.indexOf(e);this._cachedNodeListByStartPosition.splice(n,1),this._nodes[zo.InProgress].add(e),
this._nodes[zo.ReadyToStart].delete(e),this._numberInProgressByType.set(e.type,this._numberInProgress(e.type)+1),this._nodeTimings.setInProgress(e,{startTime:t})}_markNodeAsComplete(e,t,n){this._nodes[zo.Complete].add(e),this._nodes[zo.InProgress].delete(e),this._numberInProgressByType.set(e.type,this._numberInProgress(e.type)-1),this._nodeTimings.setCompleted(e,{endTime:t,connectionTiming:n});for(const n of e.getDependents()){n.getDependencies().some((e=>!this._nodes[zo.Complete].has(e)))||this._markNodeAsReadyToStart(n,t)}}_acquireConnection(e){return this._connectionPool.acquire(e,{ignoreConnectionReused:this._flexibleOrdering})}_getNodesSortedByStartPosition(){return Array.from(this._cachedNodeListByStartPosition)}_startNodeIfPossible(e,t){if(e.type!==BaseNode.TYPES.CPU){if(e.type!==BaseNode.TYPES.NETWORK)throw new Error("Unsupported");if(!e.isConnectionless){if(this._numberInProgress(e.type)>=this._maximumConcurrentRequests)return;if(!this._acquireConnection(e.record))return}
this._markNodeAsInProgress(e,t)}else 0===this._numberInProgress(e.type)&&this._markNodeAsInProgress(e,t)}_updateNetworkCapacity(){const e=this._numberInProgress(BaseNode.TYPES.NETWORK);if(0!==e)for(const t of this._connectionPool.connectionsInUse())t.setThroughput(this._throughput/e)}_estimateTimeRemaining(e){if(e.type===BaseNode.TYPES.CPU)return this._estimateCPUTimeRemaining(e);if(e.type===BaseNode.TYPES.NETWORK)return this._estimateNetworkTimeRemaining(e);throw new Error("Unsupported")}_estimateCPUTimeRemaining(e){const t=this._nodeTimings.getCpuStarted(e),n=e.didPerformLayout()?this._layoutTaskMultiplier:this._cpuSlowdownMultiplier,a=Math.min(Math.round(e.event.dur/1e3*n),1e4)-t.timeElapsed;return this._nodeTimings.setCpuEstimated(e,{estimatedTimeElapsed:a}),a}_estimateNetworkTimeRemaining(e){const t=e.record,n=this._nodeTimings.getNetworkStarted(e);let a=0;if(e.fromDiskCache){a=8+20*((t.resourceSize||0)/1024/1024)-n.timeElapsed}else if(e.isNonNetworkProtocol){
a=2+10*((t.resourceSize||0)/1024/1024)-n.timeElapsed}else{const e=this._connectionPool.acquireActiveConnectionFromRecord(t),r=this._dns.getTimeUntilResolution(t,{requestedAt:n.startTime,shouldUpdateCache:!0}),o=n.timeElapsed;a=e.simulateDownloadUntil(t.transferSize-n.bytesDownloaded,{timeAlreadyElapsed:o,dnsResolutionTime:r,maximumTimeToElapse:1/0}).timeElapsed}const r=a+n.timeElapsedOvershoot;return this._nodeTimings.setNetworkEstimated(e,{estimatedTimeElapsed:r}),r}_findNextNodeCompletionTime(){let e=1/0;for(const t of this._nodes[zo.InProgress])e=Math.min(e,this._estimateTimeRemaining(t));return e}_updateProgressMadeInTimePeriod(e,t,n){const a=this._nodeTimings.getInProgress(e),r=a.estimatedTimeElapsed===t;if(e.type===BaseNode.TYPES.CPU||e.isConnectionless)return r?this._markNodeAsComplete(e,n):a.timeElapsed+=t;if(e.type!==BaseNode.TYPES.NETWORK)throw new Error("Unsupported");if(!("bytesDownloaded"in a))throw new Error("Invalid timing data")
;const o=e.record,i=this._connectionPool.acquireActiveConnectionFromRecord(o),s=this._dns.getTimeUntilResolution(o,{requestedAt:a.startTime,shouldUpdateCache:!0}),c=i.simulateDownloadUntil(o.transferSize-a.bytesDownloaded,{dnsResolutionTime:s,timeAlreadyElapsed:a.timeElapsed,maximumTimeToElapse:t-a.timeElapsedOvershoot});i.setCongestionWindow(c.congestionWindow),i.setH2OverflowBytesDownloaded(c.extraBytesDownloaded),r?(i.setWarmed(!0),this._connectionPool.release(o),this._markNodeAsComplete(e,n,c.connectionTiming)):(a.timeElapsed+=c.timeElapsed,a.timeElapsedOvershoot+=c.timeElapsed-t,a.bytesDownloaded+=c.bytesDownloaded)}_computeFinalNodeTimings(){const e=this._nodeTimings.getNodes().map((e=>[e,this._nodeTimings.getCompleted(e)]));e.sort(((e,t)=>e[1].startTime-t[1].startTime));const t=e.map((([e,t])=>[e,{startTime:t.startTime,endTime:t.endTime,duration:t.endTime-t.startTime}]));return{nodeTimings:new Map(t),completeNodeTimings:new Map(e)}}getOptions(){return this._options}
simulate(e,t){if(BaseNode.hasCycle(e))throw new Error("Cannot simulate graph with cycle");t=Object.assign({label:void 0,flexibleOrdering:!1},t),this._flexibleOrdering=!!t.flexibleOrdering,this._dns=new DNSCache({rtt:this._rtt}),this._initializeConnectionPool(e),this._initializeAuxiliaryData();const n=this._nodes[zo.NotReadyToStart],a=this._nodes[zo.ReadyToStart],r=this._nodes[zo.InProgress],o=e.getRootNode();o.traverse((e=>n.add(e)));let i=0,s=0;for(this._markNodeAsReadyToStart(o,i);a.size||r.size;){for(const e of this._getNodesSortedByStartPosition())this._startNodeIfPossible(e,i);if(!r.size){if(this._flexibleOrdering)throw new Error("Failed to start a node");this._flexibleOrdering=!0;continue}this._updateNetworkCapacity();const e=this._findNextNodeCompletionTime();if(i+=e,!Number.isFinite(e)||s>1e5)throw new Error("Simulation failed, depth exceeded");s++;for(const t of r)this._updateProgressMadeInTimePeriod(t,e,i)}
const{nodeTimings:c,completeNodeTimings:l}=this._computeFinalNodeTimings();return $o.set(t.label||"unlabeled",l),{timeInMs:i,nodeTimings:c}}computeWastedMsFromWastedBytes(e){const{throughput:t,observedThroughput:n}=this._options,a=0===t?n:t;if(0===a)return 0;return 8*e/a*1e3}static get ALL_NODE_TIMINGS(){return $o}static _computeNodeStartPosition(e){return"cpu"===e.type?e.startTime:e.startTime+(1e3*qo[e.record.priority]*1e3||0)}}class NetworkAnalysis{static computeRTTAndServerResponseTime(e){const t=new Map;for(const[n,a]of NetworkAnalyzer.estimateRTTByOrigin(e).entries())t.set(n,a.min);const n=Math.min(...Array.from(t.values())),a=NetworkAnalyzer.estimateServerResponseTimeByOrigin(e,{rttByOrigin:t}),r=new Map,o=new Map;for(const[e,i]of a.entries()){const a=t.get(e)||n;r.set(e,a-n),o.set(e,i.median)}return{rtt:n,additionalRttByOrigin:r,serverResponseTimeByOrigin:o}}static async compute_(e,t){const n=await go.request(e,t);return{throughput:NetworkAnalyzer.estimateThroughput(n),
...NetworkAnalysis.computeRTTAndServerResponseTime(n)}}}const Vo=makeComputedArtifact(NetworkAnalysis,null);const Wo=makeComputedArtifact(class LoadSimulator{static async compute_(e,t){const{throttlingMethod:n,throttling:a,precomputedLanternData:r}=e.settings,o=await Vo.request(e.devtoolsLog,t),i={additionalRttByOrigin:o.additionalRttByOrigin,serverResponseTimeByOrigin:o.serverResponseTimeByOrigin,observedThroughput:o.throughput};switch(r&&(i.additionalRttByOrigin=new Map(Object.entries(r.additionalRttByOrigin)),i.serverResponseTimeByOrigin=new Map(Object.entries(r.serverResponseTimeByOrigin))),n){case"provided":i.rtt=o.rtt,i.throughput=o.throughput,i.cpuSlowdownMultiplier=1,i.layoutTaskMultiplier=1;break;case"devtools":a&&(i.rtt=a.requestLatencyMs/Gr.DEVTOOLS_RTT_ADJUSTMENT_FACTOR,i.throughput=1024*a.downloadThroughputKbps/Gr.DEVTOOLS_THROUGHPUT_ADJUSTMENT_FACTOR),i.cpuSlowdownMultiplier=1,i.layoutTaskMultiplier=1;break;case"simulate":a&&(i.rtt=a.rttMs,
i.throughput=1024*a.throughputKbps,i.cpuSlowdownMultiplier=a.cpuSlowdownMultiplier)}return new Simulator(i)}static convertAnalysisToSaveableLanternData(e){const t={additionalRttByOrigin:{},serverResponseTimeByOrigin:{}};for(const[n,a]of e.additionalRttByOrigin.entries())n.startsWith("http")&&(t.additionalRttByOrigin[n]=a);for(const[n,a]of e.serverResponseTimeByOrigin.entries())n.startsWith("http")&&(t.serverResponseTimeByOrigin[n]=a);return t}},["devtoolsLog","settings"]),{promisify:Ho}=xo,Go=Ho&&Ho(Stream.pipeline),Yo="artifacts.json",Ko=".trace.json",Jo=".devtoolslog.json";function loadArtifacts(e){if(Log.log("Reading artifacts from disk:",e),!J.existsSync(e))throw new Error("No saved artifacts found at "+e);const t=J.readFileSync(Q.join(e,Yo),"utf8"),n=JSON.parse(t,LighthouseError.parseReviver),a=J.readdirSync(e);return n.devtoolsLogs={},a.filter((e=>e.endsWith(Jo))).forEach((t=>{const a=t.replace(Jo,""),r=JSON.parse(J.readFileSync(Q.join(e,t),"utf8"));n.devtoolsLogs[a]=r,
"defaultPass"===a&&(n.DevtoolsLog=r)})),n.traces={},a.filter((e=>e.endsWith(Ko))).forEach((t=>{const a=J.readFileSync(Q.join(e,t),{encoding:"utf-8"}),r=JSON.parse(a),o=t.replace(Ko,"");n.traces[o]=Array.isArray(r)?{traceEvents:r}:r,"defaultPass"===o&&(n.Trace=n.traces[o])})),Array.isArray(n.Timing)&&n.Timing.forEach((e=>e.gather=!0)),n}function stringifyReplacer(e,t){return t instanceof Error?LighthouseError.stringifyReplacer(t):t}function*arrayOfObjectsJsonGenerator(e){if(yield"[\n",e.length>0){const t=e[Symbol.iterator](),n=t.next().value;yield` ${JSON.stringify(n)}`;let a=500,r="";for(const e of t)r+=`,\n ${JSON.stringify(e)}`,a--,0===a&&(yield r,a=500,r="");yield r}yield"\n]"}async function saveTrace(e,t){const n=function*traceJsonGenerator(e){const{traceEvents:t,...n}=e;yield"{\n",yield'"traceEvents": ',yield*arrayOfObjectsJsonGenerator(t);for(const[e,t]of Object.entries(n))yield`,\n"${e}": ${JSON.stringify(t,null,2)}`;yield"}\n"}(e),a=J.createWriteStream(t);return Go(n,a)}
function saveDevtoolsLog(e,t){const n=J.createWriteStream(t);return Go((function*(){yield*arrayOfObjectsJsonGenerator(e),yield"\n"}),n)}const Zo=[],noop=()=>{},Xo={init:async function init(e){if(!e.flags.enableErrorReporting)return;if(!Xo._shouldSample())return;try{const t=await Promise.resolve().then((function(){return Pi}));t.init({...e.environmentData,dsn:"https://a6bb0da87ee048cc9ae2a345fc09ab2e:63a7029f46f74265981b7e005e0f69f8@sentry.io/174697"});const n={...e.flags.throttling,channel:e.flags.channel||"cli",url:e.url,formFactor:e.flags.formFactor,throttlingMethod:e.flags.throttlingMethod};t.setExtras(n),Xo.captureMessage=(...e)=>t.captureMessage(...e),Xo.captureBreadcrumb=(...e)=>t.addBreadcrumb(...e),Xo.getContext=()=>n;const a=new Map;Xo.captureException=async(e,n={})=>{if(!e)return;if(e.expected)return;const r=n.tags||{};if(r.audit){const t=`audit-${r.audit}-${e.message}`;if(a.has(t))return;a.set(t,!0)}if(r.gatherer){const t=`gatherer-${r.gatherer}-${e.message}`
;if(a.has(t))return;a.set(t,!0)}const o=Zo.find((t=>t.pattern.test(e.message)));o&&o.rate<=Math.random()||(e.protocolMethod&&(n.fingerprint=["{{ default }}",e.protocolMethod,e.protocolError],n.tags=n.tags||{},n.tags.protocolMethod=e.protocolMethod),t.withScope((a=>{n.level&&a.setLevel(n.level),n.tags&&a.setTags(n.tags),n.extra&&a.setExtras(n.extra),t.captureException(e)})))}}catch(e){Log.warn("sentry","Could not load Sentry, errors will not be reported.")}},captureMessage:noop,captureBreadcrumb:noop,getContext:noop,captureException:async()=>{},_shouldSample:()=>.01>=Math.random()};const Qo=Xo,ei={};class ReportGenerator{static replaceStrings(e,t){if(0===t.length)return e;const n=t[0],a=t.slice(1);return e.split(n.search).map((e=>ReportGenerator.replaceStrings(e,a))).join(n.replacement)}static sanitizeJson(e){return JSON.stringify(e).replace(/</g,"\\u003c").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}static generateReportHtml(e){
const t=ReportGenerator.sanitizeJson(e),n=ei.REPORT_JAVASCRIPT.replace(/<\//g,"\\u003c/");return ReportGenerator.replaceStrings(ei.REPORT_TEMPLATE,[{search:"%%LIGHTHOUSE_JSON%%",replacement:t},{search:"%%LIGHTHOUSE_JAVASCRIPT%%",replacement:n}])}static generateFlowReportHtml(e){const t=ReportGenerator.sanitizeJson(e),n=ei.FLOW_REPORT_JAVASCRIPT.replace(/<\//g,"\\u003c/");return ReportGenerator.replaceStrings(ei.FLOW_REPORT_TEMPLATE,[{search:"%%LIGHTHOUSE_FLOW_JSON%%",replacement:t},{search:"%%LIGHTHOUSE_FLOW_JAVASCRIPT%%",replacement:n},{search:"/*%%LIGHTHOUSE_FLOW_CSS%%*/",replacement:ei.FLOW_REPORT_CSS}])}static generateReportCSV(e){const escape=e=>`"${e.replace(/"/g,'""')}"`,rowFormatter=e=>e.map((e=>null===e?"null":e.toString())).map(escape),t=[],n=["requestedUrl","finalDisplayedUrl","fetchTime","gatherMode"];t.push(rowFormatter(n)),t.push(rowFormatter(n.map((t=>e[t]??null)))),t.push([]),t.push(["category","score"])
;for(const n of Object.values(e.categories))t.push(rowFormatter([n.id,n.score]));t.push([]),t.push(["category","audit","score","displayValue","description"]);for(const n of Object.values(e.categories))for(const a of n.auditRefs){const r=e.audits[a.id];r&&t.push(rowFormatter([n.id,a.id,r.score,r.displayValue||"",r.description]))}return t.map((e=>e.join(","))).join("\r\n")}static isFlowResult(e){return"steps"in e}static generateReport(e,t){const n=Array.isArray(t);"string"==typeof t&&(t=[t]);const a=t.map((t=>{if("html"===t)return ReportGenerator.isFlowResult(e)?ReportGenerator.generateFlowReportHtml(e):ReportGenerator.generateReportHtml(e);if("csv"===t){if(ReportGenerator.isFlowResult(e))throw new Error("CSV output is not support for user flows");return ReportGenerator.generateReportCSV(e)}if("json"===t)return JSON.stringify(e,null,2);throw new Error("Invalid output mode: "+t)}));return n?a:a[0]}}
const ti=/:\/\/(\S*?)(:\d+)?(\/|$)/,ni=/([a-z0-9.-]+\.[a-z0-9]+|localhost)/i,ai=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,ri=/[^.]+\.([^.]+|(gov|com|co|ne)\.\w{2})$/i;function getDomainFromOriginOrURL(e){return"string"!=typeof e||e.length>1e4||e.startsWith("data:")?null:ti.test(e)?e.match(ti)[1]:ni.test(e)?e.match(ni)[0]:null}function getRootDomain(e){const t=getDomainFromOriginOrURL(e);if(!t)return null;if(ai.test(t))return t;const n=t.match(ri);return n&&n[0]||t}function sliceSubdomainFromDomain(e,t){return e.length<=t.length?e:e.split(".").slice(1).join(".")}function getEntityInDataset(e,t,n,a){const r=getDomainFromOriginOrURL(a),o=getRootDomain(r);if(r&&o){if(e.has(r))return e.get(r);for(let e=r;e.length>o.length;e=sliceSubdomainFromDomain(e,o))if(t.has(e))return t.get(e);return n.has(o)?n.get(o):void 0}}function getProductInDataset(e,t,n,a){const r=getEntityInDataset(e,t,n,a),o=r&&r.products;if(o&&"string"==typeof a)for(const e of o)for(const t of e.urlPatterns){
if(t instanceof RegExp&&t.test(a))return e;if("string"==typeof t&&a.includes(t))return e}}var oi={createAPIFromDataset:function createAPIFromDataset$1(e){const t=function cloneEntities(e){return e.map((e=>{const t={company:e.name,categories:[e.category],...e},n=(e.products||[]).map((e=>({company:t.company,category:t.category,categories:[t.category],facades:[],...e,urlPatterns:(e.urlPatterns||[]).map((e=>e.startsWith("REGEXP:")?new RegExp(e.slice("REGEXP:".length)):e))})));return t.products=n,t}))}(e),n=new Map,a=new Map,r=new Map;for(const e of t){e.totalExecutionTime=Number(e.totalExecutionTime)||0,e.totalOccurrences=Number(e.totalOccurrences)||0,e.averageExecutionTime=e.totalExecutionTime/e.totalOccurrences;for(const t of e.domains){if(n.has(t)){const a=n.get(t);throw new Error(`Duplicate domain ${t} (${e.name} and ${a.name})`)}n.set(t,e);const o=getRootDomain(t);if(t.startsWith("*.")){const n=t.slice(2);n===o?a.set(o,e):r.set(n,e)}}}for(const[e,t]of a.entries())t||a.delete(e)
;return{getEntity:getEntityInDataset.bind(null,n,r,a),getProduct:getProductInDataset.bind(null,n,r,a),getRootDomain,entities:t}}};const{createAPIFromDataset:ii}=oi;var si=ii([{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"]},{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"],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"}]}]},{name:"Instagram",homepage:"https://www.instagram.com",category:"social",domains:["*.cdninstagram.com","*.instagram.com"]},{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"]},{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"]},{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"]},{name:"Firebase",homepage:"https://developers.google.com/apis-explorer/#p/",category:"utility",
domains:["firebasestorage.googleapis.com","firestore.googleapis.com","firebaseinstallations.googleapis.com","firebase.googleapis.com","firebaseremoteconfig.googleapis.com"]},{name:"Google Analytics",company:"Google",homepage:"https://marketingplatform.google.com/about/analytics/",category:"analytics",domains:["*.google-analytics.com","*.urchin.com","analytics.google.com"]},{name:"Google Optimize",company:"Google",homepage:"https://marketingplatform.google.com/about/optimize/",category:"analytics",domains:["www.googleoptimize.com"]},{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"]},{name:"Google Fonts",company:"Google",homepage:"https://fonts.google.com/",category:"cdn",domains:["fonts.googleapis.com","fonts.gstatic.com"]},{
name:"Adobe TypeKit",company:"Adobe",homepage:"https://fonts.adobe.com/",category:"cdn",domains:["*.typekit.com","*.typekit.net"]},{name:"YouTube",homepage:"https://youtube.com",category:"video",domains:["*.youtube.com","*.ggpht.com","*.youtube-nocookie.com","*.ytimg.com"],products:[{name:"YouTube Embedded Player",urlPatterns:["youtube.com/embed/"],facades:[{name:"Lite YouTube",repo:"https://github.com/paulirish/lite-youtube-embed"}]}]},{name:"Twitter",homepage:"https://twitter.com",category:"social",domains:["*.vine.co","*.twimg.com","*.twitpic.com","platform.twitter.com","syndication.twitter.com"]},{name:"AddThis",homepage:"https://www.addthis.com/",category:"social",domains:["*.addthis.com","*.addthiscdn.com","*.addthisedge.com"]},{name:"AddToAny",homepage:"https://www.addtoany.com/",category:"social",domains:["*.addtoany.com"]},{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"]},{name:"Blogger",homepage:"https://www.blogger.com/",category:"hosting",domains:["*.blogblog.com","*.blogger.com","*.blogspot.com","images-blogger-opensocial.googleusercontent.com"]},{name:"Gravatar",homepage:"https://en.gravatar.com/",category:"social",domains:["*.gravatar.com"]},{name:"Yandex Metrica",company:"Yandex",homepage:"https://metrica.yandex.com/about?",category:"analytics",domains:["mc.yandex.ru","mc.yandex.com","d31j93rd8oukbv.cloudfront.net"]},{name:"Hotjar",homepage:"https://www.hotjar.com/",category:"analytics",domains:["*.hotjar.com","*.hotjar.io"]},{name:"Baidu Analytics",homepage:"https://tongji.baidu.com/web/welcome/login",category:"analytics",domains:["hm.baidu.com","hmcdn.baidu.com"]},{name:"Insider",homepage:"",category:"analytics",domains:["*.useinsider.com"]
},{name:"Adobe Experience Cloud",company:"Adobe",homepage:"",category:"analytics",domains:["*.2o7.net","du8783wkf05yr.cloudfront.net","*.hitbox.com","*.imageg.net","*.nedstat.com","*.omtrdc.net"]},{name:"Adobe Tag Manager",company:"Adobe",homepage:"https://www.adobe.com/experience-platform/",category:"tag-manager",domains:["*.adobedtm.com","*.demdex.net","*.everesttech.net","sstats.adobe.com","hbrt.adobe.com"]},{name:"jQuery CDN",homepage:"https://code.jquery.com/",category:"cdn",domains:["*.jquery.com"]},{name:"Cloudflare CDN",homepage:"https://cdnjs.com/",category:"cdn",domains:["cdnjs.cloudflare.com","amp.cloudflare.com"]},{name:"Cloudflare",homepage:"https://www.cloudflare.com/website-optimization/",category:"utility",domains:["ajax.cloudflare.com","*.nel.cloudflare.com","static.cloudflareinsights.com"]},{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"]},{name:"WordPress Site Stats",company:"Automattic",homepage:"https://wp.com/",category:"analytics",domains:["pixel.wp.com","stats.wp.com"]},{name:"Hatena Blog",homepage:"https://hatenablog.com/",category:"hosting",domains:["*.st-hatena.com","*.hatena.ne.jp"]},{name:"Shopify",homepage:"https://www.shopify.com/",category:"hosting",domains:["*.shopify.com","*.shopifyapps.com","*.shopifycdn.com","*.shopifysvc.com"]},{name:"Dealer",homepage:"https://www.dealer.com/",category:"hosting",domains:["*.dealer.com"]},{name:"PIXNET",homepage:"https://www.pixnet.net/",category:"social",domains:["*.pixfs.net","*.pixnet.net"]},{name:"Moat",homepage:"https://moat.com/",category:"ad",domains:["*.moatads.com","*.moatpixel.com"]},{name:"33 Across",homepage:"https://33across.com/",category:"ad",domains:["*.33across.com"]},{name:"OpenX",homepage:"https://www.openx.com/",
category:"ad",domains:["*.deliverimp.com","*.openxadexchange.com","*.servedbyopenx.com","*.jump-time.net","*.openx.net"]},{name:"Amazon Ads",homepage:"https://ad.amazon.com/",category:"ad",domains:["*.amazon-adsystem.com"]},{name:"Rubicon Project",homepage:"https://rubiconproject.com/",category:"ad",domains:["*.rubiconproject.com","*.chango.com","*.fimserve.com"]},{name:"The Trade Desk",homepage:"https://www.thetradedesk.com/",category:"ad",domains:["*.adsrvr.org","d1eoo1tco6rr5e.cloudfront.net"]},{name:"Bidswitch",homepage:"https://www.bidswitch.com/",category:"ad",domains:["*.bidswitch.net"]},{name:"LiveRamp IdentityLink",homepage:"https://liveramp.com/discover-identitylink/",category:"analytics",domains:["*.circulate.com","*.rlcdn.com"]},{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"]},{name:"Xaxis",homepage:"https://www.xaxis.com/",category:"ad",domains:["*.247realmedia.com","*.mookie1.com","*.gmads.net"]},{name:"Freshdesk",company:"Freshworks",homepage:"https://freshdesk.com/",category:"customer-success",domains:["d36mpcpuzc4ztk.cloudfront.net"]},{name:"Help Scout",homepage:"https://www.helpscout.net/",category:"customer-success",domains:["djtflbt20bdde.cloudfront.net","*.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"}]}]},{name:"Alexa",homepage:"https://www.alexa.com/",category:"analytics",domains:["*.alexametrics.com","d31qbv1cthcecs.cloudfront.net"]},{name:"OneSignal",homepage:"https://onesignal.com/",category:"utility",domains:["*.onesignal.com"]},{name:"Lucky Orange",
homepage:"https://www.luckyorange.com/",category:"analytics",domains:["*.luckyorange.com","d10lpsik1i8c69.cloudfront.net","*.luckyorange.net"]},{name:"Crazy Egg",homepage:"https://www.crazyegg.com/",category:"analytics",domains:["*.cetrk.com","*.crazyegg.com","*.hellobar.com","dnn506yrbagrg.cloudfront.net"]},{name:"Yandex Ads",company:"Yandex",homepage:"https://yandex.com/adv/",category:"ad",domains:["an.yandex.ru"]},{name:"Salesforce",homepage:"https://www.salesforce.com/products/marketing-cloud/",category:"analytics",domains:["*.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"]},{name:"Optimizely",homepage:"https://www.optimizely.com/",category:"analytics",domains:["*.optimizely.com"]},{name:"LiveChat",homepage:"https://www.livechat.com/",category:"customer-success",
domains:["*.livechatinc.com","*.livechat.com","*.livechat-static.com"]},{name:"VK",homepage:"https://vk.com/",category:"social",domains:["*.vk.com"]},{name:"Tumblr",homepage:"https://tumblr.com/",category:"social",domains:["*.tumblr.com"]},{name:"Wistia",homepage:"https://wistia.com/",category:"video",domains:["*.wistia.com","embedwistia-a.akamaihd.net","*.wistia.net"]},{name:"Brightcove",homepage:"https://www.brightcove.com/en/",category:"video",domains:["*.brightcove.com","*.brightcove.net","*.zencdn.net"]},{name:"JSDelivr CDN",homepage:"https://www.jsdelivr.com/",category:"cdn",domains:["*.jsdelivr.net"]},{name:"Sumo",homepage:"https://sumo.com/",category:"marketing",domains:["*.sumo.com","*.sumome.com","sumo.b-cdn.net"]},{name:"Vimeo",homepage:"https://vimeo.com/",category:"video",domains:["*.vimeo.com","*.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:"Disqus",homepage:"https://disqus.com/",category:"social",domains:["*.disqus.com","*.disquscdn.com"]},{name:"Yandex APIs",company:"Yandex",homepage:"https://yandex.ru/",category:"utility",domains:["api-maps.yandex.ru","money.yandex.ru"]},{name:"Yandex CDN",company:"Yandex",homepage:"https://yandex.ru/",category:"cdn",domains:["*.yandex.st","*.yastatic.net"]},{name:"Integral Ad Science",homepage:"https://integralads.com/uk/",category:"ad",domains:["*.adsafeprotected.com","*.iasds01.com"]},{name:"Tealium",homepage:"https://tealium.com/",category:"tag-manager",domains:["*.aniview.com","*.delvenetworks.com","*.limelight.com","*.tiqcdn.com","*.llnwd.net","*.tealiumiq.com"]},{name:"Pubmatic",homepage:"https://pubmatic.com/",category:"ad",domains:["*.pubmatic.com"]},{name:"Olark",homepage:"https://www.olark.com/",category:"customer-success",domains:["*.olark.com"]},{name:"Tawk.to",
homepage:"https://www.tawk.to/",category:"customer-success",domains:["*.tawk.to"]},{name:"OptinMonster",homepage:"https://optinmonster.com/",category:"marketing",domains:["*.opmnstr.com","*.optmnstr.com","*.optmstr.com"]},{name:"ZenDesk",homepage:"https://zendesk.com/",category:"customer-success",domains:["*.zdassets.com","*.zendesk.com","*.zopim.com"]},{name:"Pusher",homepage:"https://pusher.com/",category:"utility",domains:["*.pusher.com","*.pusherapp.com"]},{name:"Drift",homepage:"https://www.drift.com/",category:"marketing",domains:["*.drift.com","*.driftt.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"}]}]},{name:"Sentry",homepage:"https://sentry.io/",category:"utility",domains:["*.getsentry.com","*.ravenjs.com","*.sentry-cdn.com","*.sentry.io"]},{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"]},{name:"Amazon Pay",homepage:"https://pay.amazon.com",category:"utility",domains:["payments.amazon.com","*.payments-amazon.com"]},{name:"Media.net",homepage:"https://www.media.net/",category:"ad",domains:["*.media.net","*.mnet-ad.net"]},{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"]},{name:"Adroll",homepage:"https://www.adroll.com/",category:"ad",domains:["*.adroll.com"]},{name:"Twitch",homepage:"https://twitch.tv/",category:"video",domains:["*.twitch.tv"]},{name:"Taboola",homepage:"https://www.taboola.com/",category:"ad",domains:["*.taboola.com","*.taboolasyndication.com"]},{name:"Sizmek",homepage:"https://www.sizmek.com/",category:"ad",
domains:["*.serving-sys.com","*.peer39.net"]},{name:"Scorecard Research",homepage:"https://www.scorecardresearch.com/",category:"ad",domains:["*.scorecardresearch.com"]},{name:"Criteo",homepage:"https://www.criteo.com/",category:"ad",domains:["*.criteo.com","*.emailretargeting.com","*.criteo.net"]},{name:"Segment",homepage:"https://segment.com/",category:"analytics",domains:["*.segment.com","*.segment.io"]},{name:"ShareThis",homepage:"https://www.sharethis.com/",category:"social",domains:["*.sharethis.com"]},{name:"Distil Networks",homepage:"https://www.distilnetworks.com/",category:"utility",domains:["*.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"]},{name:"CreateJS CDN",homepage:"https://code.createjs.com/",category:"cdn",domains:["*.createjs.com"]},{name:"Squarespace",homepage:"https://www.squarespace.com/",
category:"hosting",domains:["*.squarespace.com"]},{name:"Media Math",homepage:"https://www.mediamath.com/",category:"ad",domains:["*.mathads.com","*.mathtag.com"]},{name:"Mixpanel",homepage:"https://mixpanel.com/",category:"analytics",domains:["*.mixpanel.com","*.mxpnl.com"]},{name:"FontAwesome CDN",homepage:"https://fontawesome.com/",category:"cdn",domains:["*.fontawesome.com"]},{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","*.hsleadflows.net","*.hsstatic.net","*.hubspot.net","*.hsforms.com","*.hs-banner.com","*.hs-embed-reporting.com","*.hs-growth-metrics.com","*.hs-data.com","*.hsadspixel.net"]},{name:"Mailchimp",homepage:"https://mailchimp.com/",category:"marketing",domains:["*.chimpstatic.com","*.list-manage.com","*.mailchimp.com"]},{name:"MGID",homepage:"https://www.mgid.com/",category:"ad",
domains:["*.mgid.com","*.dt07.net"]},{name:"Stripe",homepage:"https://stripe.com",category:"utility",domains:["*.stripe.com","*.stripecdn.com","*.stripe.network"]},{name:"PayPal",homepage:"https://paypal.com",category:"utility",domains:["*.paypal.com","*.paypalobjects.com"]},{name:"Market GID",homepage:"https://www.marketgid.com/",category:"ad",domains:["*.marketgid.com"]},{name:"Pinterest",homepage:"https://pinterest.com/",category:"social",domains:["*.pinimg.com","*.pinterest.com"]},{name:"New Relic",homepage:"https://newrelic.com/",category:"utility",domains:["*.newrelic.com","*.nr-data.net"]},{name:"AppDynamics",homepage:"https://www.appdynamics.com/",category:"utility",domains:["*.appdynamics.com","*.eum-appdynamics.com","d3tjaysgumg9lf.cloudfront.net"]},{name:"Parking Crew",homepage:"https://parkingcrew.net/",category:"other",domains:["d1lxhc4jvstzrp.cloudfront.net","*.parkingcrew.net"]},{name:"WordAds",company:"Automattic",homepage:"https://wordads.co/",category:"ad",
domains:["*.pubmine.com"]},{name:"AppNexus",homepage:"https://www.appnexus.com/",category:"ad",domains:["*.adnxs.com","*.ctasnet.com","*.adrdgt.com"]},{name:"Histats",homepage:"https://www.histats.com/",category:"analytics",domains:["*.histats.com"]},{name:"DoubleVerify",homepage:"https://www.doubleverify.com/",category:"ad",domains:["*.doubleverify.com","*.dvtps.com","*.iqfp1.com"]},{name:"Mediavine",homepage:"https://www.mediavine.com/",category:"ad",domains:["*.mediavine.com"]},{name:"Wix",homepage:"https://www.wix.com/",category:"hosting",domains:["*.parastorage.com","*.wix.com","*.wixstatic.com","*.wixapps.net"]},{name:"Webflow",homepage:"https://webflow.com/",category:"hosting",domains:["*.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"]},{name:"LinkedIn",homepage:"https://www.linkedin.com/",category:"social",
domains:["*.bizographics.com","platform.linkedin.com","*.slideshare.com","*.slidesharecdn.com"]},{name:"LinkedIn Ads",category:"ad",domains:["*.licdn.com","*.ads.linkedin.com","ads.linkedin.com","www.linkedin.com"]},{name:"Vox Media",homepage:"https://www.voxmedia.com/",category:"content",domains:["*.vox-cdn.com","*.voxmedia.com"]},{name:"Hotmart",homepage:"https://www.hotmart.com/",category:"content",domains:["*.hotmart.com"]},{name:"SoundCloud",homepage:"https://www.soundcloud.com/",category:"content",domains:["*.sndcdn.com","*.soundcloud.com","*.stratus.sc"]},{name:"Spotify",homepage:"https://www.spotify.com/",category:"content",domains:["*.scdn.co","*.spotify.com"]},{name:"AMP",homepage:"https://amp.dev/",category:"content",domains:["*.ampproject.org"]},{name:"Beeketing",homepage:"https://beeketing.com/",category:"marketing",domains:["*.beeketing.com"]},{name:"Albacross",homepage:"https://albacross.com/",category:"marketing",domains:["*.albacross.com"]},{name:"TrafficJunky",
homepage:"https://www.trafficjunky.com/",category:"ad",domains:["*.contentabc.com","*.trafficjunky.net"]},{name:"Bootstrap CDN",homepage:"https://www.bootstrapcdn.com/",category:"cdn",domains:["*.bootstrapcdn.com"]},{name:"Shareaholic",homepage:"https://www.shareaholic.com/",category:"social",domains:["*.shareaholic.com","dsms0mj1bbhn4.cloudfront.net"]},{name:"Snowplow",homepage:"https://snowplowanalytics.com/",category:"analytics",domains:["d32hwlnfiv2gyn.cloudfront.net"]},{name:"RD Station",homepage:"https://www.rdstation.com/en/",category:"marketing",domains:["d335luupugsy2.cloudfront.net"]},{name:"Jivochat",homepage:"https://www.jivochat.com/",category:"customer-success",domains:["*.jivosite.com"]},{name:"Listrak",homepage:"https://www.listrak.com/",category:"marketing",domains:["*.listrak.com","*.listrakbi.com"]},{name:"Ontame",homepage:"https://www.ontame.io",category:"analytics",domains:["*.ontame.io"]},{name:"Ipify",homepage:"https://www.ipify.org",category:"utility",
domains:["*.ipify.org"]},{name:"Ensighten",homepage:"https://www.ensighten.com/",category:"tag-manager",domains:["*.ensighten.com"]},{name:"EpiServer",homepage:"https://www.episerver.com",category:"content",domains:["*.episerver.net"]},{name:"mPulse",homepage:"https://developer.akamai.com/akamai-mpulse",category:"analytics",domains:["*.akstat.io","*.go-mpulse.net","*.mpulse.net","*.mpstat.us"]},{name:"Pingdom RUM",homepage:"https://www.pingdom.com/product/performance-monitoring/",category:"analytics",domains:["*.pingdom.net"]},{name:"SpeedCurve LUX",company:"SpeedCurve",homepage:"https://speedcurve.com/features/lux/",category:"analytics",domains:["*.speedcurve.com"]},{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"]},{name:"Byside",homepage:"https://byside.com",category:"analytics",domains:["*.byside.com"]},{name:"VWO",homepage:"https://vwo.com",category:"analytics",domains:["*.vwo.com","*.visualwebsiteoptimizer.com","d5phz18u4wuww.cloudfront.net","*.wingify.com"]},{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"]},{name:"GoSquared",homepage:"https://www.gosquared.com",category:"analytics",domains:["*.gosquared.com","d1l6p2sc9645hc.cloudfront.net"]},{name:"Usabilla",homepage:"https://usabilla.com",
category:"analytics",domains:["*.usabilla.com","d6tizftlrpuof.cloudfront.net"]},{name:"Fastly Insights",homepage:"https://insights.fastlylabs.com",category:"analytics",domains:["*.fastly-insights.com"]},{name:"Visual IQ",homepage:"https://www.visualiq.com",category:"analytics",domains:["*.myvisualiq.net"]},{name:"Snapchat",homepage:"https://www.snapchat.com",category:"analytics",domains:["*.snapchat.com","*.sc-static.net"]},{name:"Atlas Solutions",homepage:"https://atlassolutions.com",category:"analytics",domains:["*.atdmt.com"]},{name:"Quantcast",homepage:"https://www.quantcast.com",category:"analytics",domains:["*.brtstats.com","*.quantcount.com","*.quantserve.com","*.semantictec.com","*.ntv.io"]},{name:"Spiceworks",homepage:"https://www.spiceworks.com",category:"analytics",domains:["*.spiceworks.com"]},{name:"Marketo",homepage:"https://www.marketo.com",category:"analytics",domains:["*.marketo.com","*.mktoresp.com","*.marketo.net"]},{name:"Intercom",
homepage:"https://www.intercom.com",category:"customer-success",domains:["*.intercomcdn.com","*.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/"}]}]},{name:"Unpkg",homepage:"https://unpkg.com",category:"cdn",domains:["*.unpkg.com","*.npmcdn.com"]},{name:"ReadSpeaker",homepage:"https://www.readspeaker.com",category:"other",domains:["*.readspeaker.com"]},{name:"Browsealoud",homepage:"https://www.texthelp.com/en-gb/products/browsealoud/",category:"other",domains:["*.browsealoud.com","*.texthelp.com"]},{name:"15gifts",category:"customer-success",domains:["*.15gifts.com","*.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"]},{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"]},{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",category:"analytics",
domains:["*.abtasty.com","d1447tq2m68ekg.cloudfront.net"]},{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"]},{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"]},{name:"ARENA",company:"Altitude",category:"ad",domains:["*.altitude-arena.com"]},{name:"ARM",category:"analytics",domains:["*.tag4arm.com"]},{name:"ASAPP",category:"other",domains:["*.asapp.com"]},{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"]},{name:"AWeber",category:"ad",domains:["*.aweber.com"]},{name:"AXS",category:"content",domains:["*.axs.com"]},{name:"Accentuate",company:"Accentuate Digital",category:"utlity",homepage:"https://www.accentuate.io/",domains:["*.accentuate.io"]},{name:"Accenture",category:"analytics",domains:["*.tmvtp.com"]},{name:"Accord Holdings",category:"ad",domains:["*.agcdn.com"]},{name:"Accordant Media",category:"ad",
domains:["*.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"]},{name:"Acquisio",category:"ad",domains:["*.acq.io"]},{name:"Act-On Software",category:"marketing",domains:["*.actonsoftware.com"]},{name:"ActBlue",category:"other",domains:["*.actblue.com"]},{name:"Active Agent",category:"ad",domains:["*.active-agent.com"]},{name:"ActiveCampaign",category:"ad",domains:["*.trackcmp.net","app-us1.com","*.app-us1.com"]},{name:"AcuityAds",category:"ad",domains:["*.acuityplatform.com"]},{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"]},{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"]},{name:"AdInMedia",category:"ad",domains:["*.fastapi.net"]},{name:"AdJug",category:"ad",domains:["*.adjug.com"]},{name:"AdMatic",category:"ad",domains:["*.admatic.com.tr"]},{name:"AdMedia",category:"ad",domains:["*.admedia.com"]},{name:"AdRecover",category:"ad",domains:["*.adrecover.com"]},{name:"AdRiver",category:"ad",domains:["*.adriver.ru"]},{name:"AdSniper",category:"ad",domains:["*.adsniper.ru","*.sniperlog.ru"]},{name:"AdSpeed",category:"ad",domains:["*.adspeed.net"]},{name:"AdSpruce",category:"ad",domains:["*.adspruce.com"]},{name:"AdSupply",category:"ad",domains:["*.doublepimp.com"]},{name:"AdTheorent",category:"ad",domains:["*.adentifi.com"]},{name:"AdThink AudienceInsights",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"]},{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"]},{name:"Adblade",category:"ad",domains:["*.adblade.com"]},{name:"Adbrain",category:"ad",domains:["*.adbrn.com"]},{name:"AddEvent",category:"utility",domains:["*.addevent.com"]},{name:"AddShoppers",category:"social",domains:["*.addshoppers.com","d3rr3d0n31t48m.cloudfront.net","*.shop.pe"]},{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"]},{name:"Adecs",category:"customer-success",domains:["*.adecs.co.uk"]},{name:"Adelphic",category:"ad",domains:["*.ipredictive.com"]},{name:"Adestra",category:"ad",domains:["*.adestra.com","*.msgfocus.com"]},{name:"Adform",category:"ad",domains:["*.adform.net","*.adformdsp.net"]},{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"]},{name:"Adlux",category:"ad",domains:["*.adlux.com"]},{name:"Admedo",category:"ad",domains:["*.a8723.com","*.adizio.com","*.admedo.com"]},{name:"Admeta",company:"Wideorbit",category:"ad",domains:["*.atemda.com"]},{name:"Admetrics",company:"Next Tuesday",category:"analytics",domains:["*.nt.vc"]},{name:"Admiral",
category:"ad",domains:["*.unknowntray.com"]},{name:"Admitad",category:"ad",domains:["*.lenmit.com"]},{name:"Admixer for Publishers",company:"Admixer",category:"ad",domains:["*.admixer.net"]},{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"]},{name:"Adobe Systems",category:"content",domains:["adobe.com","www.adobe.com"]},{name:"Adobe Business Catalyst",homepage:"https://www.businesscatalyst.com/",category:"hosting",domains:["*.businesscatalyst.com"]},{name:"Adocean",company:"Gemius",category:"ad",domains:["*.adocean.pl"]},{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 Solutions",category:"ad",domains:["*.imiclk.com","*.abmr.net"]},{name:"AdsNative",category:"ad",domains:["*.adsnative.com"]},{name:"AdsWizz",category:"ad",domains:["*.adswizz.com"]},{name:"Adscale",category:"ad",domains:["*.adscale.de"]},{name:"Adschoom",company:"JSWeb Production",category:"ad",domains:["*.adschoom.com"]},{name:"Adscience",category:"ad",domains:["*.adscience.nl"]},{name:"Adsiduous",category:"ad",domains:["*.adsiduous.com"]},{name:"Adsty",category:"ad",domains:["*.adx1.com"]},{name:"Adtech (AOL)",category:"ad",domains:["*.adtechus.com"]},{name:"Adtegrity",category:"ad",domains:["*.adtpix.com"]},{name:"Adthink",company:"Adthink Media",category:"ad",domains:["*.adxcore.com","*.dcoengine.com"]},{name:"AdultWebmasterEmpire.Com",category:"ad",domains:["*.awempire.com"]},{name:"Adunity",category:"ad",
domains:["*.adunity.com"]},{name:"Advance Magazine Group",category:"content",domains:["*.condenastdigital.com","*.condenet.com","*.condenast.co.uk"]},{name:"Adverline Board",company:"Adverline",category:"ad",domains:["*.adverline.com","*.adnext.fr"]},{name:"AdvertServe",category:"ad",domains:["*.advertserve.com"]},{name:"Advolution",category:"utility",domains:["*.advolution.de"]},{name:"Adwise",category:"ad",domains:["*.adwise.bg"]},{name:"Adyen",category:"utility",domains:["*.adyen.com"]},{name:"Adyoulike",category:"ad",domains:["*.adyoulike.com","*.omnitagjs.com","*.adyoulike.net"]},{name:"Adzerk",category:"ad",domains:["*.adzerk.net"]},{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"]},{name:"Affiliate Window",company:"Digital Window",category:"ad",domains:["*.dwin1.com"]},{name:"Affiliatly",category:"ad",domains:["*.affiliatly.com"]
},{name:"Affino",category:"ad",domains:["affino.com"]},{name:"Affirm",category:"utility",domains:["*.affirm.com"]},{name:"Afterpay",company:"Block",category:"utlity",homepage:"https://www.afterpay.com/",domains:["*.afterpay.com"]},{name:"Agenda Media",category:"ad",domains:["*.agendamedia.co.uk"]},{name:"Aggregate Knowledge",company:"Neustar",category:"ad",domains:["*.agkn.com"]},{name:"AgilOne",category:"marketing",domains:["*.agilone.com"]},{name:"Agility",category:"hosting",domains:["*.agilitycms.com"]},{name:"Ahalogy",category:"social",domains:["*.ahalogy.com"]},{name:"Aheadworks",category:"utility",domains:["*.aheadworks.com"]},{name:"AirPR",category:"analytics",domains:["*.airpr.com"]},{name:"Aira",category:"ad",domains:["*.aira.net"]},{name:"Airport Parking and Hotels",category:"content",domains:["*.aph.com"]},{name:"Akanoo",category:"analytics",domains:["*.akanoo.com"]},{name:"Alchemy",company:"AndBeyond.Media",category:"ad",domains:["*.andbeyond.media"]},{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"]},{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"]},{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"]},{name:"Amplitude Mobile Analytics",company:"Amplitude",category:"analytics",domains:["*.amplitude.com","d24n15hnbwhuhn.cloudfront.net"]},{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"]},{name:"AnimateJS",category:"utility",domains:["*.animatedjs.com"]},{name:"AnswerDash",category:"customer-success",domains:["*.answerdash.com"]},{name:"Answers",category:"analytics",domains:["*.answcdn.com","*.answers.com","*.dsply.com"]},{name:"Apester",category:"analytics",domains:["*.apester.com","*.qmerce.com"]},{name:"Apligraf SmartWeb",company:"Apligraf",category:"utility",
domains:["*.apligraf.com.br"]},{name:"Appier",category:"ad",domains:["*.appier.net"]},{name:"Appsolute",category:"utility",homepage:"https://appsolute.us/",domains:["dropahint.love"]},{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"]},{name:"Atom Data",category:"other",domains:["*.atomdata.io"]},{name:"Attribution",category:"ad",domains:["*.attributionapp.com"]},{name:"Audience 360",company:"Datapoint Media",category:"ad",domains:["*.dpmsrv.com"]},{name:"Audience Science",category:"ad",domains:["*.revsci.net"]},{name:"AudienceSearch",company:"Intimate Merger",category:"ad",domains:["*.im-apps.net"]},{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"]},{name:"Autopilot",category:"ad",domains:["*.autopilothq.com"]},{name:"Avail",company:"RichRelevance",category:"ad",domains:["*.avail.net"]},{name:"AvantLink",category:"ad",domains:["*.avmws.com"]},{name:"Avco Systems",category:"utility",domains:["*.avcosystems.com"]},{name:"Avid Media",category:"customer-success",domains:["*.adspdbl.com","*.metadsp.co.uk"]},{name:"Avocet Systems",category:"ad",domains:["*.avocet.io"]},{name:"Avora",category:"analytics",domains:["*.truedash.com"]},{name:"Azure Traffic Manager",company:"Microsoft",category:"other",domains:["*.gateway.net","*.trafficmanager.net"]},{name:"Azure Web Services",company:"Microsoft",category:"cdn",domains:["*.azurewebsites.net","*.azureedge.net","*.msedge.net","*.windows.net"]},{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"]},{name:"Barclaycard SmartPay",company:"Barclaycard",category:"utility",domains:["*.barclaycardsmartpay.com"]},{name:"Barilliance",category:"analytics",domains:["*.barilliance.net","dn3y71tq7jf07.cloudfront.net"]},{name:"Barnebys",category:"other",domains:["*.barnebys.com"]},{name:"Basis",company:"Basis Technologies",category:"ad",homepage:"https://basis.net/",domains:["*.basis.net"]},{name:"Batch Media",category:"ad",domains:["*.t4ft.de"]},{name:"Bauer Consumer Media",category:"content",domains:["*.bauercdn.com","*.greatmagazines.co.uk"]},{name:"Baynote",category:"analytics",domains:["*.baynote.net"]},{name:"Bazaarvoice",category:"analytics",domains:["*.bazaarvoice.com","*.feedmagnet.com"]},{name:"Beachfront Media",category:"ad",domains:["*.bfmio.com"]},{name:"BeamPulse",
category:"analytics",domains:["*.beampulse.com"]},{name:"Beeswax",category:"ad",domains:["*.bidr.io"]},{name:"Beetailer",category:"social",domains:["*.beetailer.com"]},{name:"Best Of Media S.A.",category:"content",domains:["*.servebom.com"]},{name:"Bet365",category:"ad",domains:["*.bet365affiliates.com"]},{name:"Betfair",category:"other",domains:["*.cdnbf.net"]},{name:"Betgenius",company:"Genius Sports",category:"content",domains:["*.connextra.com"]},{name:"Better Banners",category:"ad",domains:["*.betterbannerscloud.com"]},{name:"Better Business Bureau",category:"analytics",domains:["*.bbb.org"]},{name:"Between Digital",category:"ad",domains:["*.betweendigital.com"]},{name:"BidTheatre",category:"ad",domains:["*.bidtheatre.com"]},{name:"Bidtellect",category:"ad",domains:["*.bttrack.com"]},{name:"Bigcommerce",category:"marketing",domains:["*.bigcommerce.com"]},{name:"BitGravity",company:"Tata Communications",category:"content",domains:["*.bitgravity.com"]},{name:"Bitly",
category:"utility",domains:["*.bitly.com","*.lemde.fr","*.bit.ly"]},{name:"Bizible",category:"ad",domains:["*.bizible.com","*.bizibly.com"]},{name:"Bizrate",category:"analytics",domains:["*.bizrate.com"]},{name:"BlastCasta",category:"social",domains:["*.poweringnews.com"]},{name:"Blindado",category:"utility",domains:["*.siteblindado.com"]},{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"]},{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"]},{name:"BlueCava",category:"ad",domains:["*.bluecava.com"]},{name:"BlueKai",company:"Oracle",category:"ad",
domains:["*.bkrtx.com","*.bluekai.com"]},{name:"Bluecore",category:"analytics",domains:["*.bluecore.com"]},{name:"Bluegg",category:"hosting",domains:["d1va5oqn59yrvt.cloudfront.net"]},{name:"Bold Commerce",category:"utility",domains:["*.shappify-cdn.com","*.shappify.com","*.boldapps.net"]},{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"]},{name:"Boomtrain",category:"ad",domains:["*.boomtrain.com","*.boomtrain.net"]},{name:"BoostSuite",category:"ad",domains:["*.poweredbyeden.com"]},{name:"Boostable",category:"ad",domains:["*.boostable.com"]},{name:"Bootstrap Chinese network",category:"cdn",domains:["*.bootcss.com"]},{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"]},{name:"Box",category:"hosting",domains:["*.box.com"]},{name:"Boxever",category:"analytics",domains:["*.boxever.com"]},{name:"Braintree Payments",company:"Paypal",category:"utility",domains:["*.braintreegateway.com"]},{name:"Branch Metrics",category:"ad",domains:["*.branch.io","*.app.link"]},{name:"Brand Finance",category:"other",domains:["*.brandirectory.com"]},{name:"Brand View",category:"analytics",domains:["*.brandview.com"]},{name:"Brandscreen",category:"ad",domains:["*.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"]},{name:"Bugsnag",category:"utility",domains:["*.bugsnag.com","d2wy8f7a9ursnm.cloudfront.net"]},{name:"Burst Media",category:"ad",domains:["*.burstnet.com","*.1rx.io"]},{name:"Burt",category:"analytics",domains:["*.richmetrics.com","*.burt.io"]},{name:"Business Message",category:"ad",domains:["*.message-business.com"]},{name:"Business Week",company:"Bloomberg",category:"social",domains:["*.bwbx.io"]},{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"]},{
name:"BuySight (AOL)",category:"ad",domains:["*.pulsemgr.com"]},{name:"Buyapowa",category:"ad",domains:["*.co-buying.com"]},{name:"BuzzFeed",category:"social",domains:["*.buzzfed.com"]},{name:"C1X",category:"ad",domains:["*.c1exchange.com"]},{name:"C3 Metrics",category:"analytics",domains:["*.c3tag.com"]},{name:"CANDDi",company:"Campaign and Digital Intelligence",category:"ad",domains:["*.canddi.com"]},{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"]},{name:"CJ Affiliate",company:"Conversant",category:"ad",domains:["*.cj.com","*.dpbolvw.net"]},{name:"CJ Affiliate by Conversant",company:"Conversant",category:"ad",domains:["*.ftjcfx.com"]},{name:"CNBC",category:"content",domains:["*.cnbc.com"]},{name:"CNET Content Solutions",
company:"CBS Interactive",category:"content",domains:["*.cnetcontent.com"]},{name:"CPEx",category:"content",domains:["*.cpex.cz"]},{name:"CPXi",category:"ad",domains:["*.cpxinteractive.com"]},{name:"CUBED Attribution",company:"CUBED",category:"ad",domains:["*.withcubed.com"]},{name:"Cachefly",category:"utility",domains:["*.cachefly.net"]},{name:"Calendly",category:"other",domains:["*.calendly.com"]},{name:"CallRail",category:"analytics",domains:["*.callrail.com"]},{name:"CallTrackingMetrics",category:"analytics",domains:["*.tctm.co"]},{name:"Canned Banners",category:"ad",domains:["*.cannedbanners.com"]},{name:"Canopy Labs",category:"analytics",domains:["*.canopylabs.com"]},{name:"Capita",category:"utility",domains:["*.crcom.co.uk"]},{name:"Captify Media",category:"ad",domains:["*.cpx.to"]},{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"]},{name:"Caspian Media",category:"ad",domains:["*.caspianmedia.com"]},{name:"Cast",category:"utility",domains:["*.cast.rocks"]},{name:"Catch",category:"other",domains:["*.getcatch.com"]},{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"]},{name:"Centro",category:"ad",domains:["*.brand-server.com"]},{name:"Ceros",category:"other",domains:["ceros.com","view.ceros.com"]},{name:"Ceros Analytics",company:"Ceros",category:"analytics",domains:["api.ceros.com"]},{name:"Certona",category:"analytics",domains:["*.certona.net"]},{name:"Certum",category:"utility",
domains:["*.ocsp-certum.com","*.certum.pl"]},{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"]},{name:"ChannelApe",company:"ChannelApe",category:"other",homepage:"https://www.channelape.com/",domains:["*.channelape.com"]},{name:"Chargeads Oscar",company:"Chargeads",category:"ad",domains:["*.chargeads.com"]},{name:"Charities Aid Foundation",category:"utility",domains:["*.cafonline.org"]},{name:"Chartbeat",category:"analytics",domains:["*.chartbeat.com","*.chartbeat.net"]},{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"]},{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"]},{name:"Civic",category:"hosting",domains:["*.civiccomputing.com"]},{name:"ClearRise",category:"customer-success",domains:["*.clearrise.com"]},{name:"Clearstream",category:"ad",domains:["*.clrstm.com"]},{name:"Clerk.io ApS",category:"analytics",domains:["*.clerk.io"]},{name:"CleverDATA",category:"ad",domains:["*.1dmp.io"]},{name:"CleverTap",category:"analytics",domains:["d2r1yp2w7bby2u.cloudfront.net"]},{name:"Click Density",category:"analytics",domains:["*.clickdensity.com"]},{name:"Click4Assistance",category:"customer-success",domains:["*.click4assistance.co.uk"]},{name:"ClickDesk",category:"customer-success",domains:["*.clickdesk.com","d1gwclp1pmzk26.cloudfront.net"]},{
name:"ClickDimensions",category:"ad",domains:["*.clickdimensions.com"]},{name:"Clickadu (Winner Solutions)",category:"ad",domains:["*.clickadu.com"]},{name:"Clickagy Audience Lab",company:"Clickagy",category:"ad",domains:["*.clickagy.com"]},{name:"Clickio",category:"ad",domains:[]},{name:"Clicktale",category:"analytics",domains:["*.cdngc.net","*.clicktale.net"]},{name:"Clicktripz",category:"content",domains:["*.clicktripz.com"]},{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 &amp; Co",category:"cdn",domains:["*.typography.com"]},{name:"CloudSponge",category:"ad",domains:["*.cloudsponge.com"]},{name:"CloudVPS",category:"other",domains:["*.adoftheyear.com","*.objectstore.eu"]},{name:"Cloudinary",category:"content",domains:["*.cloudinary.com"]},{
name:"Cloudqp",company:"Cloudwp",category:"other",domains:["*.cloudwp.io"]},{name:"Cludo",category:"utility",domains:["*.cludo.com"]},{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"]},{name:"CommerceHub",category:"marketing",domains:["*.mercent.com"]},{name:"Commission Factory",category:"ad",domains:["*.cfjump.com"]},{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"]},{name:"Comodo Certificate Authority",company:"Comodo",category:"utility",
domains:["crt.comodoca.com","*.comodoca4.com","ocsp.comodoca.com","ocsp.usertrust.com","crt.usertrust.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"]},{name:"Confirmit",category:"analytics",domains:["*.confirmit.com"]},{name:"Connatix",category:"ad",domains:["*.connatix.com"]},{name:"Connect Events",category:"hosting",domains:["*.connectevents.com.au"]},{name:"Constant Contact",category:"ad",domains:["*.ctctcdn.com"]},{name:"Constructor.io",category:"utility",domains:["*.cnstrc.com"]},{name:"Contabo",category:"hosting",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"]},{name:"ContextWeb",
category:"ad",domains:["*.contextweb.com"]},{name:"Continental Exchange Solutions",category:"utility",domains:["*.hifx.com"]},{name:"Converge-Digital",category:"ad",domains:["*.converge-digital.com"]},{name:"Conversant",category:"analytics",domains:["*.dotomi.com","*.dtmpub.com","*.emjcd.com","mediaplex.com","*.tqlkg.com","*.fastclick.net"]},{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"]},{name:"Conversio",category:"ad",domains:["*.conversio.com"]},{name:"Conversion Labs",category:"ad",domains:["*.net.pl"]},{name:"Conversion Logic",category:"ad",domains:["*.conversionlogic.net"]},{name:"Convert Insights",category:"analytics",domains:["*.convertexperiments.com"]},{name:"ConvertMedia",category:"ad",domains:["*.admailtiser.com","*.basebanner.com","*.cmbestsrv.com","*.vidfuture.com","*.zorosrv.com"]},{name:"Convertro",
category:"ad",domains:["*.convertro.com"]},{name:"Conviva",category:"content",domains:["*.conviva.com"]},{name:"Cookie Reports",category:"utility",domains:["*.cookiereports.com"]},{name:"Cookie-Script.com",category:"utility",domains:["*.cookie-script.com"]},{name:"CookieQ",company:"Baycloud Systems",category:"utility",domains:["*.cookieq.com"]},{name:"CoolaData",category:"analytics",domains:["*.cooladata.com"]},{name:"CopperEgg",category:"analytics",domains:["*.copperegg.com","d2vig74li2resi.cloudfront.net"]},{name:"Council ad Network",category:"ad",domains:["*.counciladvertising.net"]},{name:"Covert Pics",category:"content",domains:["*.covet.pics"]},{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"]},{name:"Cross Pixel Media",category:"ad",domains:["*.crsspxl.com"]},{name:"Crosswise",category:"ad",domains:["*.univide.com"]},{name:"Crowd Control",company:"Lotame",category:"ad",domains:["*.crwdcntrl.net"]},{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"]},{name:"Customer Acquisition Cloud",company:"[24]7",category:"ad",domains:["*.campanja.com"]},{name:"Customer.io",category:"ad",domains:["*.customer.io"]},{name:"Custora",category:"analytics",domains:["*.custora.com"]},{name:"Cxense",category:"ad",domains:["*.cxense.com","*.cxpublic.com","*.emediate.dk","*.emediate.eu"]},{name:"CyberKnight",company:"Namogoo",
category:"utility",domains:["*.namogoo.com"]},{name:"CyberSource (Visa)",category:"utility",domains:["*.authorize.net"]},{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"]},{name:"DTSCOUT",category:"ad",domains:["*.dtscout.com"]},{name:"Dailykarma",category:"utility",homepage:"https://www.dailykarma.com/",domains:["*.dailykarma.io"]},{name:"Dailymotion",category:"content",domains:["*.dailymotion.com","*.dmxleo.com","*.dm.gg","*.pxlad.io","*.dmcdn.net","*.sublimevideo.net"]},{name:"Dash Hudson",company:"Dash Hudson",category:"content",domains:["*.dashhudson.com"]},{name:"Datacamp",category:"utility",domains:["*.cdn77.org"]},{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"]},{name:"Dataxu",category:"marketing",domains:["*.w55c.net"]},{name:"DatoCMS",homepage:"https://www.datocms.com/",category:"content",domains:["*.datocms-assets.com"]},{name:"Datonics",category:"ad",domains:["*.pro-market.net"]},{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"]},{name:"Deep Forest Media",company:"Rakuten",category:"ad",domains:["*.dpclk.com"]},{name:"DeepIntent",category:"ad",domains:["*.deepintent.com"]},{name:"Delicious Media",category:"social",domains:["*.delicious.com"]},{name:"Delineo",category:"ad",domains:["*.delineo.com"]},{name:"Delta Projects AB",category:"ad",
domains:["*.de17a.com"]},{name:"Demand Media",category:"content",domains:["*.dmtracker.com"]},{name:"DemandBase",category:"marketing",domains:["*.demandbase.com"]},{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"]},{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"]},{name:"Digioh",category:"ad",domains:["*.lightboxcdn.com"]},{name:"Digital 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"]},{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"]},{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"]},{name:"Distribute Travel",category:"ad",domains:["*.dtrck.net"]},{name:"District M",category:"ad",domains:["*.districtm.io"]},{name:"DistroScale",category:"ad",domains:["*.jsrdn.com"]},{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"]
},{name:"Dropbox",category:"utility",domains:["*.dropboxusercontent.com"]},{name:"Dyn Real User Monitoring",company:"Dyn",category:"analytics",domains:["*.jisusaiche.biz","*.dynapis.com","*.jisusaiche.com","*.dynapis.info"]},{name:"DynAdmic",category:"ad",domains:["*.dyntrk.com"]},{name:"Dynamic Converter",category:"utility",domains:["*.dynamicconverter.com"]},{name:"Dynamic Dummy Image Generator",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"]},{name:"Dynatrace",category:"analytics",domains:["*.ruxit.com","js-cdn.dynatrace.com"]},{name:"ec-concier",homepage:"https://ec-concier.com/",category:"marketing",domains:["*.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"]},{name:"EQ works",category:"ad",domains:["*.eqads.com"]},{name:"ESV Digital",category:"analytics",domains:["*.esearchvision.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"]},{name:"Edge Web Fonts",company:"Adobe Systems",category:"cdn",domains:["*.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"]},{name:"Effiliation sa",category:"ad",domains:["*.effiliation.com"]},{name:"Ekm Systems",category:"analytics",domains:["*.ekmsecure.com","*.ekmpinpoint.co.uk"]},{
name:"Elastera",category:"hosting",domains:["*.elastera.net"]},{name:"Elastic Ad",category:"ad",domains:["*.elasticad.net"]},{name:"Elastic Load Balancing",company:"Amazon Web Services",category:"hosting",domains:["*.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"]},{name:"EmpathyBroker Site Search",company:"EmpathyBroker",category:"utility",domains:["*.empathybroker.com"]},{name:"Enfusen",category:"analytics",domains:["*.enfusen.com"]},{name:"Engadget",company:"Engadget (AOL)",
category:"content",domains:["*.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"]},{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"]},{name:"Ethnio",category:"analytics",domains:["*.ethn.io"]},{name:"Eulerian Technologies",category:"ad",domains:["*.eolcdn.com"]},{name:"Euroland",category:"utility",domains:["*.euroland.com"]},{name:"European Interactive Digital ad Alli",category:"utility",domains:["*.edaa.eu"]},{name:"Eventbrite",category:"hosting",domains:["*.evbuc.com","*.eventbrite.co.uk"]},{name:"Everflow",category:"analytics",
domains:["*.tp88trk.com"]},{name:"Evergage",category:"analytics",domains:["*.evergage.com","*.evgnet.com"]},{name:"Everquote",category:"content",domains:["*.evq1.com"]},{name:"Everyday Health",category:"ad",domains:["*.agoramedia.com"]},{name:"Evidon",category:"analytics",domains:["*.evidon.com"]},{name:"Evolve Media",category:"content",domains:["*.evolvemediallc.com"]},{name:"Exactag",category:"ad",domains:["*.exactag.com"]},{name:"ExoClick",category:"ad",domains:["*.exoclick.com"]},{name:"Expedia",category:"content",domains:["*.travel-assets.com","*.trvl-media.com","*.trvl-px.com","*.uciservice.com"]},{name:"Expedia Australia",company:"Expedia",category:"content",domains:["*.expedia.com.au"]},{name:"Expedia Canada",company:"Expedia",category:"content",domains:["*.expedia.ca"]},{name:"Expedia France",company:"Expedia",category:"content",domains:["*.expedia.fr"]},{name:"Expedia Germany",company:"Expedia",category:"content",domains:["*.expedia.de"]},{name:"Expedia Italy",
company:"Expedia",category:"content",domains:["*.expedia.it"]},{name:"Expedia Japan",company:"Expedia",category:"content",domains:["*.expedia.co.jp"]},{name:"Expedia USA",company:"Expedia",category:"content",domains:["*.expedia.com"]},{name:"Expedia United Kingdom",company:"Expedia",category:"content",domains:["*.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"]},{name:"Exponea",category:"analytics",domains:["*.exponea.com"]},{name:"Exponential Interactive",category:"ad",domains:["*.exponential.com"]},{name:"Extensis WebInk",category:"cdn",domains:["*.webink.com"]},{name:"Extole",category:"ad",domains:["*.extole.com","*.extole.io"]},{name:"Ey-Seren",category:"analytics",domains:["*.webabacus.com"]},{name:"EyeView",category:"ad",domains:["*.eyeviewads.com"]},{name:"Eyeota",
category:"ad",domains:["*.eyeota.net"]},{name:"Ezakus Pretargeting",company:"Ezakus",category:"ad",domains:["*.ezakus.net"]},{name:"Ezoic",category:"analytics",domains:["*.ezoic.net"]},{name:"FLXone",company:"Teradata",category:"ad",domains:["*.pangolin.blue","*.flx1.com","d2hlpp31teaww3.cloudfront.net","*.flxpxl.com"]},{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:"Fanplayr",category:"analytics",domains:["*.fanplayr.com","d38nbbai6u794i.cloudfront.net"]},{name:"Fast Thinking",company:"NE Marketing",category:"marketing",domains:["*.fast-thinking.co.uk"]},{name:"Fastest Forward",category:"analytics",domains:["*.gaug.es"]},{name:"Fastly",category:"utility",domains:["*.fastly.net"]},{name:"Feedbackify",company:"InsideMetrics",category:"analytics",
domains:["*.feedbackify.com"]},{name:"Feefo.com",company:"Feefo",category:"analytics",domains:["*.feefo.com"]},{name:"Fidelity Media",category:"ad",domains:["*.fidelity-media.com"]},{name:"Filestack",category:"content",domains:["*.filepicker.io"]},{name:"Finsbury Media",category:"ad",domains:["*.finsburymedia.com"]},{name:"Firepush",category:"utility",domains:["*.firepush.io"]},{name:"FirstImpression",category:"ad",domains:["*.firstimpression.io"]},{name:"Fit Analytics",category:"other",domains:["*.fitanalytics.com"]},{name:"Fits Me",category:"analytics",domains:["*.fits.me"]},{name:"Fivetran",category:"analytics",domains:["*.fivetran.com"]},{name:"FlexShopper",category:"utility",domains:["*.flexshopper.com"]},{name:"Flickr",category:"content",domains:["*.flickr.com","*.staticflickr.com"]},{name:"Flipboard",category:"social",domains:["*.flipboard.com"]},{name:"Flipdesk",category:"customer-success",homepage:"https://flipdesk.jp/",domains:["*.flipdesk.jp"]},{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"]},{name:"Flockler",category:"ad",domains:["*.flockler.com"]},{name:"Flowplayer",category:"content",domains:["*.flowplayer.org"]},{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"]},{name:"ForeSee",company:"Answers",category:"analytics",domains:["*.4seeresults.com","*.answerscloud.com","*.foresee.com","*.foreseeresults.com"]},{name:"Forensiq",category:"utility",
domains:["*.fqtag.com"]},{name:"Fort Awesome",category:"cdn",domains:["*.fortawesome.com"]},{name:"Forter",category:"utility",domains:["*.forter.com"]},{name:"Forward Internet Group",category:"hosting",domains:["*.f3d.io"]},{name:"Forward3D",category:"ad",domains:["*.forward3d.com"]},{name:"Fospha",category:"analytics",domains:["*.fospha.com"]},{name:"Foursixty",category:"customer-success",domains:["*.foursixty.com"]},{name:"FoxyCart",category:"utility",domains:["*.foxycart.com"]},{name:"Fraudlogix",category:"utility",domains:["*.yabidos.com"]},{name:"FreakOut",category:"ad",domains:["*.fout.jp"]},{name:"Freespee",category:"customer-success",domains:["*.freespee.com"]},{name:"Freetobook",category:"content",domains:["*.freetobook.com"]},{name:"Fresh 8 Gaming",category:"ad",domains:["*.fresh8.co"]},{name:"Fresh Relevance",category:"analytics",domains:["*.freshrelevance.com","*.cloudfront.ne","d1y9qtn9cuc3xw.cloudfront.net","d81mfvml8p5ml.cloudfront.net","dkpklk99llpj0.cloudfront.net"]},{
name:"Friendbuy",category:"ad",domains:["*.friendbuy.com","djnf6e5yyirys.cloudfront.net"]},{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"]},{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"]},{name:"GainCloud",company:"GainCloud Systems",category:"other",domains:["*.egaincloud.net"]},{name:"Gath Adams",category:"content",domains:["*.iwantthatflight.com.au"]},{name:"Gecko Tribe",category:"social",domains:["*.geckotribe.com"]},{name:"Gemius",category:"ad",
domains:["*.gemius.pl"]},{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"]},{name:"Geniuslink",category:"analytics",domains:["*.geni.us"]},{name:"GeoRiot",category:"other",domains:["*.georiot.com"]},{name:"GeoTrust",category:"utility",domains:["*.geotrust.com"]},{name:"Geoplugin",category:"utility",domains:["*.geoplugin.com","*.geoplugin.net"]},{name:"Georeferencer",company:"Klokan Technologies",category:"utility",domains:["*.georeferencer.com"]},{name:"GetIntent RTBSuite",company:"GetIntent",category:"ad",domains:["*.adhigh.net"]},{name:"GetResponse",category:"ad",domains:["*.getresponse.com"]},{name:"GetSiteControl",company:"GetWebCraft",category:"utility",domains:["*.getsitecontrol.com"]},{name:"GetSocial",category:"social",domains:["*.getsocial.io"]},{
name:"Getty Images",category:"content",domains:["*.gettyimages.com","*.gettyimages.co.uk"]},{name:"Gfycat",company:"Gycat",category:"utility",domains:["*.gfycat.com"]},{name:"Ghostery Enterprise",company:"Ghostery",category:"marketing",domains:["*.betrad.com"]},{name:"Giant Media",category:"ad",domains:["*.videostat.com"]},{name:"Gigya",category:"analytics",domains:["*.gigya.com"]},{name:"GitHub",category:"utility",domains:["*.github.com","*.githubusercontent.com","*.github.io","*.rawgit.com"]},{name:"Gladly",company:"Gladly",homepage:"https://www.gladly.com/",category:"customer-success",domains:["*.gladly.com"]},{name:"Glassdoor",category:"content",domains:["*.glassdoor.com"]},{name:"Gleam",category:"marketing",domains:["*.gleam.io"]},{name:"Global Digital Markets",category:"ad",domains:["*.gdmdigital.com"]},{name:"Global-e",category:"hosting",domains:["*.global-e.com"]},{name:"GlobalSign",category:"utility",domains:["*.globalsign.com","*.globalsign.net"]},{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"]},{name:"Google Trusted Stores",company:"Google",category:"utility",domains:["*.googlecommerce.com"]},{name:"Google Video",company:"Google",category:"content",domains:["*.googlevideo.com"]},{name:"Google reCAPTCHA",company:"Google",
category:"utility",domains:["*.recaptcha.net"]},{name:"GovMetric",company:"ROL Solutions",category:"analytics",domains:["*.govmetric.com"]},{name:"Granify",category:"analytics",domains:["*.granify.com"]},{name:"Grapeshot",category:"ad",domains:["*.gscontxt.net","*.grapeshot.co.uk"]},{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"]},{name:"GumGum",category:"ad",domains:["*.gumgum.com"]},{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"]},{name:"Has Offers",
company:"TUNE",category:"ad",domains:["*.go2cloud.org"]},{name:"Hawk Search",category:"utility",domains:["*.hawksearch.com"]},{name:"Haymarket Media Group",category:"content",domains:["*.brandrepublic.com","*.hbpl.co.uk"]},{name:"Heap",category:"analytics",domains:["*.heapanalytics.com"]},{name:"Hearst Communications",category:"content",domains:["*.h-cdn.co","*.hearstdigital.com","*.hearstlabs.com","*.hearst.io","*.cdnds.net"]},{name:"Heatmap",category:"analytics",domains:["*.heatmap.it"]},{name:"Heroku",category:"other",domains:["*.herokuapp.com"]},{name:"Hexton",category:"utility",domains:["*.hextom.com"]},{name:"Hibernia Networks",category:"utility",domains:["*.hiberniacdn.com"]},{name:"High Impact Media",category:"ad",domains:["*.reactx.com"]},{name:"Highcharts",category:"utility",domains:["*.highcharts.com"]},{name:"Highwinds",category:"utility",domains:["*.hwcdn.net"]},{name:"HitsLink",category:"analytics",domains:["*.hitslink.com"]},{name:"Hola Networks",category:"other",
domains:["*.h-cdn.com"]},{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"]},{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"]},{name:"I-Behavior",company:"WPP",category:"ad",domains:["*.ib-ibi.com"]},{name:"i-mobile",company:"i-mobile",category:"ad",domains:["*.i-mobile.co.jp"]},{name:"IBM Digital Analytics",company:"IBM",category:"analytics",
domains:["*.cmcore.com","coremetrics.com","data.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"]},{name:"IBM Digital Data Exchange",company:"IBM",category:"tag-manager",domains:["tagmanager.coremetrics.com"]},{name:"IBM Tealeaf",company:"IBM",category:"analytics",domains:["*.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"]},{name:"ICF Technology",category:"content",domains:["*.camads.net"]},{name:"IFDNRG",category:"hosting",domains:["*.ifdnrg.com"]},{name:"IMRG",category:"analytics",domains:["*.peermap.com","*.imrg.org"]},{name:"IPONWEB",category:"ad",
domains:["*.company-target.com","*.liadm.com","*.iponweb.net","*.p161.net"]},{name:"IQ Mobile",category:"utility",domains:["*.iqm.cc"]},{name:"IS Group",category:"hosting",domains:["*.creative-serving.com"]},{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"]},{name:"IdenTrust",category:"utility",domains:["*.identrust.com"]},{name:"Ido",category:"customer-success",domains:["*.idio.co"]},{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"]},{name:"Impact Radius",category:"ad",domains:["*.impactradius-event.com","*.impactradius-go.com","*.7eer.net","d3cxv97fi8q177.cloudfront.net","*.evyy.net","*.ojrq.net"]},{name:"Improve Digital",category:"ad",domains:["*.360yield.com"]},{name:"Improvely",category:"analytics",domains:["*.iljmp.com"]},{name:"InMobi",category:"ad",domains:["*.inmobi.com"]},{name:"InSkin Media",category:"ad",domains:["*.inskinad.com","*.inskinmedia.com"]},{name:"Inbenta",category:"customer-success",domains:["*.inbenta.com"]},{name:"Incisive Media",category:"content",domains:["*.incisivemedia.com"]},{name:"Indeed",category:"content",domains:["*.indeed.com"]},{name:"Index Exchange",company:"WPP",category:"ad",domains:["*.casalemedia.com","*.indexww.com"]},{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"]},{name:"Infoline",category:"analytics",domains:["*.ioam.de"]},{name:"Infolinks",category:"ad",domains:["*.infolinks.com"]},{name:"Infopark",category:"hosting",domains:["*.scrvt.com"]},{name:"Infusionsoft",category:"ad",domains:["*.infusionsoft.com"]},{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"]},{name:"Insight Express",category:"analytics",domains:["*.insightexpressai.com"]},{name:"Insipio",category:"other",domains:["*.insipio.com"]},{name:"Inspectlet",category:"analytics",domains:["*.inspectlet.com"]},{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"]},{name:"Intercept Interactive",category:"ad",domains:["*.undertone.com"]},{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"]},{name:"Investis Flife",category:"hosting",
domains:["*.quartalflife.com"]},{name:"Invodo",category:"ad",domains:["*.invodo.com"]},{name:"iSite",category:"analytics",domains:["*.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"]},{name:"Jellyfish",category:"ad",domains:["*.jellyfish.net"]},{name:"JetStream",category:"content",domains:["*.xlcdn.com"]},{name:"JingDong",category:"content",domains:["*.3.com","*.jd.com"]},{name:"Jivox",category:"ad",domains:["*.jivox.com"]},{name:"Jobvite",category:"content",domains:["*.jobvite.com"]},{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"]},{name:"JustPremium",category:"ad",domains:["*.net.net"]},{name:"JustPremium Ads",company:"JustPremium",category:"ad",domains:["*.justpremium.com"]},{name:"JustUno",category:"ad",domains:["*.justuno.com","d2j3qa5nc37287.cloudfront.net"]},{name:"KINX (Korea Internet Neutral eXchange)",category:"other",domains:["*.kinxcdn.com"]},{name:"KISSmetrics",category:"analytics",domains:["*.kissmetrics.com","doug1izaerwt3.cloudfront.net","dsyszv14g9ymi.cloudfront.net"]},{name:"Kaizen Platform",category:"analytics",domains:["*.kaizenplatform.net"]},{name:"Kakao",category:"social",domains:["*.daum.net","*.daumcdn.net"]},{name:"Kaltura Video Platform",company:"Kaltura",category:"content",domains:["*.kaltura.com"]},{name:"Kameleoon",category:"analytics",domains:["*.kameleoon.com","*.kameleoon.eu"]},{name:"Kampyle",category:"analytics",domains:["*.kampyle.com"]},{name:"Kantar",category:"analytics",domains:["*.sesamestats.com"]},{name:"Kargo",category:"marketing",
domains:["*.kargo.com"]},{name:"KARTE",company:"Plaid",homepage:"https://karte.io/",category:"marketing",domains:["*.karte.io"]},{name:"Kauli",category:"ad",domains:["*.kau.li"]},{name:"Keen",company:"Keen",homepage:"https://keen.io/",category:"analytics",domains:["*.keen.io","d26b395fwzu5fz.cloudfront.net"]},{name:"Kelkoo",category:"hosting",domains:["*.kelkoo.com"]},{name:"Kenshoo",category:"marketing",domains:["*.xg4ken.com"]},{name:"Key CDN",category:"utility",domains:["*.kxcdn.com"]},{name:"Keynote",company:"Dynatrace",category:"analytics",domains:["*.keynote.com"]},{name:"Keywee",category:"ad",domains:["*.keywee.co"]},{name:"Kiosked",category:"ad",domains:["*.kiosked.com"]},{name:"Klarna",category:"utility",domains:["*.klarna.com"]},{name:"Klaviyo",category:"ad",domains:["*.klaviyo.com"]},{name:"Klevu Search",company:"Klevu",category:"utility",domains:["*.klevu.com"]},{name:"Klick2Contact",category:"customer-success",domains:["*.klick2contact.com"]},{name:"Knight Lab",
company:"Northwestern University",category:"utility",domains:["*.knightlab.com"]},{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"]},{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"]},{
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"]},{name:"LeasdBoxer",company:"LeadBoxer",category:"ad",domains:["*.leadboxer.com"]},{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:["footprint.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"]},{name:"Likelihood",company:"LIkeihood",category:"hosting",domains:["*.likelihood.com"]},{name:"LikeShop",company:"Dash Hudson",category:"content",domains:["likeshop.me"]},{name:"LINE Corporation",category:"ad",domains:["*.line-scdn.net","*.line.me"]},{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"]},{name:"LiveBurst",category:"ad",domains:["*.liveburst.com"]},{name:"LiveClicker",category:"ad",domains:["*.liveclicker.net"]},{name:"LiveHelpNow",category:"customer-success",domains:["*.livehelpnow.net"]},{name:"LiveInternet",category:"analytics",
domains:["*.yadro.ru"]},{name:"LiveJournal",category:"social",domains:["*.livejournal.com","*.livejournal.net"]},{name:"LivePerson",category:"customer-success",homepage:"https://www.liveperson.com/",domains:["*.liveperson.com","*.look.io","*.liveperson.net","*.lpsnmedia.net"]},{name:"LiveRail",company:"Facebook",category:"ad",domains:["*.liverail.com","*.lrcdn.net"]},{name:"LiveTex",category:"customer-success",domains:["*.livetex.ru"]},{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"]},{name:"Logentries",company:"Rapid",category:"utility",domains:["*.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"]},{name:"LongTail Ad Solutions",category:"ad",domains:["*.jwpcdn.com","*.jwplatform.com","*.jwplayer.com","*.jwpltx.com","*.jwpsrv.com","*.longtailvideo.com"]},{name:"Loop Commerce",category:"other",domains:["*.loopassets.net"]},{name:"Loop11",category:"analytics",domains:["*.loop11.com"]},{name:"LoopMe",category:"ad",domains:["*.loopme.biz","*.loopme.com","*.vntsm.com","*.loopme.me"]},{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"]},{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"]},{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"]},{name:"Macromill",company:"Macromill",category:"analytics",homepage:"https://group.macromill.com/",domains:["*.macromill.com"]},{name:"Macropod BugHerd",company:"Macropod",category:"utility",domains:["*.bugherd.com"]},{name:"Madison Logic",category:"marketing",domains:["*.ml314.com"]},{name:"Madmetrics",company:"Keyade",category:"analytics",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"]},{name:"MailPlus",category:"ad",domains:["*.mailplus.nl"]},{name:"Mapbox",
category:"utility",domains:["*.mapbox.com"]},{name:"Maptive",category:"utility",domains:["*.maptive.com"]},{name:"Marcaria.com",category:"other",domains:["*.gooo.al"]},{name:"Marchex",category:"analytics",domains:["*.voicestar.com","*.marchex.io"]},{name:"Mark and Mini",category:"ad",domains:["*.markandmini.com"]},{name:"Marker",category:"utility",domains:["*.marker.io"]},{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"]},{name:"Mashable",category:"social",domains:["*.mshcdn.com"]},{name:"MatchWork",category:"utility",domains:["*.matchwork.com"]},{name:"MathJax",category:"utility",domains:["*.mathjax.org"]},{name:"Mather Economics",category:"analytics",domains:["*.matheranalytics.com"]},{name:"MaxCDN Enterprise",company:"MaxCDN",category:"utility",
domains:["*.netdna-cdn.com","*.netdna-ssl.com"]},{name:"MaxMind",category:"utility",domains:["*.maxmind.com"]},{name:"MaxPoint Interactive",category:"ad",domains:["*.mxptint.net"]},{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"],homepage:"https://www.measured.com/"},{name:"Media IQ",category:"analytics",domains:["*.mediaiqdigital.com"]},{name:"Media Management Technologies",category:"ad",domains:["*.speedshiftmedia.com"]},{name:"Media Temple",category:"hosting",domains:["*.goodlayers2.com"]},{name:"Mediabong",category:"ad",domains:["*.mediabong.net"]},{name:"Mediahawk",category:"analytics",domains:["*.mediahawk.co.uk"]},{name:"Mediahub",category:"ad",domains:["*.hubverifyandoptimize.com","*.projectwatchtower.com"]},{
name:"Mediasyndicator",category:"ad",domains:["*.creativesyndicator.com"]},{name:"Medium",category:"content",domains:["*.medium.com"]},{name:"Meetrics",category:"ad",domains:["*.de.com","*.meetrics.net","*.mxcdn.net"]},{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"]},{name:"Merchant Equipment Store",category:"utility",domains:["*.merchantequip.com"]},{name:"Merchenta",category:"customer-success",domains:["*.merchenta.com"]},{name:"Merkle Digital Data Exchange",company:"Merkle",category:"ad",domains:["*.brilig.com"]},{name:"Merkle Paid Search",company:"Merkle",category:"ad",domains:["*.rkdms.com"]},{name:"Met Office",
category:"content",domains:["*.metoffice.gov.uk"]},{name:"Meta Broadcast",category:"social",domains:["*.metabroadcast.com"]},{name:"Michael Associates",category:"ad",domains:["*.checktestsite.com"]},{name:"Michelin",category:"content",domains:["*.viamichelin.com"]},{name:"Microad",category:"ad",domains:["*.microad.jp"]},{name:"Microsoft Certificate Services",company:"Microsoft",category:"utility",domains:["*.msocsp.com"]},{name:"Microsoft Hosted Libs",company:"Microsoft",category:"cdn",domains:["*.aspnetcdn.com"]},{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"]},{name:"MonetizeMore",category:"ad",domains:["*.m2.ai"]},{name:"Monitor",company:"Econda",category:"analytics",domains:["*.econda-monitor.de"]},{name:"Monkey Frog Media",category:"content",domains:["*.monkeyfrogmedia.com"]},{name:"Monotype",category:"cdn",domains:["*.fonts.com","*.fonts.net"]},{name:"Moore-Wilson",category:"ad",domains:["*.mwdev.co.uk"]},{name:"Moovweb",category:"utility",domains:["*.moovweb.net"]},{name:"Mopinion",category:"analytics",domains:["*.mopinion.com"]},{name:"MotionPoint",category:"other",domains:["*.convertlanguage.com"]},{name:"Mouse3K",category:"analytics",
domains:["*.mouse3k.com"]},{name:"MouseStats",category:"analytics",domains:["*.mousestats.com"]},{name:"Mouseflow",category:"analytics",domains:["*.mouseflow.com"]},{name:"Movable Ink",category:"analytics",domains:["*.micpn.com"]},{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"]},{name:"Multiview",category:"content",domains:["*.multiview.com","*.track-mv.com"]},{name:"Mux",category:"analytics",domains:["*.litix.io"]},{name:"MyAds",company:"MyBuys",category:"analytics",domains:["*.veruta.com"]},{name:"MyBuys",category:"analytics",domains:["*.mybuys.com"]},{name:"MyFonts",category:"cdn",domains:["*.myfonts.net"]},{name:"MyRegistry",category:"other",domains:["*.myregistry.com"]},{name:"MySpace",company:"Specific Media",category:"social",
domains:["*.myspace.com"]},{name:"Mynewsdesk",category:"utility",domains:["*.mynewsdesk.com"]},{name:"NAVIS",category:"content",domains:["*.navistechnologies.info"]},{name:"NCC Group Real User Monitoring",company:"NCC Group",category:"analytics",domains:["*.nccgroup-webperf.com"]},{name:"NEORY Marketing Cloud",company:"NEORY",category:"marketing",domains:["*.ad-srv.net"]},{name:"Nanigans",category:"ad",domains:["*.nanigans.com"]},{name:"Nano Interactive",category:"ad",domains:["*.audiencemanager.de"]},{name:"Nanorep",company:"Nanorep Technologies",category:"customer-success",domains:["*.nanorep.com"]},{name:"Narrative",category:"ad",domains:["*.narrative.io"]},{name:"Native Ads",category:"ad",domains:["*.nativeads.com"]},{name:"Nativo",category:"ad",domains:["*.postrelease.com"]},{name:"Navegg",category:"ad",domains:["*.navdmp.com"]},{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"]},{name:"Net Applications",category:"analytics",domains:["*.hitsprocessor.com"]},{name:"Net Reviews",category:"analytics",domains:["*.avis-verifies.com"]},{name:"NetAffiliation",company:"Kwanco",category:"ad",domains:["*.metaffiliation.com"]},{name:"NetDirector",company:"G-Forces Web Management",category:"other",domains:["*.netdirector.co.uk"]},{name:"NetFlix",category:"content",domains:["*.nflxext.com","*.nflximg.net"]},{name:"Nielsen NetRatings SiteCensus",company:"The Nielsen Company",homepage:"http://www.nielsen-online.com/intlpage.html",category:"analytics",domains:["*.imrworldwide.com"]},{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"]},{name:"Netop",category:"customer-success",domains:["*.netop.com"]},{name:"Network Solutions",category:"utility",domains:["*.netsolssl.com","*.networksolutions.com"]},{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"]},{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 &amp; Shell Media Group",category:"content",domains:["*.northernandshell.co.uk"]},{name:"Nosto",category:"analytics",domains:["*.nosto.com"]},{name:"Now Interact",category:"analytics",domains:["*.nowinteract.com"]},{name:"Numberly",company:"1000mercis",category:"ad",domains:["*.mmtro.com","*.nzaza.com"]},{name:"NyaConcepts",category:"analytics",domains:["*.xclusive.ly"]},{name:"O2",category:"other",domains:["*.o2.co.uk"]},{name:"GoDaddy",homepage:"https://www.godaddy.com/",category:"utility",domains:["*.godaddy.com","*.wsimg.com"]},{name:"ObjectPlanet",category:"analytics",domains:["*.easypolls.net"]},{name:"OhMyAd",category:"ad",domains:["*.ohmyad.co"]},{name:"Okas Concepts",
category:"utility",domains:["*.okasconcepts.com"]},{name:"Okta",category:"analytics",domains:["*.okta.com"]},{name:"Olapic",category:"content",domains:["*.photorank.me"]},{name:"Ometria",category:"analytics",domains:["*.ometria.com"]},{name:"Omniconvert",category:"analytics",domains:["*.omniconvert.com","d2tgfbvjf3q6hn.cloudfront.net","d3vbj265bmdenw.cloudfront.net"]},{name:"Omniroot",company:"Verizon",category:"utility",domains:["*.omniroot.com"]},{name:"OnAudience",company:"Cloud Technologies",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"]},{name:"One by AOL:Mobile",company:"AOL",category:"ad",domains:["*.nexage.com"]},{name:"OneAll",category:"analytics",domains:["*.oneall.com"]},{name:"OneSoon",category:"analytics",
domains:["*.adalyser.com"]},{name:"OneTag",category:"ad",domains:["*.onetag-sys.com"]},{name:"Onet",category:"ad",domains:["*.onet.pl"]},{name:"Online Rewards",company:"Mastercard",category:"ad",domains:["*.loyaltygateway.com"]},{name:"Online republic",category:"content",domains:["*.imallcdn.net"]},{name:"Ooyala",category:"ad",domains:["*.ooyala.com"]},{name:"OpenTable",company:"Priceline Group",category:"content",domains:["*.opentable.com","*.opentable.co.uk","*.toptable.co.uk"]},{name:"OpenX Ad Exchange",company:"OpenX Technologies",category:"ad",domains:["*.liftdna.com"]},{name:"Opinion Stage",category:"analytics",domains:["*.opinionstage.com"]},{name:"OpinionBar",category:"analytics",domains:["*.opinionbar.com"]},{name:"Opta",company:"Perform Group",category:"content",domains:["*.opta.net"]},{name:"OptiMonk",category:"ad",domains:["*.optimonk.com"]},{name:"Optilead",category:"analytics",domains:["*.dyn-img.com","*.leadcall.co.uk","*.optilead.co.uk"]},{name:"Optimatic",
category:"ad",domains:["*.optimatic.com"]},{name:"Optimise Media Group",category:"utility",domains:["*.omguk.com"]},{name:"Optimost",company:"OpenText",category:"ad",domains:["*.optimost.com"]},{name:"Optimove",company:"Mobius Solutions",category:"analytics",domains:["*.optimove.net"]},{name:"Optorb",category:"ad",domains:["*.optorb.com"]},{name:"Oracle",category:"marketing",domains:["*.custhelp.com","*.eloqua.com","*.en25.com","*.estara.com","*.instantservice.com"]},{name:"Oracle Recommendations On Demand",company:"Oracle",category:"analytics",domains:["*.atgsvcs.com"]},{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"]},{
name:"OverStream",company:"Coull",category:"ad",domains:["*.coull.com"]},{name:"Overdrive",category:"content",domains:["*.contentreserve.com"]},{name:"Overstock",category:"utility",domains:["*.ostkcdn.com"]},{name:"OwnerIQ",category:"ad",domains:["*.owneriq.net"]},{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"]},{name:"PEER 1 Hosting",category:"hosting",domains:["*.peer1.com"]},{name:"PERFORM",category:"content",domains:["*.performgroup.com"]},{name:"PICnet",category:"hosting",domains:["*.nonprofitsoapbox.com"]},{name:"Pacnet",company:"Telstra",category:"other",domains:["*.cdndelivery.net"]},{name:"Pagefair",category:"ad",domains:["*.pagefair.com","*.pagefair.net"]},{name:"Pagely",category:"other",domains:["*.optnmstr.com"]},{name:"Pagesuite",category:"ad",domains:["*.pagesuite-professional.co.uk"]},{
name:"Pardot",category:"marketing",domains:["*.pardot.com"]},{name:"Parse.ly",category:"analytics",domains:["*.parsely.com","d1z2jf7jlzjs58.cloudfront.net"]},{name:"Pay per Click",company:"Eysys",category:"ad",domains:["*.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"]},{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"]},{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"]},{name:"PerimeterX Bot Defender",company:"PerimeterX",category:"utility",domains:["*.perimeterx.net","*.pxi.pub"]},{name:"Periscope",category:"content",domains:["*.periscope.tv"]},{name:"Permutive",category:"ad",domains:["*.permutive.com","d3alqb8vzo7fun.cloudfront.net"]},{name:"Petametrics",category:"analytics",domains:["*.petametrics.com"]},{name:"PhotoBucket",category:"content",domains:["*.photobucket.com"]},{name:"Picreel",category:"analytics",domains:["*.pcrl.co","*.picreel.com"]},{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"]},{name:"Pixalate",category:"utility",domains:["*.adrta.com"]},{
name:"Pixlee",category:"social",domains:["*.pixlee.com"]},{name:"Placed",category:"analytics",domains:["*.placed.com"]},{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"]},{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"]},{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"]},{name:"PollDaddy (Automattic)",category:"ad",domains:["static.polldaddy.com","*.poll.fm"]},{name:"Polldaddy",company:"Automattic",category:"analytics",domains:["polldaddy.com","*.polldaddy.com"]},{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.com"]},{name:"PowerReviews",category:"analytics",domains:["*.powerreviews.com"]},{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"]},{name:"Pretio Interactive",category:"ad",domains:["*.pretio.in"]},{name:"Prezi",category:"utility",domains:["*.prezi.com"]},{name:"PriceGrabber",category:"content",domains:["*.pgcdn.com","*.pricegrabber.com"]},{name:"PriceRunner",category:"content",domains:["*.pricerunner.com"]},{name:"PrintFriendly",category:"utility",domains:["*.printfriendly.com"]},{name:"Privy",category:"ad",domains:["*.privy.com","*.privymktg.com"]},{name:"Proclivity Media",category:"analytics",domains:["*.pswec.com"]},{name:"Profitshare",category:"ad",domains:["*.profitshare.ro"]},{name:"Programattik",category:"ad",domains:["*.programattik.com"]},{name:"Proper Media",category:"content",domains:["*.proper.io"]},{name:"Property Week",category:"content",domains:["*.propertyweek.com"]},{name:"Provide Support",category:"customer-success",
domains:["*.providesupport.com"]},{name:"Proweb Uk",category:"hosting",domains:["*.proweb.net"]},{name:"Proximic (ComScore)",category:"ad",domains:["*.proximic.com"]},{name:"Psyma",category:"ad",domains:["*.psyma.com"]},{name:"PubFactory",company:"Safari Books Online",category:"content",domains:["*.pubfactory.com"]},{name:"PubNation",category:"ad",domains:["*.pubnation.com"]},{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"]},{name:"Pulsepoint",category:"marketing",domains:["*.displaymarketplace.com"]},{name:"Purch",category:"ad",domains:["*.bestofmedia.com","*.purch.com"]},{name:"Pure Chat",category:"customer-success",domains:["*.purechat.com"]},{name:"PushCrew",category:"ad",domains:["*.pushcrew.com"]},{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"]},{name:"Qrius",category:"social",domains:["*.qrius.me"]},{name:"Qualaroo",category:"analytics",domains:["*.qualaroo.com"]},{name:"Qualtrics",category:"analytics",domains:["*.qualtrics.com"]},{name:"Qubit",company:"Qubit",category:"analytics",domains:["*.qubit.com","*.qutics.com","d3c3cq33003psk.cloudfront.net","*.goqubit.com","*.qubitproducts.com"]},{name:"Qubit Deliver",company:"Qubit",category:"analytics",domains:["d1m54pdnjzjnhe.cloudfront.net","d22rutvoghj3db.cloudfront.net","dd6zx4ibq538k.cloudfront.net"]},{name:"QuestionPro",category:"analytics",domains:["*.questionpro.com"]},{name:"Queue-it",category:"other",domains:["*.queue-it.net"]},{name:"QuinStreet",category:"ad",domains:["*.Quinstreet.com","*.b2btechleadform.com","*.qnsr.com","*.qsstats.com"]},{
name:"QuoVadis",category:"utility",domains:["*.quovadisglobal.com"]},{name:"Qzzr",category:"analytics",domains:["*.movementventures.com","*.qzzr.com"]},{name:"RapidAPI",category:"utility",domains:["*.rapidapi.com"]},{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"]},{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"]},{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"]},{name:"Rakuten Marketing",company:"Rakuten",category:"ad",domains:["*.rakuten-static.com","*.rmtag.com"]},{name:"Rakuten MediaForge",company:"Rakuten",category:"ad",domains:["*.mediaforge.com"]},{name:"Rambler",company:"Rambler & Co",category:"utility",domains:["*.rambler.ru"]},{name:"Ranker",category:"content",domains:["*.ranker.com","*.rnkr-static.com"]},{name:"Ravelin",category:"utility",domains:["*.ravelin.com"]},{name:"Raygun",category:"utility",domains:["*.raygun.io"]},{name:"ReCollect",category:"utility",domains:["*.recollect.net"]},{name:"ReSRC",category:"utility",domains:["*.resrc.it"]},{name:"ReTargeter",category:"ad",domains:["*.retargeter.com"]},{name:"Reach Group",category:"ad",domains:["*.redintelligence.net"]},{name:"ReachDynamics",category:"ad",domains:["*.rdcdn.com"]},{name:"ReachForce",category:"ad",domains:["*.reachforce.com"]},{name:"ReachLocal",category:"ad",domains:["*.rtrk.co.nz"]},{name:"ReachMee",category:"content",
domains:["*.reachmee.com"]},{name:"Reactful",category:"analytics",domains:["*.reactful.com"]},{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"]},{name:"RebelMouse",category:"ad",domains:["*.rebelmouse.com","*.rbl.ms"]},{name:"Receiptful",category:"utility",domains:["*.receiptful.com"]},{name:"Recite Me",category:"other",domains:["*.reciteme.com"]},{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"]},{name:"Refersion",
category:"ad",domains:["*.refersion.com"]},{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"]},{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"]},{name:"Research Now",category:"analytics",domains:["*.researchgnow.com","*.researchnow.com"]},{name:"Research Online",company:"Skills Development Scotland",category:"content",domains:["*.researchonline.org.uk"]},{name:"Resonance Insights",category:"analytics",domains:["*.res-x.com"]},{
name:"Resonate Networks",category:"analytics",domains:["*.reson8.com"]},{name:"Response Team",category:"ad",domains:["*.i-transactads.com"]},{name:"ResponseTap",category:"analytics",domains:["*.adinsight.com","*.responsetap.com"]},{name:"ResponsiveVoice",category:"other",domains:["*.responsivevoice.org"]},{name:"Retention Science",category:"ad",domains:["*.retentionscience.com","d1stxfv94hrhia.cloudfront.net"]},{name:"Revcontent",category:"content",domains:["*.revcontent.com"]},{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"]},{name:"Reviews.io",category:"analytics",domains:["*.reviews.io"]},{name:"Revolver Maps",category:"analytics",domains:["*.revolvermaps.com"]},{name:"Revv",category:"utility",domains:["*.revv.co"]},{name:"RichRelevance",category:"analytics",
domains:["*.richrelevance.com"]},{name:"RightNow Service Cloud",company:"Oracle",category:"customer-success",domains:["*.rightnowtech.com","*.rnengage.com"]},{name:"Rightster",category:"ad",domains:["*.ads-creativesyndicator.com"]},{name:"Riskified",category:"utility",domains:["*.riskified.com"]},{name:"Rockerbox",category:"analytics",homepage:"https://www.rockerbox.com/",domains:["getrockerbox.com"]},{name:"Rocket Fuel",category:"ad",domains:["*.rfihub.com","*.ru4.com","*.rfihub.net","*.ad1x.com"]},{name:"Rollbar",category:"utility",domains:["*.rollbar.com","d37gvrvc0wt4s1.cloudfront.net"]},{name:"RomanCart",category:"utility",domains:["*.romancart.com"]},{name:"Rondavu",category:"ad",domains:["*.rondavu.com"]},{name:"Roomkey",category:"content",domains:["*.roomkey.com"]},{name:"Roost",category:"utility",domains:["*.goroost.com"]},{name:"Roxot",category:"ad",domains:["*.rxthdr.com"]},{name:"Roxr Software",category:"analytics",domains:["*.getclicky.com"]},{name:"Rtoaster",
company:"Brainpad",homepage:"https://www.brainpad.co.jp/rtoaster/",category:"marketing",domains:["*.rtoaster.jp"]},{name:"Rubikloud.com",category:"analytics",domains:["*.rubikloud.com"]},{name:"Ruler Analytics",company:"Ruler",category:"analytics",domains:["*.nyltx.com","*.ruleranalytics.com"]},{name:"Runner",company:"Rambler & Co",category:"content",domains:["*.begun.ru"]},{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","*.sas.com"]},{name:"SATORI",homepage:"https://satori.marketing/",category:"marketing",domains:["satori.segs.jp"]},{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"]},{name:"SLI Systems",category:"utility",
domains:["*.resultslist.com","*.resultspage.com","*.sli-spark.com"]},{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"]},{name:"Sabio",category:"customer-success",domains:["*.sabio.co.uk"]},{name:"Sailthru",category:"analytics",domains:["*.sail-horizon.com","*.sail-personalize.com","*.sail-track.com"]},{name:"Sailthru Sightlines",company:"Sailthru",category:"marketing",domains:["*.sailthru.com"]},{name:"Sajari Pty",category:"utility",domains:["*.sajari.com"]},{name:"SaleCycle",category:"ad",domains:["*.salecycle.com","d16fk4ms6rqz1v.cloudfront.net","d22j4fzzszoii2.cloudfront.net","d30ke5tqu2tkyx.cloudfront.net","dn1i8v75r669j.cloudfront.net"]},{name:"Salesforce Live Agent",company:"Salesforce.com",category:"customer-success",domains:["*.salesforceliveagent.com"]},{
name:"Salesforce.com",category:"ad",domains:["*.force.com","*.salesforce.com"]},{name:"Samba TV",company:"Samba",category:"content",domains:["*.samba.tv"]},{name:"Samplicio.us",category:"analytics",domains:["*.samplicio.us"]},{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"]},{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"]},{name:"SearchSpring",category:"utility",domains:["*.searchspring.net"]},{name:"Searchanise",
category:"analytics",domains:["*.searchanise.com"]},{name:"Sears Holdings",category:"content",domains:["*.shld.net"]},{name:"Secomapp",category:"utility",domains:["*.secomapp.com"]},{name:"SecuredVisit",company:"4Cite Marketing",category:"ad",domains:["*.securedvisit.com"]},{name:"SecurityMetrics",category:"utility",domains:["*.securitymetrics.com"]},{name:"Segmento",category:"ad",domains:["*.rutarget.ru"]},{name:"Segmint",category:"analytics",domains:["*.segmint.net"]},{name:"Sekindo",category:"content",domains:["*.sekindo.com"]},{name:"Seldon",category:"analytics",domains:["*.rummblelabs.com"]},{name:"SelectMedia International",category:"content",domains:["*.selectmedia.asia"]},{name:"Selligent",category:"ad",domains:["*.emsecure.net","*.slgnt.eu","targetemsecure.blob.core.windows.net"]},{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"]},{name:"ServiceTick",category:"analytics",domains:["*.servicetick.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"]},{name:"Sharethrough",category:"ad",domains:["*.sharethrough.com"]},{name:"SharpSpring",category:"marketing",domains:["*.sharpspring.com","*.marketingautomation.services"]},{name:"ShopRunner",category:"content",domains:["*.shoprunner.com","*.s-9.us"]},{name:"ShopStorm",category:"utility",domains:["*.shopstorm.com"]},{
name:"Shopatron",category:"hosting",domains:["*.shopatron.com"]},{name:"Shopgate",category:"utility",domains:["*.shopgate.com"]},{name:"ShopiMind",company:"ShopIMind",category:"ad",domains:["*.shopimind.com"]},{name:"Shopkeeper Tools",category:"utility",domains:["*.shopkeepertools.com"]},{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"]},{name:"Signal",category:"tag-manager",domains:["*.sitetagger.co.uk"]},{name:"Signyfyd",category:"utility",domains:["*.signifyd.com"]},{name:"Silktide",category:"hosting",domains:["*.silktide.com"]},{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"]},{name:"Simplaex",category:"marketing",
domains:["*.simplaex.net"]},{name:"SimpleReach",category:"analytics",domains:["*.simplereach.com","d8rk54i4mohrb.cloudfront.net"]},{name:"Simplestream",category:"content",domains:["*.simplestream.com"]},{name:"Simpli.fi",category:"ad",domains:["*.simpli.fi"]},{name:"Simplicity Marketing",category:"ad",domains:["*.flashtalking.com"]},{name:"SinnerSchrader Deutschland",category:"ad",domains:["*.s2Betrieb.de"]},{name:"Sirv",category:"other",domains:["*.sirv.com"]},{name:"Site Meter",category:"analytics",domains:["*.sitemeter.com"]},{name:"Site24x7 Real User Monitoring",company:"Site24x7",category:"analytics",domains:["*.site24x7rum.com"]},{name:"SiteGainer",category:"analytics",domains:["*.sitegainer.com","d191y0yd6d0jy4.cloudfront.net"]},{name:"SiteScout",company:"Centro",category:"ad",domains:["*.pixel.ad","*.sitescout.com"]},{name:"Siteimprove",category:"utility",domains:["*.siteimprove.com","*.siteimproveanalytics.com"]},{name:"Six Degrees Group",category:"hosting",
domains:["*.fstech.co.uk"]},{name:"Skimbit",category:"ad",domains:["*.redirectingat.com","*.skimresources.com","*.skimresources.net"]},{name:"Skimlinks",category:"ad",domains:["*.skimlinks.com"]},{name:"SkyGlue Technology",category:"analytics",domains:["*.skyglue.com"]},{name:"SkyScanner",category:"content",domains:["*.skyscanner.net"]},{name:"Skybet",company:"Bonne Terre t/a Sky Vegas (Sky)",category:"other",domains:["*.skybet.com"]},{name:"Skype",category:"other",domains:["*.skype.com"]},{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"]},{name:"Smart AdServer",category:"ad",domains:["*.01net.com","*.sascdn.com","*.sasqos.com","*.smartadserver.com"]},{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"]},{name:"SmarterHQ",category:"analytics",domains:["*.smarterhq.io","d1n00d49gkbray.cloudfront.net","*.smarterremarketer.net"]},{name:"Smarttools",category:"customer-success",domains:["*.smartertrack.com"]},{name:"Smartzer",category:"ad",domains:["*.smartzer.com"]},{name:"Snack Media",category:"content",domains:["*.snack-media.com"]},{name:"Snacktools",category:"ad",domains:["*.bannersnack.com"]},{name:"SnapEngage",category:"customer-success",domains:["*.snapengage.com"]},{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"]},{name:"Socialphotos",category:"social",domains:["*.slpht.com"]},{name:"Sociomantic Labs",company:"DunnHumby",category:"ad",domains:["*.sociomantic.com"]},{name:"SodaHead",category:"analytics",domains:["*.sodahead.com"]},{name:"Softwebzone",category:"hosting",domains:["*.softwebzone.com"]},{name:"Sojern",category:"marketing",domains:["*.sojern.com"]},{name:"Sokrati",category:"marketing",domains:["*.sokrati.com"]},{name:"Sonobi",category:"ad",domains:["*.sonobi.com"]},{name:"Sooqr Search",company:"Sooqr",category:"utility",domains:["*.sooqr.com"]},{name:"Sophus3",category:"analytics",domains:["*.s3ae.com","*.sophus3.com"]},{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"]},{name:"Sourcepoint",
category:"ad",domains:["*.decenthat.com","*.fallingfalcon.com","*.summerhamster.com","d2lv4zbk7v5f93.cloudfront.net","d3qxwzhswv93jk.cloudfront.net"]},{name:"SourceKnowledge",homepage:"https://www.sourceknowledge.com",category:"ad",domains:["*.provenpixel.com"]},{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"]},{name:"SpotXchange",category:"ad",domains:["*.spotxcdn.com","*.spotxchange.com","*.spotx.tv"]},{name:"SpringServer",category:"ad",domains:["*.springserve.com"]},{name:"Spylight",
category:"other",domains:["*.spylight.com"]},{name:"SreamAMG",company:"StreamAMG",category:"other",domains:["*.streamamg.com"]},{name:"StackAdapt",category:"ad",domains:["*.stackadapt.com"]},{name:"StackExchange",category:"social",domains:["*.sstatic.net"]},{name:"Stackla PTY",category:"social",domains:["*.stackla.com"]},{name:"Stailamedia",category:"ad",domains:["*.stailamedia.com"]},{name:"Stamped.io",category:"analytics",domains:["*.stamped.io"]},{name:"Starfield Services Root Certificate Authority",company:"Starfield Technologies",category:"utility",domains:["*.starfieldtech.com","ss2.us","*.ss2.us"]},{name:"Starfield Technologies",category:"utility",domains:["*.websiteprotection.com"]},{name:"StatCounter",category:"analytics",domains:["*.statcounter.com"]},{name:"Statful",category:"analytics",domains:["*.statful.com"]},{name:"Steelhouse",category:"ad",domains:["*.steelhousemedia.com"]},{name:"Steepto",category:"ad",domains:["*.steepto.com"]},{name:"StellaService",
category:"analytics",domains:["*.stellaservice.com"]},{name:"StickyADS.tv",category:"ad",domains:["*.stickyadstv.com"]},{name:"STINGRAY",company:"FlexOne",category:"ad",domains:["*.impact-ad.jp"]},{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"]},{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"]},{name:"Sub2 Technologies",category:"analytics",domains:["*.sub2tech.com"]},{name:"SublimeSkinz",
category:"ad",domains:["*.ayads.co"]},{name:"Sumo Logic",category:"utility",domains:["*.sumologic.com"]},{name:"Sunday Times Driving",category:"content",domains:["*.driving.co.uk"]},{name:"SundaySky",category:"ad",domains:["*.sundaysky.com","dds6m601du5ji.cloudfront.net"]},{name:"Sunrise Integration",category:"utility",domains:["*.sunriseintegration.com"]},{name:"Supertool Network Technology",category:"analytics",domains:["*.miaozhen.com"]},{name:"Survata",category:"analytics",domains:["*.survata.com"]},{name:"SurveyGizmo",category:"analytics",domains:["*.surveygizmo.eu"]},{name:"SurveyMonkey",category:"analytics",domains:["*.surveymonkey.com"]},{name:"Survicate",category:"analytics",domains:["*.survicate.com"]},{name:"Sweet Tooth",category:"ad",domains:["*.sweettooth.io"]},{name:"Swiftype",category:"utility",domains:["*.swiftype.com","*.swiftypecdn.com"]},{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"]},{name:"Symantec",category:"utility",domains:["*.norton.com","*.symantec.com","*.symcb.com","*.symcd.com"]},{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"]},{name:"Syte",category:"other",domains:["*.syteapi.com"]},{name:"TINT",category:"content",domains:["*.71n7.com","d33w9bm0n1egwm.cloudfront.net","d36hc0p18k1aoc.cloudfront.net","d3l7tj34e9fc43.cloudfront.net"]},{name:"TNS (Kantar Group)",category:"analytics",domains:["*.tns-counter.ru"]},{name:"TRUSTe",category:"utility",domains:["*.truste.com"]},{name:"TV Genius",company:"Ericcson Media Services",category:"content",domains:["*.tvgenius.net"]},{name:"TVSquared",category:"ad",domains:["*.tvsquared.com"]
},{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"]},{name:"TagCommander",category:"tag-manager",domains:["*.commander1.com","*.tagcommander.com"]},{name:"Tagboard",category:"social",domains:["*.tagboard.com"]},{name:"Taggstar",company:"Taggstar UK",category:"ad",domains:["*.taggstar.com"]},{name:"Tail Target",company:"Tail",category:"ad",domains:["*.tailtarget.com"]},{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"]},{name:"Talkable",category:"ad",domains:["*.talkable.com","d2jjzw81hqbuqv.cloudfront.net"]},{name:"TapSense",category:"ad",domains:["*.tapsense.com"]},{name:"Tapad",category:"ad",domains:["*.tapad.com"]},{
name:"Teads",category:"ad",domains:["*.teads.tv"]},{name:"Team Internet Tonic",company:"Team Internet",category:"ad",domains:["*.dntrax.com"]},{name:"TechTarget",category:"content",domains:["*.techtarget.com","*.ttgtmedia.com"]},{name:"Technorati",company:"Synacor",category:"ad",domains:["*.technoratimedia.com"]},{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"]},{name:"Thanx Media",category:"utility",domains:["*.hawksearch.info"]},{name:"Thawte",category:"utility",domains:["*.thawte.com"]},{name:"Thesis",category:"analytics",homepage:"https://www.thesistesting.com/",domains:["*.ttsep.com"]},{name:"The AA",category:"ad",domains:["*.adstheaa.com"]},{name:"The ADEX",category:"ad",domains:["*.theadex.com"]},{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"]},{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"]},{name:"The Wall Street Journal",category:"content",domains:["*.marketwatch.com"]},{name:"TheFind",category:"content",domains:["*.thefind.com"]},{name:"Thinglink",category:"utility",domains:["*.thinglink.com"]},{name:"Thirdpresence",category:"ad",domains:["*.thirdpresence.com"]},{name:"ThreatMetrix",category:"utility",domains:["*.online-metrix.net"]},{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"]},{name:"Tidio Live Chat",company:"Tidio",homepage:"https://www.tidiochat.com/en/",category:"customer-success",domains:["*.tidiochat.com"]},{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"]},{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"]},{name:"Tradedoubler",category:"ad",domains:["*.pvnsolutions.com","*.tradedoubler.com"]},{name:"Tradelab",category:"ad",domains:["*.tradelab.fr"]},{name:"TrafficFactory",category:"ad",domains:["*.trafficfactory.biz"]},{name:"TrafficHunt",category:"ad",domains:["*.traffichunt.com"]},{name:"TrafficStars",category:"ad",domains:["*.trafficstars.com","*.tsyndicate.com"]},{name:"Transifex",category:"utility",domains:["*.transifex.com"]},{name:"Travelex",category:"utility",domains:["*.travelex.net","*.travelex.co.uk"]},{name:"Travelocity Canada",company:"Travelocity",category:"content",domains:["*.travelocity.ca"]},{name:"Travelocity USA",company:"Travelocity",category:"content",domains:["*.travelocity.com"]},{name:"Travelzoo",category:"content",
domains:["*.travelzoo.com"]},{name:"Treasure Data",category:"analytics",domains:["*.treasuredata.com"]},{name:"Tremor Video",category:"ad",domains:["*.tremorhub.com","*.videohub.tv"]},{name:"Trialfire",category:"analytics",domains:["*.trialfire.com"]},{name:"Tribal Fusion",company:"Exponential Interactive",category:"ad",domains:["*.tribalfusion.com"]},{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"]},{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"]},{name:"TripleLift",category:"ad",domains:["*.3lift.com"]},{name:"Tru Optik",category:"ad",domains:["*.truoptik.com"]},{name:"TruConversion",
category:"analytics",domains:["*.truconversion.com"]},{name:"Trueffect",category:"marketing",domains:["*.adlegend.com"]},{name:"Truefit",category:"analytics",domains:["*.truefitcorp.com"]},{name:"Trust Guard",category:"utility",domains:["*.trust-guard.com"]},{name:"Trust Pilot",category:"analytics",domains:["*.trustpilot.com"]},{name:"Amazon Trust Services",company:"Amazon",category:"utility",domains:["*.amazontrust.com","o.ss2.us"]},{name:"Google Trust Services",company:"Google",category:"utility",domains:["*.pki.goog"]},{name:"Let's Encrypt",homepage:"https://letsencrypt.org/",category:"utility",domains:["*.letsencrypt.org"]},{name:"TrustX",category:"ad",domains:["*.trustx.org"]},{name:"Trusted Shops",category:"utility",domains:["*.trustedshops.com"]},{name:"Trustev",company:"TransUnion",category:"utility",domains:["*.trustev.com"]},{name:"Trustwave",category:"utility",domains:["*.trustwave.com"]},{name:"Tryzens TradeState",company:"Tryzens",category:"analytics",
domains:["*.tryzens-analytics.com"]},{name:"TubeMogul",category:"ad",domains:["*.tubemogul.com"]},{name:"Turn",category:"ad",domains:["*.turn.com"]},{name:"Tutorialize",category:"customer-success",domains:["*.tutorialize.me"]},{name:"Twenga",category:"content",domains:["*.twenga.fr","*.c4tw.net","*.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"]},{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"]},{name:"Typepad",category:"hosting",domains:["*.typepad.com"]},{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:"tag-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"]},{name:"Underdog Media",category:"ad",domains:["*.underdog.media","*.udmserve.net"]},{name:"Understand Digital",category:"ad",domains:["*.redirecting2.net"]},{name:"Undertone",company:"Perion",category:"ad",domains:["*.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"]},{name:"United Internet Media",category:"ad",
domains:["*.ui-portal.de"]},{name:"United Internet Media AG",category:"hosting",domains:["*.tifbs.net","*.uicdn.net","*.uimserv.net"]},{name:"Unknown",category:"other",domains:[]},{name:"Unruly Media",category:"ad",domains:["*.unrulymedia.com"]},{name:"UpBuild",category:"ad",domains:["*.upbuild.io"]},{name:"UpSellit",category:"analytics",domains:["*.upsellit.com"]},{name:"Upland Software",category:"hosting",domains:["*.clickability.com"]},{name:"Airship",category:"marketing",domains:["*.urbanairship.com","*.aswpsdkus.com"]},{name:"UsabilityTools",category:"analytics",domains:["*.usabilitytools.com"]},{name:"Usablenet.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"]},{name:"Userneeds",category:"analytics",domains:["*.userneeds.dk"]},{name:"Userzoom",category:"analytics",
domains:["*.userzoom.com"]},{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","*.adgenie.co.uk"]},{name:"Vee24",category:"customer-success",domains:["*.vee24.com"]},{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"]},{name:"Vergic Engage Platform",company:"Vergic",category:"customer-success",domains:["*.vergic.com"]},{
name:"Verisign (Symantec)",category:"utility",domains:["*.verisign.com"]},{name:"Verizon",category:"utility",domains:["*.public-trust.com"]},{name:"Verizon Digital Media CDN",homepage:"https://www.verizondigitalmedia.com/",category:"cdn",domains:["*.edgecastcdn.net","*.edgecastdns.net"]},{name:"Verizon Uplynk",company:"Verizon",category:"content",domains:["*.uplynk.com"]},{name:"Vero",company:"Semblance",category:"ad",domains:["*.getvero.com","d3qxef4rp70elm.cloudfront.net"]},{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"]},{name:"Viacom",category:"content",domains:["*.mtvnservices.com"]},{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"]},{name:"Videology",category:"ad",domains:["*.tidaltv.com"]},{name:"Vidible",category:"ad",domains:["*.vidible.tv"]},{name:"VigLink",category:"ad",domains:["*.viglink.com"]},{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"]},{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"]},{name:"Visual Studio",company:"Microsoft",
category:"utility",domains:["*.visualstudio.com"]},{name:"VisualDNA",category:"ad",domains:["*.visualdna.com"]},{name:"VisualVisitor",category:"ad",domains:["*.id-visitors.com"]},{name:"Vivocha S.p.A",category:"customer-success",domains:["*.vivocha.com"]},{name:"Vizu (Nielsen)",category:"analytics",domains:["*.vizu.com"]},{name:"Vizury",category:"ad",domains:["*.vizury.com"]},{name:"VoiceFive",category:"analytics",domains:["*.voicefive.com"]},{name:"Volvelle",company:"Optomaton",category:"ad",domains:["*.volvelle.tech"]},{name:"VouchedFor",category:"analytics",domains:["*.vouchedfor.co.uk"]},{name:"WARPCACHE",category:"utility",domains:["*.warpcache.net"]},{name:"WISHLIST",company:"Shopapps",category:"social",domains:["*.shopapps.in"]},{name:"WP Engine",category:"hosting",domains:["*.wpengine.com"]},{name:"WalkMe",category:"customer-success",domains:["*.walkme.com"]},{name:"Watching That",category:"other",domains:["*.watchingthat.com"]},{name:"Wayfair",category:"analytics",
domains:["*.wayfair.com"]},{name:"Web CEO",category:"other",domains:["*.websiteceo.com"]},{name:"Web Dissector",company:"Beijing Gridsum Technologies",category:"analytics",domains:["*.gridsumdissector.com","*.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"]},{name:"WebInsight",company:"dotMailer",category:"analytics",domains:["*.trackedlink.net","*.trackedweb.net"]},{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"]},{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"]},{name:"Webmarked",category:"utility",domains:["*.webmarked.net"]},{name:"Weborama",category:"ad",domains:["*.weborama.com","*.weborama.fr"]},{name:"WebpageFX",category:"ad",domains:["*.leadmanagerfx.com"]},{name:"Webphone",company:"IP WEB SERVICES",category:"customer-success",domains:["*.webphone.net"]},{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"]},{name:"Webtrends",category:"analytics",
domains:["*.webtrends.com","*.webtrendslive.com","d1q62gfb8siqnm.cloudfront.net"]},{name:"Webtype",category:"cdn",domains:["*.webtype.com"]},{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"]},{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"]},{name:"WillyFogg.com",category:"content",domains:["*.willyfogg.com"]},{name:"Windows",company:"Microsoft",category:"utility",domains:["*.windowsupdate.com"]},{name:"WisePops",category:"utility",domains:["*.wisepops.com"]},{name:"Wishlist King",company:"Appmate",category:"other",homepage:"https://appmate.io/",domains:["*.appmate.io"]},{
name:"Wishpond Technologies",category:"marketing",domains:["*.wishpond.com","*.wishpond.net"]},{name:"WizRocket Technologies",category:"analytics",domains:["*.wzrkt.com"]},{name:"Woopra",category:"analytics",domains:["*.woopra.com"]},{name:"Woosmap",category:"utility",domains:["*.woosmap.com"]},{name:"WorkCast",category:"hosting",domains:["*.workcast.net"]},{name:"World News Media",category:"content",domains:["*.wnmedia.co.uk"]},{name:"Worldpay",category:"utility",domains:["*.worldpay.com"]},{name:"Wow Analytics",category:"analytics",domains:["*.wowanalytics.co.uk"]},{name:"Wowcher",category:"ad",domains:["*.wowcher.co.uk"]},{name:"Wufoo",category:"utility",domains:["*.wufoo.com"]},{name:"Wunderkind",category:"marketing",homepage:"https://www.wunderkind.co/",domains:["*.bounceexchange.com","*.bouncex.net","*.wknd.ai","*.cdnbasket.net","*.cdnwidget.com"]},{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/"},{name:"YUDU",category:"content",domains:["*.yudu.com"]},{name:"Yahoo! Ad Exchange",company:"Yahoo!",category:"ad",domains:["*.yieldmanager.com","*.browsiprod.com"]},{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"]},{name:"Yahoo! Tag Manager",company:"Yahoo! JAPAN",category:"tag-manager",homepage:"https://marketing.yahoo.co.jp/service/tagmanager/",domains:["*.yjtag.jp"]},{name:"Yahoo! Small Business",company:"Yahoo!",category:"hosting",domains:["*.aabacosmallbusiness.com"]},{name:"Yellow Robot",category:"ad",domains:["*.backinstock.org"]},{name:"YieldPartners",category:"ad",domains:["*.yieldpartners.com"]},{name:"Yieldbot",category:"ad",domains:["*.yldbt.com"]},{name:"Yieldify",category:"ad",
domains:["*.yieldify.com","*.yieldifylabs.com","d33wq5gej88ld6.cloudfront.net","dwmvwp56lzq5t.cloudfront.net"]},{name:"Yieldlab",category:"ad",domains:["*.yieldlab.net"]},{name:"Yieldmo",category:"ad",domains:["*.yieldmo.com"]},{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"]},{name:"Yottaa",category:"hosting",domains:["*.yottaa.com","*.yottaa.net"]},{name:"YourAmigo",category:"utility",domains:["*.youramigo.com"]},{name:"YuMe",category:"ad",domains:["*.yume.com","*.yumenetworks.com"]},{name:"Yummley",category:"other",domains:["*.yummly.com"]},{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"]},{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"]},{name:"Zerogrey",category:"hosting",domains:["*.zerogrey.com"]},{name:"Ziff Davis Tech",category:"ad",domains:["*.adziff.com","*.zdbb.net"]},{name:"Zmags",category:"marketing",domains:["*.zmags.com"]},{name:"Zolando",category:"content",domains:["*.ztat.net"]},{name:"Zoover",category:"analytics",domains:["*.zoover.nl","*.zoover.co.uk"]},{name:"Zopim",category:"customer-success",domains:["*.zopim.io"]},{name:"[24]7",category:"customer-success",
domains:["*.247-inc.net","*.247inc.net","d1af033869koo7.cloudfront.net"]},{name:"adKernel",category:"ad",domains:["*.adkernel.com"]},{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"]},{name:"affilinet",category:"ad",domains:["*.reussissonsensemble.fr","*.successfultogether.co.uk"]},{name:"audioBoom",category:"social",domains:["*.audioboom.com","*.audioboo.fm"]},{name:"bPay by Barclaycard",company:"Barclays Bank",category:"utility",domains:["*.bpay.co.uk"]},{name:"bRealTime",category:"ad",domains:["*.brealtime.com"]},{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"]},{name:"content.ad",category:"ad",domains:["*.content.ad"]},{name:"d3 Media",company:"d3 Technologies",category:"other",domains:["*.d3sv.net"]},{name:"dexiMEDIA",category:"ad",domains:["*.deximedia.com"]},{name:"dianomi",category:"ad",domains:["*.dianomi.com","*.dianomioffers.co.uk"]},{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"]},{name:"eBay",category:"ad",domains:["*.ebay.com","*.ebayimg.com","*.fetchback.com"]},{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"]},{name:"eHost",category:"hosting",domains:["*.ehosts.net"]},{name:"eKomi",category:"analytics",domains:["*.ekomi.com","*.ekomi.de"]},{name:"eWAY",company:"Web Active Pty",category:"utility",domains:["*.eway.com.au"]},{name:"eXTReMe digital",category:"analytics",domains:["*.extreme-dm.com"]},{name:"eXelate",category:"ad",domains:["*.exelator.com"]},{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"]},{name:"etouches",category:"hosting",domains:["*.etouches.com"]},{name:"etracker",
category:"analytics",domains:["*.etracker.com","*.etracker.de"]},{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"]},{name:"fifty-five",category:"ad",domains:["*.55labs.com"]},{name:"fluct",category:"ad",domains:["*.adingo.jp"]},{name:"freegeoip.net",company:"(community-funded)",category:"utility",domains:["*.freegeoip.net"]},{name:"freewheel.tv",category:"content",domains:["*.fwmrm.net"]},{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"]},{name:"iBillboard",category:"ad",
domains:["*.ibillboard.com"]},{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"]},{name:"iJento",company:"Fopsha",category:"ad",domains:["*.ijento.com"]},{name:"iPage",category:"hosting",domains:["*.ipage.com"]},{name:"iPerceptions",category:"customer-success",domains:["*.iperceptions.com"]},{name:"iTunes",company:"Apple",category:"content",domains:["*.mzstatic.com"]},{name:"imgix",company:"Zebrafish Labs",category:"utility",domains:["*.imgix.net"]},{name:"infogr.am",category:"utility",domains:["*.infogr.am","*.jifo.co"]},{name:"iotec",category:"analytics",domains:["*.dsp.io"]},{name:"iovation",category:"utility",domains:["*.iesnare.com"]},{name:"ipinfo.io",category:"utility",domains:["*.ipinfo.io"]},{name:"issuu",category:"content",domains:["*.issuu.com","*.isu.pub"]},{name:"iubenda",category:"utility",
domains:["*.iubenda.com"]},{name:"j2 Cloud Services",category:"ad",domains:["*.campaigner.com"]},{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"]},{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"]},{name:"piclike",category:"ad",domains:["*.piclike.us"]},{name:"placehold.it",category:"utility",domains:["*.placehold.it"]},{name:"plista",category:"ad",domains:["*.plista.com"]},{name:"prebid.org",
category:"utility",domains:["*.prebid.org"]},{name:"reEmbed",category:"other",domains:["*.reembed.com"]},{name:"reddit",category:"social",domains:["*.reddit.com","*.redditstatic.com"]},{name:"rewardStyle.com",category:"ad",domains:["*.rewardstyle.com"]},{name:"rss2json",category:"utility",domains:["*.rss2json.com"]},{name:"sage Pay",company:"Sage Pay Europe",category:"utility",domains:["*.sagepay.com"]},{name:"section.io",category:"utility",domains:["*.squixa.net"]},{name:"smartclip",category:"ad",domains:["*.smartclip.net"]},{name:"sovrn",category:"ad",domains:["*.lijit.com"]},{name:"stackpile.io",company:"StackPile",category:"tag-manager",domains:["*.stackpile.io"]},{name:"template-help.com",category:"hosting",domains:["*.template-help.com"]},{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"]},{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"]},{name:"fam",company:"Fing Co Ltd.",homepage:"http://admin.fam-ad.com/report/",category:"ad",domains:["*.fam-ad.com"]},{name:"zypmedia",category:"ad",domains:["*.extend.tv"]},{name:"codigo",homepage:"https://www.codigo.se",category:"analytics",domains:["*.codigo.se"]},{name:"Playground",homepage:"https://playground.xyz",category:"ad",domains:["*.playground.xyz"]},{name:"RAM",homepage:"https://www2.rampanel.com/",category:"analytics",domains:["*.rampanel.com"]},{name:"Adition",homepage:"https://www.adition.com",category:"ad",
domains:["*.adition.com"]},{name:"Widespace",homepage:"https://www.widespace.com",category:"ad",domains:["*.widespace.com"]},{name:"Colpirio",homepage:"https://www.widespace.com",category:"analytics",domains:["*.colpirio.com"]},{name:"Brandmetrics",homepage:"https://www.brandmetrics.com",category:"analytics",domains:["*.brandmetrics.com"]},{name:"EasyAd",homepage:"https://web.easy-ads.com/",category:"ad",domains:["*.easy-ads.com"]},{name:"Glimr",homepage:"https://glimr.io/",category:"analytics",domains:["*.glimr.io"]},{name:"Webtreck",homepage:"https://www.webtrekk.com/en/home/",category:"analytics",domains:["*.wcfbc.net"]},{name:"DigiTrust",homepage:"http://www.digitru.st/",category:"analytics",domains:["*.digitru.st"]},{name:"Kantar Sifo",homepage:"https://www.kantarsifo.se",category:"analytics",domains:["*.research-int.se"]},{name:"Concert",homepage:"https://concert.io/",category:"ad",domains:["*.concert.io"]},{name:"Emerse",homepage:"https://www.emerse.com/",category:"ad",
domains:["*.emerse.com"]},{name:"Iterate",homepage:"https://iteratehq.com/",category:"analytics",domains:["*.iteratehq.com"]},{name:"Cookiebot",homepage:"https://www.cookiebot.com/",category:"utility",domains:["*.cookiebot.com"]},{name:"Netlify",homepage:"https://www.netlify.com/",category:"utility",domains:["*.netlify.com","*.netlifyusercontent.com"]},{name:"Scroll",homepage:"https://scroll.com/",category:"utility",domains:["*.scroll.com"]},{name:"Consumable",homepage:"https://consumable.com/",category:"ad",domains:["*.serverbid.com"]},{name:"DMD Marketing",homepage:"https://www.dmdconnects.com/",category:"ad",domains:["*.medtargetsystem.com"]},{name:"Catchpoint",homepage:"https://www.catchpoint.com/",category:"analytics",domains:["*.3gl.net"]},{name:"Terminus",homepage:"https://terminus.com/",category:"ad",domains:["*.terminus.services"]},{name:"Acceptable Ads",homepage:"https://acceptableads.com/",category:"ad",domains:["*.aaxads.com","*.aaxdetect.com"]},{name:"ClearBrain",
homepage:"https://www.clearbrain.com/",category:"analytics",domains:["*.clearbrain.com"]},{name:"Optanon",homepage:"https://www.cookielaw.org/",category:"consent-provider",domains:["*.onetrust.com","*.cookielaw.org"]},{name:"TrustArc",homepage:"https://www.trustarc.com/",category:"utility",domains:["*.trustarc.com"]},{name:"iSpot.tv",homepage:"https://www.ispot.tv/",category:"ad",domains:["*.ispot.tv"]},{name:"RevJet",homepage:"https://www.revjet.com/",category:"ad",domains:["*.revjet.com"]},{name:"atlasRTX",homepage:"https://www.atlasrtx.com/",category:"customer-success",domains:["*.atlasrtx.com"]},{name:"ContactAtOnce",homepage:"https://www.contactatonce.com/",category:"customer-success",domains:["*.contactatonce.com"]},{name:"Algolia",homepage:"https://www.algolia.com/",category:"utility",domains:["*.algolianet.com","*.algolia.net","*.algolia.io"]},{name:"EMX Digital",homepage:"https://emxdigital.com",category:"ad",domains:["*.emxdgt.com"]},{name:"Moxie",
homepage:"https://www.gomoxie.com/",category:"utility",domains:["*.gomoxie.solutions"]},{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"]},{name:"Quantum Metric",homepage:"https://www.quantummetric.com/",category:"analytics",domains:["*.quantummetric.com"]},{name:"Carbon Ads",homepage:"https://www.carbonads.net/",category:"ad",domains:["*.carbonads.net","*.carbonads.com"]},{name:"Ably",homepage:"https://www.ably.io/",category:"utility",domains:["*.ably.io"]},{name:"Sectigo",homepage:"https://sectigo.com/",category:"utility",domains:["*.sectigo.com"]},{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"]},{name:"Intent Media",
homepage:"https://intent.com/",category:"ad",domains:["*.intentmedia.net"]},{name:"Supership",homepage:"https://supership.jp/",category:"ad",domains:["*.socdm.com"]},{name:"F@N Communications",homepage:"https://www.fancs.com/",category:"ad",domains:["*.ladsp.com"]},{name:"Vidyard",homepage:"https://www.vidyard.com/",category:"utility",domains:["*.vidyard.com"]},{name:"RapidSSL",homepage:"https://www.rapidssl.com/",category:"utility",domains:["*.rapidssl.com"]},{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"]},{name:"emetriq",homepage:"https://www.emetriq.com/",category:"ad",domains:["*.emetriq.de","*.xplosion.de"]},{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/"}]}]},{name:"Contentful",homepage:"https://www.contentful.com/",category:"utility",domains:["*.contentful.com"]},{name:"PureCars",homepage:"https://www.purecars.com/",category:"marketing",domains:["*.purecars.com"]},{name:"Tray Commerce",homepage:"https://www.tray.com.br/",category:"marketing",domains:["*.tcdn.com.br"]},{name:"AdScore",homepage:"https://www.adscore.com/",category:"ad",domains:["*.adsco.re"]},{name:"WebsiteBuilder.com",homepage:"https://www.websitebuilder.com",category:"hosting",domains:["*.mywebsitebuilder.com"]},{name:"mParticle",homepage:"https://www.mparticle.com/",category:"utility",domains:["*.mparticle.com"]},{name:"Ada",homepage:"https://www.ada.support/",category:"customer-success",domains:["*.ada.support"]},{
name:"Quora Ads",homepage:"https://www.quora.com/business/",category:"ad",domains:["*.quora.com"]},{name:"Auth0",homepage:"https://auth0.com/",category:"utility",domains:["*.auth0.com"]},{name:"Bridgewell DSP",homepage:"https://www.bridgewell.com/",category:"ad",domains:["*.scupio.com"]},{name:"Wicked Reports",homepage:"https://www.wickedreports.com/",category:"marketing",domains:["*.wickedreports.com"]},{name:"Jaywing",homepage:"https://jaywing.com/",category:"marketing",domains:["*.jaywing.com"]},{name:"Holimetrix",homepage:"https://u360.d-bi.fr/",category:"marketing",domains:["*.d-bi.fr"]},{name:"iZooto",homepage:"https://www.izooto.com",category:"marketing",domains:["*.izooto.com"]},{name:"Ordergroove",homepage:"https://www.ordergroove.com/",category:"marketing",domains:["*.ordergroove.com"]},{name:"PageSense",homepage:"https://www.zoho.com/pagesense/",category:"analytics",domains:["*.pagesense.io"]},{name:"Vizzit",homepage:"https://www.vizzit.se",category:"analytics",
domains:["*.vizzit.se"]},{name:"Click Guardian",homepage:"https://www.clickguardian.co.uk/",category:"ad",domains:["*.clickguardian.app","*.clickguardian.co.uk"]},{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"]},{name:"Smartlook",company:"Smartsupp.com",homepage:"https://www.smartlook.com/",category:"analytics",domains:["*.smartlook.com"]},{name:"Luigis Box",company:"Luigis Box",homepage:"https://www.luigisbox.com/",category:"utility",domains:["*.luigisbox.com"]},{name:"Targito",company:"VIVmail.cz",homepage:"https://www.targito.com",category:"marketing",domains:["*.targito.com"]},{name:"Foxentry",company:"AVANTRO",homepage:"https://foxentry.cz/",category:"utility",domains:["*.foxentry.cz"]},{name:"Pendo",homepage:"https://www.pendo.io",category:"analytics",domains:["*.pendo.io"]},{name:"Braze",
homepage:"https://www.braze.com",category:"analytics",domains:["*.appboycdn.com"]},{name:"Usersnap",homepage:"https://usersnap.com",category:"customer-success",domains:["*.usersnap.com"]},{name:"Rewardful",homepage:"https://www.getrewardful.com",category:"analytics",domains:["*.wdfl.co"]},{name:"Launch Darkly",homepage:"https://launchdarkly.com",category:"utility",domains:["*.launchdarkly.com"]},{name:"Statuspage",company:"Atlassian",homepage:"https://www.statuspage.io",category:"utility",domains:["*.statuspage.io"]},{name:"HyperInzerce",homepage:"https://hyperinzerce.cz",category:"ad",domains:["*.hyperinzerce.cz"]},{name:"POWr",homepage:"https://www.powr.io",category:"utility",domains:["*.powr.io"]},{name:"Coral",company:"Coral",homepage:"https://coralproject.net",category:"content",domains:["*.coral.coralproject.net"]},{name:"Bolt",homepage:"https://www.bolt.com/",category:"utility",domains:["*.bolt.com"]},{name:"Judge.me",homepage:"https://judge.me/",category:"marketing",
domains:["*.judge.me"]},{name:"Tilda",homepage:"https://tilda.cc/",category:"hosting",domains:["*.tildacdn.com"]},{name:"SalesLoft",homepage:"https://salesloft.com/",category:"marketing",domains:["*.salesloft.com"]},{name:"Accessibe Accessibility Overlay",company:"Accessibe",homepage:"https://accessibe.com/",category:"utility",domains:["*.accessibe.com","*.acsbapp.com","*.acsbap.com"]},{name:"Builder",homepage:"https://www.builder.io/",category:"hosting",domains:["*.builder.io"]},{name:"Pepperjam",homepage:"https://www.pepperjam.com/",category:"marketing",domains:["*.pepperjam.com","*.affiliatetechnology.com"]},{name:"Reach",homepage:"https://withreach.com/",category:"utility",domains:["*.gointerpay.net"]},{name:"Chameleon",homepage:"https://www.trychameleon.com/",category:"marketing",domains:["*.trychameleon.com"]},{name:"Matomo",company:"InnoCraft",homepage:"https://matomo.org/",category:"analytics",domains:["*.matomo.cloud"]},{name:"Segmanta",homepage:"https://segmanta.com/",
category:"marketing",domains:["*.segmanta.com"]},{name:"Podsights",homepage:"https://podsights.com/",category:"marketing",domains:["*.pdst.fm","us-central1-adaptive-growth.cloudfunctions.net"]},{name:"Chatwoot",homepage:"https://www.chatwoot.com/",category:"customer-success",domains:["*.chatwoot.com"]},{name:"Crisp",homepage:"https://crisp.chat/",category:"customer-success",domains:["*.crisp.chat"]},{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.consensu.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"]},{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.mgr.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://uniconsent.com",category:"consent-provider",domains:["uniconsent.mgr.consensu.org","*.uniconsent.mgr.consensu.org"]},{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"]},{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"]},{name:"Hubvisor",homepage:"https://www.hubvisor.io",category:"ad",domains:["*.hubvisor.io"]},{name:"Castle",homepage:"https://castle.io",category:"utility",domains:["*.castle.io","d2t77mnxyo7adj.cloudfront.net"]},{name:"Wigzo",homepage:"https://www.wigzo.com/",category:"marketing",domains:["*.wigzo.com","*.wigzopush.com"]},{name:"Convertful",homepage:"https://convertful.com/",category:"marketing",domains:["*.convertful.com"]},{name:"OpenLink",company:"MediaWallah",homepage:"https://www.mediawallah.com/",category:"ad",domains:["*.mediawallahscript.com"]},{name:"TPMN",company:"TPMN",homepage:"http://tpmn.io/",category:"ad",domains:["*.tpmn.co.kr"]},{name:"HERO",company:"Klarna",homepage:"https://www.usehero.com/",category:"customer-success",
domains:["*.usehero.com"]},{name:"Zync",company:"Zeta Global",homepage:"https://zetaglobal.com/",category:"marketing",domains:["*.rezync.com"]},{name:"AdFuel Video",company:"AdFuel",homepage:"https://goadfuel.com/",category:"ad",domains:["*.videoplayerhub.com"]},{name:"Prefix Box AI Search",company:"Prefix Box",homepage:"https://www.prefixbox.com/",category:"utility",domains:["*.prefixbox.com"]},{name:"SpeedSize Service Worker",company:"SpeedSize",homepage:"https://speedsize.com/",category:"utility",domains:["di6367dava8ow.cloudfront.net","d2d22nphq0yz8t.cloudfront.net"]},{name:"Vonage Video API",company:"Vonage",homepage:"https://www.vonage.com/communications-apis/video/",category:"video",domains:["*.opentok.com"]},{name:"Checkout.com",company:"Checkout.com",homepage:"https://www.checkout.com",category:"utility",domains:["*.checkout.com"]},{name:"Noibu",company:"Noibu",homepage:"https://www.noibu.com",category:"utility",domains:["*.noibu.com"]},{name:"Clarity",company:"Microsoft",
homepage:"https://clarity.microsoft.com/",category:"utility",domains:["*.clarity.ms"]},{name:"goinstore",company:"Emplifi",homepage:"https://goinstore.com/",category:"customer-success",domains:["*.goinstore.com"]},{name:"SegmentStream",company:"SegmentStream",homepage:"https://segmentstream.com/",category:"marketing",domains:["*.segmentstream.com"]},{name:"Amazon Associates",company:"Amazon",homepage:"https://affiliate-program.amazon.co.uk/",category:"marketing",domains:["*.associates-amazon.com"]},{name:"DotMetrics",company:"Ipsos",homepage:"https://www.dotmetrics.net/",category:"analytics",domains:["*.dotmetrics.net"]},{name:"Truffle Bid",company:"Truffle",homepage:"https://truffle.bid/",category:"ad",domains:["*.truffle.bid"]},{name:"Hybrid",company:"Hybrid",homepage:"https://hybrid.ai/",category:"ad",domains:["*.hybrid.ai"]},{name:"AdMan Media",company:"AdMan",homepage:"https://admanmedia.com/",category:"video",domains:["*.admanmedia.com"]},{name:"ID5 Identity Cloud",company:"ID5",
homepage:"https://id5.io/",category:"ad",domains:["id5-sync.com","*.id5-sync.com"]},{name:"Audience Rate",company:"Audience Rate Limited",homepage:"https://www.audiencerate.com/",category:"ad",domains:["*.audrte.com"]},{name:"Seedtag",company:"Seedtag Advertising",homepage:"https://www.seedtag.com/",category:"ad",domains:["*.seedtag.com"]},{name:"IVI",company:"IVI Technologies",homepage:"http://ivitechnologies.com/",category:"ad",domains:["*.ivitrack.com"]},{name:"Sportradar",company:"Sportradar",homepage:"https://www.sportradar.com/",category:"ad",domains:["*.sportradarserving.com"]},{name:"ZEOTAP",company:"ZEOTAP",homepage:"https://zeotap.com/",category:"ad",domains:["*.zeotap.com"]},{name:"Web Content Assessor",company:"TMT Digital",homepage:"https://mediatrust.com/",category:"ad",domains:["*.webcontentassessor.com"]},{name:"Genie",company:"Media Force",homepage:"https://hellogenie.com/",category:"ad",domains:["*.mfadsrvr.com"]},{name:"mediarithmics",company:"mediarithmics",
homepage:"https://www.mediarithmics.com/",category:"ad",domains:["*.mediarithmics.com"]},{name:"Ozone Project",company:"The Ozone Project",homepage:"https://www.ozoneproject.com/",category:"ad",domains:["*.the-ozone-project.com"]},{name:"FiftyAurora",company:"Fifty",homepage:"https://fifty.io/",category:"ad",domains:["*.fiftyt.com"]},{name:"smadex",company:"entravision",homepage:"https://smadex.com/",category:"ad",domains:["*.smadex.com"]},{name:"AWX",company:"Trinity Mirror",category:"ad",domains:["*.tm-awx.com"]},{name:"XPO",company:"Knorex",category:"ad",homepage:"https://www.knorex.com/",domains:["*.brand-display.com"]},{name:"Viafoura",company:"Viafoura",category:"ad",homepage:"https://viafoura.com/",domains:["*.viafoura.co","*.viafoura.net"]},{name:"Adnami",company:"Adnami",category:"ad",homepage:"https://www.adnami.io/",domains:["*.adnami.io"]},{name:"LiveRamp Privacy Manager",company:"LiveRamp",category:"ad",homepage:"https://liveramp.com/privacy-legal-compliance/",
domains:["*.privacymanager.io"]},{name:"Onfocus",company:"Onfocus SAS",category:"ad",domains:["*.4dex.io"]},{name:"viewTag",company:"Advanced Store",category:"ad",domains:["*.ad4m.at"]},{name:"MRP Prelytics",company:"Market Resource Partners",category:"ad",homepage:"https://www.mrpfd.com/",domains:["*.mrpdata.net"]},{name:"iPROM",company:"iPROM",category:"ad",homepage:"https://iprom.eu/",domains:["*.iprom.net"]}]);function getEntity(e){return si.getEntity(e)}function isThirdParty(e,t){const n=getEntity(e);return!!n&&n!==t}var ci={getEntity,getProduct:function getProduct(e){return si.getProduct(e)},isThirdParty,isFirstParty:function isFirstParty(e,t){return!isThirdParty(e,t)}};class EntityClassification{static makeUpAnEntity(e,t){if(!UrlUtils.isValid(t))return;if(!Util.createOrReturnURL(t).protocol.startsWith("http"))return;const n=Util.getRootDomain(t);if(!n)return;if(e.has(n))return e.get(n);const a={name:n,company:n,category:"",categories:[],domains:[n],averageExecutionTime:0,
totalExecutionTime:0,totalOccurrences:0,isUnrecognized:!0};return e.set(n,a),a}static async compute_(e,t){const n=await go.request(e.devtoolsLog,t),a=new Map,r=new Map,o=new Map;for(const e of n){const{url:t}=e;if(r.has(t))continue;const n=ci.getEntity(t)||EntityClassification.makeUpAnEntity(a,t);if(!n)continue;const i=o.get(n)||new Set;i.add(t),o.set(n,i),r.set(t,n)}const i=e.URL.mainDocumentUrl||e.URL.finalDisplayedUrl,s=ci.getEntity(i)||EntityClassification.makeUpAnEntity(a,i);return{entityByUrl:r,urlsByEntity:o,firstParty:s,isFirstParty:function isFirstParty(e){const t=r.get(e);if(!t)throw new Error("A url not in devtoolsLog was used for first-party check.");return t===s}}}}const li=makeComputedArtifact(EntityClassification,["URL","devtoolsLog"]);getModuleDirectory({url:"core/runner.js"});class Runner{static async audit(e,t){const{resolvedConfig:n,computedCache:a}=t,r=n.settings;try{const t={msg:"Audit phase",id:"lh:runner:audit"};Log.time(t,"verbose");const o=[]
;if(r.gatherMode&&!r.auditMode)return;if(!n.audits)throw new Error("No audits to evaluate.");const i=await Runner._runAudits(r,n.audits,e,o,a),s={msg:"Generating results...",id:"lh:runner:generate"};Log.time(s),e.LighthouseRunWarnings&&o.push(...e.LighthouseRunWarnings);const c={"axe-core":e.Accessibility?.version};let l={};n.categories&&(l=ReportScoring.scoreAllCategories(n.categories,i)),Log.timeEnd(s),Log.timeEnd(t);const u={lighthouseVersion:wr,requestedUrl:e.URL.requestedUrl,mainDocumentUrl:e.URL.mainDocumentUrl,finalDisplayedUrl:e.URL.finalDisplayedUrl,finalUrl:e.URL.mainDocumentUrl,fetchTime:e.fetchTime,gatherMode:e.GatherContext.gatherMode,runtimeError:Runner.getArtifactRuntimeError(e),runWarnings:o,userAgent:e.HostUserAgent,environment:{networkUserAgent:e.NetworkUserAgent,hostUserAgent:e.HostUserAgent,benchmarkIndex:e.BenchmarkIndex,benchmarkIndexes:e.BenchmarkIndexes,credits:c},audits:i,configSettings:r,categories:l,categoryGroups:n.groups||void 0,
stackPacks:getStackPacks(e.Stacks),entities:await Runner.getEntityClassification(e,{computedCache:a}),fullPageScreenshot:n.settings.disableFullPageScreenshot?void 0:e.FullPageScreenshot,timing:this._getTiming(e),i18n:{rendererFormattedStrings:getRendererFormattedStrings(r.locale),icuMessagePaths:{}}};u.i18n.icuMessagePaths=replaceIcuMessages(u,r.locale);const d=u;if(r.auditMode){!function saveLhr(e,t){J.writeFileSync(`${t}/lhr.report.json`,JSON.stringify(e,null,2))}(d,Runner._getDataSavePath(r))}return{lhr:d,artifacts:e,report:ReportGenerator.generateReport(d,r.output)}}catch(e){throw Runner.createRunnerError(e,r)}}static async getEntityClassification(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS];if(!n)return;const a=await li.request({URL:e.URL,devtoolsLog:n},t),r=[];for(const[e,t]of a.urlsByEntity){const n=new Set;for(const e of t){const t=UrlUtils.getOrigin(e);t&&n.add(t)}const o={name:e.name,homepage:e.homepage,origins:[...n]};e===a.firstParty&&(o.isFirstParty=!0),
e.isUnrecognized&&(o.isUnrecognized=!0),r.push(o)}return r}static async gather(e,t){const n=t.resolvedConfig.settings;try{const a=Qo.getContext();let r;if(Qo.captureBreadcrumb({message:"Run started",category:"lifecycle",data:a}),n.auditMode&&!n.gatherMode){r=loadArtifacts(this._getDataSavePath(n))}else{const a={msg:"Gather phase",id:"lh:runner:gather"};if(Log.time(a,"verbose"),r=await e({resolvedConfig:t.resolvedConfig,driverMock:t.driverMock}),Log.timeEnd(a),r.Timing=Log.takeTimeEntries(),n.gatherMode){const e=this._getDataSavePath(n);await async function saveArtifacts(e,t){const n={msg:"Saving artifacts",id:"lh:assetSaver:saveArtifacts"};Log.time(n),J.mkdirSync(t,{recursive:!0});const a=J.readdirSync(t);for(const e of a)(e.endsWith(Ko)||e.endsWith(Jo)||e===Yo)&&J.unlinkSync(`${t}/${e}`);const{traces:r,devtoolsLogs:o,DevtoolsLog:i,Trace:s,...c}=e;for(const[e,n]of Object.entries(r))await saveTrace(n,`${t}/${e}.trace.json`)
;for(const[e,n]of Object.entries(o))await saveDevtoolsLog(n,`${t}/${e}.devtoolslog.json`);const l=JSON.stringify(c,stringifyReplacer,2)+"\n";J.writeFileSync(`${t}/artifacts.json`,l,"utf8"),Log.log("Artifacts saved to disk in folder:",t),Log.timeEnd(n)}(r,e)}}return r}catch(e){throw Runner.createRunnerError(e,n)}}static createRunnerError(e,t){return e.friendlyMessage&&(e.friendlyMessage=getFormatted(e.friendlyMessage,t.locale)),Qo.captureException(e,{level:"fatal"}),e}static _getTiming(e){const t=[...e.Timing||[],...Log.takeTimeEntries()].map((e=>[`${e.startTime}-${e.name}-${e.duration}`,e])),n=Array.from(new Map(t).values()).map((e=>({startTime:parseFloat(e.startTime.toFixed(2)),name:e.name,duration:parseFloat(e.duration.toFixed(2)),entryType:e.entryType}))).sort(((e,t)=>e.startTime-t.startTime)),a=n.find((e=>"lh:runner:gather"===e.name)),r=n.find((e=>"lh:runner:audit"===e.name));return{entries:n,total:(a?.duration||0)+(r?.duration||0)}}static async _gatherArtifactsFromBrowser(e,t,n){
if(!t.resolvedConfig.passes)throw new Error("No browser artifacts are either provided or requested.");const a={driver:t.driverMock||new Driver$1(n),requestedUrl:e,settings:t.resolvedConfig.settings,computedCache:t.computedCache};return await GatherRunner.run(t.resolvedConfig.passes,a)}static async _runAudits(e,t,n,a,r){const o={msg:"Analyzing and running audits...",id:"lh:runner:auditing"};if(Log.time(o),n.settings){const t={locale:void 0,gatherMode:void 0,auditMode:void 0,output:void 0,channel:void 0,budgets:void 0},a=Object.assign({},n.settings,t),r=Object.assign({},e,t),o=new Set([...Object.keys(a),...Object.keys(r)]);for(const e of o)if(!Za(a[e],r[e]))throw new Error(`Cannot change settings between gathering and auditing. Difference found at: ${e}`);if(!Za(a,r))throw new Error("Cannot change settings between gathering and auditing")}const i={settings:e,computedCache:r},s={};for(const e of t){const t=e.implementation.meta.id,r=await Runner._runAudit(e,n,i,a);s[t]=r}
return Log.timeEnd(o),s}static async _runAudit(e,t,n,a){const r=e.implementation,o={msg:`Auditing: ${getFormatted(r.meta.title,"en-US")}`,id:`lh:audit:${r.meta.id}`};let i;Log.time(o);try{for(const e of r.meta.requiredArtifacts){const n=void 0===t[e],a="traces"===e&&!t.traces[Audit.DEFAULT_PASS],o="devtoolsLogs"===e&&!t.devtoolsLogs[Audit.DEFAULT_PASS];if(n||a||o)throw Log.warn("Runner",`${e} gatherer, required by audit ${r.meta.id}, did not run.`),new LighthouseError(LighthouseError.errors.MISSING_REQUIRED_ARTIFACT,{artifactName:e});if(t[e]instanceof Error){const n=t[e];Qo.captureException(n,{tags:{gatherer:e},level:"error"}),Log.warn("Runner",`${e} gatherer, required by audit ${r.meta.id}, encountered an error: ${n.message}`);const a=new LighthouseError(LighthouseError.errors.ERRORED_REQUIRED_ARTIFACT,{artifactName:e,errorMessage:n.message});throw a.expected=!0,a}}const o={options:Object.assign({},r.defaultOptions,e.options),...n
},s=r.meta.requiredArtifacts.concat(r.meta.__internalOptionalArtifacts||[]).reduce(((e,n)=>{const a=t[n];return e[n]=a,e}),{}),c=await r.audit(s,o);a.push(...c.runWarnings||[]),i=Audit.generateAuditResult(r,c)}catch(e){"MISSING_REQUIRED_ARTIFACT"!==e.code&&"ERRORED_REQUIRED_ARTIFACT"!==e.code&&Log.warn(r.meta.id,`Caught exception: ${e.message}`),Qo.captureException(e,{tags:{audit:r.meta.id},level:"error"});const t=e.friendlyMessage?e.friendlyMessage:e.message;i=Audit.generateErrorAuditResult(r,t)}return Log.timeEnd(o),i}static getArtifactRuntimeError(e){const t=[e.PageLoadError,...Object.values(e)];for(const e of t){if(e instanceof LighthouseError&&e.lhrRuntimeError){const t=e.friendlyMessage||e.message;return{code:e.code,message:t}}}}static getAuditList(){const e=["audit.js","violation-audit.js","accessibility/axe-audit.js","multi-check-audit.js","byte-efficiency/byte-efficiency-audit.js","manual/manual-audit.js"]
;return["accessibility","audit.js","autocomplete.js","bf-cache.js","bootup-time.js","byte-efficiency","content-width.js","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","installable-manifest.js","is-on-https.js","largest-contentful-paint-element.js","layout-shift-elements.js","lcp-lazy-loaded.js","long-tasks.js","main-thread-tasks.js","mainthread-work-breakdown.js","manual","maskable-icon.js","metrics","metrics.js","multi-check-audit.js","network-requests.js","network-rtt.js","network-server-latency.js","no-unload-listeners.js","non-composited-animations.js","oopif-iframe-test-audit.js","performance-budget.js","predictive-perf.js","preload-fonts.js","prioritize-lcp-image.js","redirects.js","resource-summary.js","screenshot-thumbnails.js","script-elements-test-audit.js","script-treemap-data.js","seo","server-response-time.js","service-worker.js","splash-screen.js","themed-omnibox.js","third-party-facades.js","third-party-summary.js","timing-budget.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((e=>`dobetterweb/${e}`)),...["cumulative-layout-shift.js","experimental-interaction-to-next-paint.js","first-contentful-paint-3g.js","first-contentful-paint.js","first-meaningful-paint.js","interactive.js","largest-contentful-paint.js","max-potential-fid.js","speed-index.js","total-blocking-time.js"].map((e=>`metrics/${e}`)),...["canonical.js","crawlable-anchors.js","font-size.js","hreflang.js","http-status-code.js","is-crawlable.js","link-text.js","manual","meta-description.js","plugins.js","robots-txt.js","tap-targets.js"].map((e=>`seo/${e}`)),...["structured-data.js"].map((e=>`seo/manual/${e}`)),...["accesskeys.js","aria-allowed-attr.js","aria-command-name.js","aria-hidden-body.js","aria-hidden-focus.js","aria-input-field-name.js","aria-meter-name.js","aria-progressbar-name.js","aria-required-attr.js","aria-required-children.js","aria-required-parent.js","aria-roles.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-active.js","duplicate-id-aria.js","form-field-multiple-labels.js","frame-title.js","heading-order.js","html-has-lang.js","html-lang-valid.js","image-alt.js","input-image-alt.js","label.js","link-name.js","list.js","listitem.js","manual","meta-refresh.js","meta-viewport.js","object-alt.js","tabindex.js","td-headers-attr.js","th-has-data-cells.js","valid-lang.js","video-caption.js"].map((e=>`accessibility/${e}`)),...["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((e=>`accessibility/manual/${e}`)),...["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((e=>`byte-efficiency/${e}`)),...["manual-audit.js","pwa-cross-browser.js","pwa-each-page-has-url.js","pwa-page-transitions.js"].map((e=>`manual/${e}`))].filter((t=>/\.js$/.test(t)&&!e.includes(t))).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","gatherer.js","global-listeners.js","iframe-elements.js","image-elements.js","inputs.js","inspector-issues.js","installability-errors.js","js-usage.js","link-elements.js","main-document-content.js","meta-elements.js","network-user-agent.js","script-elements.js","scripts.js","seo","service-worker.js","source-maps.js","stacks.js","trace-compat.js","trace-elements.js","trace.js","viewport-dimensions.js","web-app-manifest.js",...["embedded-content.js","font-size.js","robots-txt.js","tap-targets.js"].map((e=>`seo/${e}`)),...["doctype.js","domstats.js","optimized-images.js","response-compression.js","tags-blocking-first-paint.js"].map((e=>`dobetterweb/${e}`))].filter((e=>/\.js$/.test(e)&&"gatherer.js"!==e)).sort()}static _getDataSavePath(e){
const{auditMode:t,gatherMode:n}=e;return"string"==typeof t?Q.resolve(process.cwd(),t):"string"==typeof n?Q.resolve(process.cwd(),n):Q.join(process.cwd(),"latest-run")}}const ui={},di=["server-response-time","render-blocking-resources","redirects","critical-request-chains","uses-text-compression","uses-rel-preconnect","uses-rel-preload","font-display","unminified-javascript","unminified-css","unused-css-rules"],mi={fcpRelevantAudits:di,lcpRelevantAudits:[...di,"largest-contentful-paint-element","prioritize-lcp-image","unused-javascript","efficient-animated-content","total-byte-weight","lcp-lazy-loaded"],tbtRelevantAudits:["long-tasks","third-party-summary","third-party-facades","bootup-time","mainthread-work-breakdown","dom-size","duplicated-javascript","legacy-javascript","viewport"],clsRelevantAudits:["layout-shift-elements","non-composited-animations","unsized-images"],inpRelevantAudits:["work-during-interaction"]},pi={performanceCategoryTitle:"Performance",
budgetsGroupTitle:"Budgets",budgetsGroupDescription:"Performance budgets set standards for the performance of your site.",metricGroupTitle:"Metrics",loadOpportunitiesGroupTitle:"Opportunities",loadOpportunitiesGroupDescription:"These suggestions can help your page load faster. They don't [directly affect](https://developer.chrome.com/docs/lighthouse/performance/performance-scoring/) the Performance score.",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 accessibility of your web app](https://developer.chrome.com/docs/lighthouse/accessibility/). Only a subset of accessibility issues can be automatically detected so manual testing 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/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 technology, 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/learn-core-web-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.",pwaCategoryTitle:"PWA",pwaCategoryDescription:"These checks validate the aspects of a Progressive Web App. [Learn what makes a good Progressive Web App](https://web.dev/pwa-checklist/).",pwaCategoryManualDescription:"These checks are required by the baseline [PWA Checklist](https://web.dev/pwa-checklist/) but are not automatically checked by Lighthouse. They do not affect your score but it's important that you verify them manually.",
bestPracticesCategoryTitle:"Best Practices",bestPracticesTrustSafetyGroupTitle:"Trust and Safety",bestPracticesUXGroupTitle:"User Experience",bestPracticesBrowserCompatGroupTitle:"Browser Compatibility",bestPracticesGeneralGroupTitle:"General",pwaInstallableGroupTitle:"Installable",pwaOptimizedGroupTitle:"PWA Optimized"},gi=createIcuMessageFn("core/config/default-config.js",pi),hi={settings:Jr,artifacts:[{id:"DevtoolsLog",gatherer:"devtools-log"},{id:"Trace",gatherer:"trace"},{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:"EmbeddedContent",gatherer:"seo/embedded-content"},{id:"FontSize",gatherer:"seo/font-size"},{id:"Inputs",gatherer:"inputs"},{id:"GlobalListeners",gatherer:"global-listeners"},{
id:"IFrameElements",gatherer:"iframe-elements"},{id:"ImageElements",gatherer:"image-elements"},{id:"InstallabilityErrors",gatherer:"installability-errors"},{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:"ServiceWorker",gatherer:"service-worker"},{id:"ScriptElements",gatherer:"script-elements"},{id:"Scripts",gatherer:"scripts"},{id:"SourceMaps",gatherer:"source-maps"},{id:"Stacks",gatherer:"stacks"},{id:"TagsBlockingFirstPaint",gatherer:"dobetterweb/tags-blocking-first-paint"},{id:"TapTargets",gatherer:"seo/tap-targets"},{id:"TraceElements",gatherer:"trace-elements"},{
id:"ViewportDimensions",gatherer:"viewport-dimensions"},{id:"WebAppManifest",gatherer:"web-app-manifest"},{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","service-worker","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/experimental-interaction-to-next-paint","errors-in-console","server-response-time","metrics/interactive","user-timings","critical-request-chains","redirects","installable-manifest","splash-screen","themed-omnibox","maskable-icon","content-width","image-aspect-ratio","image-size-responsive","preload-fonts","deprecations","mainthread-work-breakdown","bootup-time","uses-rel-preload","uses-rel-preconnect","font-display","diagnostics","network-requests","network-rtt","network-server-latency","main-thread-tasks","metrics","performance-budget","timing-budget","resource-summary","third-party-summary","third-party-facades","largest-contentful-paint-element","lcp-lazy-loaded","layout-shift-elements","long-tasks","no-unload-listeners","non-composited-animations","unsized-images","valid-source-maps","prioritize-lcp-image","csp-xss","script-treemap-data","manual/pwa-cross-browser","manual/pwa-page-transitions","manual/pwa-each-page-has-url","accessibility/accesskeys","accessibility/aria-allowed-attr","accessibility/aria-command-name","accessibility/aria-hidden-body","accessibility/aria-hidden-focus","accessibility/aria-input-field-name","accessibility/aria-meter-name","accessibility/aria-progressbar-name","accessibility/aria-required-attr","accessibility/aria-required-children","accessibility/aria-required-parent","accessibility/aria-roles","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-active","accessibility/duplicate-id-aria","accessibility/form-field-multiple-labels","accessibility/frame-title","accessibility/heading-order","accessibility/html-has-lang","accessibility/html-lang-valid","accessibility/image-alt","accessibility/input-image-alt","accessibility/label","accessibility/link-name","accessibility/list","accessibility/listitem","accessibility/meta-refresh","accessibility/meta-viewport","accessibility/object-alt","accessibility/tabindex","accessibility/td-headers-attr","accessibility/th-has-data-cells","accessibility/valid-lang","accessibility/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","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/tap-targets","seo/hreflang","seo/plugins","seo/canonical","seo/manual/structured-data","work-during-interaction","bf-cache"],
groups:{metrics:{title:gi(pi.metricGroupTitle)},"load-opportunities":{title:gi(pi.loadOpportunitiesGroupTitle),description:gi(pi.loadOpportunitiesGroupDescription)},budgets:{title:gi(pi.budgetsGroupTitle),description:gi(pi.budgetsGroupDescription)},diagnostics:{title:gi(pi.diagnosticsGroupTitle),description:gi(pi.diagnosticsGroupDescription)},"pwa-installable":{title:gi(pi.pwaInstallableGroupTitle)},"pwa-optimized":{title:gi(pi.pwaOptimizedGroupTitle)},"a11y-best-practices":{title:gi(pi.a11yBestPracticesGroupTitle),description:gi(pi.a11yBestPracticesGroupDescription)},"a11y-color-contrast":{title:gi(pi.a11yColorContrastGroupTitle),description:gi(pi.a11yColorContrastGroupDescription)},"a11y-names-labels":{title:gi(pi.a11yNamesLabelsGroupTitle),description:gi(pi.a11yNamesLabelsGroupDescription)},"a11y-navigation":{title:gi(pi.a11yNavigationGroupTitle),description:gi(pi.a11yNavigationGroupDescription)},"a11y-aria":{title:gi(pi.a11yAriaGroupTitle),
description:gi(pi.a11yAriaGroupDescription)},"a11y-language":{title:gi(pi.a11yLanguageGroupTitle),description:gi(pi.a11yLanguageGroupDescription)},"a11y-audio-video":{title:gi(pi.a11yAudioVideoGroupTitle),description:gi(pi.a11yAudioVideoGroupDescription)},"a11y-tables-lists":{title:gi(pi.a11yTablesListsVideoGroupTitle),description:gi(pi.a11yTablesListsVideoGroupDescription)},"seo-mobile":{title:gi(pi.seoMobileGroupTitle),description:gi(pi.seoMobileGroupDescription)},"seo-content":{title:gi(pi.seoContentGroupTitle),description:gi(pi.seoContentGroupDescription)},"seo-crawl":{title:gi(pi.seoCrawlingGroupTitle),description:gi(pi.seoCrawlingGroupDescription)},"best-practices-trust-safety":{title:gi(pi.bestPracticesTrustSafetyGroupTitle)},"best-practices-ux":{title:gi(pi.bestPracticesUXGroupTitle)},"best-practices-browser-compat":{title:gi(pi.bestPracticesBrowserCompatGroupTitle)},"best-practices-general":{title:gi(pi.bestPracticesGeneralGroupTitle)},hidden:{title:""}},categories:{
performance:{title:gi(pi.performanceCategoryTitle),supportedModes:["navigation","timespan","snapshot"],auditRefs:[{id:"first-contentful-paint",weight:10,group:"metrics",acronym:"FCP",relevantAudits:mi.fcpRelevantAudits},{id:"largest-contentful-paint",weight:25,group:"metrics",acronym:"LCP",relevantAudits:mi.lcpRelevantAudits},{id:"total-blocking-time",weight:30,group:"metrics",acronym:"TBT",relevantAudits:mi.tbtRelevantAudits},{id:"cumulative-layout-shift",weight:25,group:"metrics",acronym:"CLS",relevantAudits:mi.clsRelevantAudits},{id:"speed-index",weight:10,group:"metrics",acronym:"SI"},{id:"experimental-interaction-to-next-paint",weight:0,group:"metrics",acronym:"INP",relevantAudits:mi.inpRelevantAudits},{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},{id:"uses-responsive-images",weight:0},{id:"offscreen-images",
weight:0},{id:"unminified-css",weight:0},{id:"unminified-javascript",weight:0},{id:"unused-css-rules",weight:0},{id:"unused-javascript",weight:0},{id:"uses-optimized-images",weight:0},{id:"modern-image-formats",weight:0},{id:"uses-text-compression",weight:0},{id:"uses-rel-preconnect",weight:0},{id:"server-response-time",weight:0},{id:"redirects",weight:0},{id:"uses-rel-preload",weight:0},{id:"uses-http2",weight:0},{id:"efficient-animated-content",weight:0},{id:"duplicated-javascript",weight:0},{id:"legacy-javascript",weight:0},{id:"prioritize-lcp-image",weight:0},{id:"total-byte-weight",weight:0},{id:"uses-long-cache-ttl",weight:0},{id:"dom-size",weight:0},{id:"critical-request-chains",weight:0},{id:"user-timings",weight:0},{id:"bootup-time",weight:0},{id:"mainthread-work-breakdown",weight:0},{id:"font-display",weight:0},{id:"resource-summary",weight:0},{id:"third-party-summary",weight:0},{id:"third-party-facades",weight:0},{id:"largest-contentful-paint-element",weight:0},{
id:"lcp-lazy-loaded",weight:0},{id:"layout-shift-elements",weight:0},{id:"uses-passive-event-listeners",weight:0},{id:"no-document-write",weight:0},{id:"long-tasks",weight:0},{id:"non-composited-animations",weight:0},{id:"unsized-images",weight:0},{id:"viewport",weight:0},{id:"uses-responsive-images-snapshot",weight:0},{id:"work-during-interaction",weight:0},{id:"bf-cache",weight:0},{id:"performance-budget",weight:0,group:"budgets"},{id:"timing-budget",weight:0,group:"budgets"},{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"}]},accessibility:{title:gi(pi.a11yCategoryTitle),
description:gi(pi.a11yCategoryDescription),manualDescription:gi(pi.a11yCategoryManualDescription),supportedModes:["navigation","snapshot"],auditRefs:[{id:"accesskeys",weight:3,group:"a11y-navigation"},{id:"aria-allowed-attr",weight:10,group:"a11y-aria"},{id:"aria-command-name",weight:3,group:"a11y-aria"},{id:"aria-hidden-body",weight:10,group:"a11y-aria"},{id:"aria-hidden-focus",weight:3,group:"a11y-aria"},{id:"aria-input-field-name",weight:3,group:"a11y-aria"},{id:"aria-meter-name",weight:3,group:"a11y-aria"},{id:"aria-progressbar-name",weight:3,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:10,group:"a11y-aria"},{id:"aria-toggle-field-name",weight:3,group:"a11y-aria"},{id:"aria-tooltip-name",weight:3,group:"a11y-aria"},{id:"aria-treeitem-name",weight:3,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:3,group:"a11y-navigation"},{id:"color-contrast",weight:3,group:"a11y-color-contrast"},{id:"definition-list",weight:3,group:"a11y-tables-lists"},{id:"dlitem",weight:3,group:"a11y-tables-lists"},{id:"document-title",weight:3,group:"a11y-names-labels"},{id:"duplicate-id-active",weight:3,group:"a11y-navigation"},{id:"duplicate-id-aria",weight:10,group:"a11y-aria"},{id:"form-field-multiple-labels",weight:2,group:"a11y-names-labels"},{id:"frame-title",weight:3,group:"a11y-names-labels"},{id:"heading-order",weight:2,group:"a11y-navigation"},{id:"html-has-lang",weight:3,group:"a11y-language"},{id:"html-lang-valid",weight:3,group:"a11y-language"},{id:"image-alt",weight:10,group:"a11y-names-labels"},{id:"input-image-alt",weight:10,group:"a11y-names-labels"},{id:"label",weight:10,group:"a11y-names-labels"},{id:"link-name",weight:3,
group:"a11y-names-labels"},{id:"list",weight:3,group:"a11y-tables-lists"},{id:"listitem",weight:3,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:3,group:"a11y-names-labels"},{id:"tabindex",weight:3,group:"a11y-navigation"},{id:"td-headers-attr",weight:3,group:"a11y-tables-lists"},{id:"th-has-data-cells",weight:3,group:"a11y-tables-lists"},{id:"valid-lang",weight:3,group:"a11y-language"},{id:"video-caption",weight:10,group:"a11y-audio-video"},{id:"logical-tab-order",weight:0},{id:"focusable-controls",weight:0},{id:"interactive-element-affordance",weight:0},{id:"managed-focus",weight:0},{id:"focus-traps",weight:0},{id:"custom-controls-labels",weight:0},{id:"custom-controls-roles",weight:0},{id:"visual-order-follows-dom",weight:0},{id:"offscreen-content-hidden",weight:0},{id:"use-landmarks",weight:0}]},"best-practices":{title:gi(pi.bestPracticesCategoryTitle),
supportedModes:["navigation","timespan","snapshot"],auditRefs:[{id:"is-on-https",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-xss",weight:0,group:"best-practices-trust-safety"},{id:"paste-preventing-inputs",weight:1,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:"preload-fonts",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:"no-unload-listeners",weight:1,group:"best-practices-general"},{id:"js-libraries",weight:0,group:"best-practices-general"},{id:"deprecations",weight:1,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:gi(pi.seoCategoryTitle),description:gi(pi.seoCategoryDescription),manualDescription:gi(pi.seoCategoryManualDescription),supportedModes:["navigation","snapshot"],auditRefs:[{id:"viewport",weight:1,group:"seo-mobile"},{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:"is-crawlable",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:"font-size",weight:1,group:"seo-mobile"},{id:"plugins",weight:1,group:"seo-content"},{id:"tap-targets",weight:1,group:"seo-mobile"},{id:"structured-data",weight:0}]},pwa:{
title:gi(pi.pwaCategoryTitle),description:gi(pi.pwaCategoryDescription),manualDescription:gi(pi.pwaCategoryManualDescription),supportedModes:["navigation"],auditRefs:[{id:"installable-manifest",weight:2,group:"pwa-installable"},{id:"service-worker",weight:1,group:"pwa-optimized"},{id:"splash-screen",weight:1,group:"pwa-optimized"},{id:"themed-omnibox",weight:1,group:"pwa-optimized"},{id:"content-width",weight:1,group:"pwa-optimized"},{id:"viewport",weight:2,group:"pwa-optimized"},{id:"maskable-icon",weight:1,group:"pwa-optimized"},{id:"pwa-cross-browser",weight:0},{id:"pwa-page-transitions",weight:0},{id:"pwa-each-page-has-url",weight:0}]}}};Object.defineProperty(hi,"UIStrings",{enumerable:!1,get:()=>pi});const fi=JSON.parse(JSON.stringify(hi));if(!fi.categories)throw new Error("Default config should always have categories");delete fi.artifacts;const yi=["experimental-interaction-to-next-paint","uses-responsive-images-snapshot","work-during-interaction"]
;function assertValidPluginName(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 assertValidFRGatherer(e){const t=e.instance,n=t.name;if("object"!=typeof t.meta)throw new Error(`${n} gatherer did not provide a meta object.`);if(0===t.meta.supportedModes.length)throw new Error(`${n} gatherer did not support any gather modes.`);if("function"!=typeof t.getArtifact||t.getArtifact===FRGatherer.prototype.getArtifact)throw new Error(`${n} gatherer did not define a "getArtifact" method.`)}function assertValidAudit(e){const{implementation:t,path:n}=e,a=n||t?.meta?.id||"Unknown audit";if("function"!=typeof t.audit||t.audit===Audit.audit)throw new Error(`${a} has no audit() method.`)
;if("string"!=typeof t.meta.id)throw new Error(`${a} has no meta.id property, or the property is not a string.`);if(!isStringOrIcuMessage(t.meta.title))throw new Error(`${a} has no meta.title property, or the property is not a string.`);const r=t.meta.scoreDisplayMode||Audit.SCORING_MODES.BINARY;if(!isStringOrIcuMessage(t.meta.failureTitle)&&r===Audit.SCORING_MODES.BINARY)throw new Error(`${a} has no meta.failureTitle and should.`);if(!isStringOrIcuMessage(t.meta.description))throw new Error(`${a} has no meta.description property, or the property is not a string.`);if(""===t.meta.description)throw new Error(`${a} has an empty meta.description string. Please add a description for the UI.`);if(!Array.isArray(t.meta.requiredArtifacts))throw new Error(`${a} has no meta.requiredArtifacts property, or the property is not an array.`)}function assertValidCategories(e,t,n){if(!e)return;const a=new Map((t||[]).map((e=>[e.implementation.meta.id,e])));Object.keys(e).forEach((t=>{
e[t].auditRefs.forEach(((e,r)=>{if(!e.id)throw new Error(`missing an audit id at ${t}[${r}]`);const o=a.get(e.id);if(!o)throw new Error(`could not find ${e.id} audit for category ${t}`);const i="manual"===o.implementation.meta.scoreDisplayMode;if("accessibility"===t&&!e.group&&!i)throw new Error(`${e.id} accessibility audit does not have a group`);if(e.weight>0&&i)throw new Error(`${e.id} is manual but has a positive weight`);if(e.group&&(!n||!n[e.group]))throw new Error(`${e.id} references unknown group ${e.group}`)}))}))}function assertValidSettings(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!==("mobile"===e.formFactor))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`)}function assertValidConfig(e){const{warnings:t}=function assertValidFRNavigations(e){if(!e||!e.length)return{warnings:[]};const t=[],n=e[0];if("fatal"!==n.loadFailureMode){const e=n.loadFailureMode,a=[`"${n.id}" is the first navigation but had a failure mode of ${e}.`,"The first navigation will always be treated as loadFailureMode=fatal."].join(" ");t.push(a),n.loadFailureMode="fatal"}const a=e.map((e=>e.id)),r=a.find(((e,t)=>a.slice(t+1).some((t=>e===t))));if(r)throw new Error(`Navigation must have unique identifiers, but "${r}" was repeated.`);return{warnings:t}}(e.navigations);for(const t of e.artifacts||[])assertValidFRGatherer(t.gatherer);for(const t of e.audits||[])assertValidAudit(t)
;return assertValidCategories(e.categories,e.audits,e.groups),assertValidSettings(e.settings),{warnings:t}}function throwInvalidDependencyOrder(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("\n"))}function isArrayOfUnknownObjects$1(e){return Array.isArray(e)&&e.every(isObjectOfUnknownProperties$1)}function isObjectOfUnknownProperties$1(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function isNumber(e){return"number"==typeof e&&!isNaN(e)}fi.audits=fi.audits?.filter((e=>!yi.find((t=>e.toString().endsWith(t))))),fi.categories.performance.auditRefs=fi.categories.performance.auditRefs.filter((e=>!yi.includes(e.id))),fi.passes=[{passName:"defaultPass",recordTrace:!0,useThrottling:!0,pauseAfterFcpMs:1e3,pauseAfterLoadMs:1e3,networkQuietThresholdMs:1e3,cpuQuietThresholdMs:1e3,
gatherers:["css-usage","js-usage","viewport-dimensions","console-messages","anchor-elements","image-elements","link-elements","meta-elements","script-elements","scripts","iframe-elements","inputs","main-document-content","global-listeners","dobetterweb/doctype","dobetterweb/domstats","dobetterweb/optimized-images","dobetterweb/response-compression","dobetterweb/tags-blocking-first-paint","seo/font-size","seo/embedded-content","seo/robots-txt","seo/tap-targets","accessibility","trace-elements","inspector-issues","source-maps","web-app-manifest","installability-errors","stacks","full-page-screenshot","bf-cache-failures"]},{passName:"offlinePass",loadFailureMode:"ignore",gatherers:["service-worker"]}];class Budget{static assertNoExcessProperties(e,t){const n=Object.keys(e);if(n.length>0){const e=n.join(", ");throw new Error(`${t} has unrecognized properties: [${e}]`)}}static assertNoDuplicateStrings(e,t){const n=new Set;for(const a of e){
if(n.has(a))throw new Error(`${t} has duplicate entry of type '${a}'`);n.add(a)}}static validateResourceBudget(e){const{resourceType:t,budget:n,...a}=e;Budget.assertNoExcessProperties(a,"Resource Budget");const r=["total","document","script","stylesheet","image","media","font","other","third-party"];if(!r.includes(t))throw new Error(`Invalid resource type: ${t}. \nValid resource types are: ${r.join(", ")}`);if(!isNumber(n))throw new Error(`Invalid budget: ${n}`);return{resourceType:t,budget:n}}static throwInvalidPathError(e,t){throw new Error(`Invalid path ${e}. ${t}\n'Path' should be specified using the 'robots.txt' format.\nLearn more about the 'robots.txt' format here:\nhttps://developers.google.com/search/reference/robots_txt#url-matching-based-on-path-values`)}static validatePath(e){if(void 0!==e){
if("string"==typeof e)return e.startsWith("/")?(e.match(/\*/g)||[]).length>1?this.throwInvalidPathError(e,"Path should only contain one '*'."):(e.match(/\$/g)||[]).length>1?this.throwInvalidPathError(e,"Path should only contain one '$' character."):e.includes("$")&&!e.endsWith("$")&&this.throwInvalidPathError(e,"'$' character should only occur at end of path."):this.throwInvalidPathError(e,"Path should start with '/'."),e;this.throwInvalidPathError(e,"Path should be a string.")}}static getMatchingBudget(e,t){if(null!==e&&void 0!==t)for(let n=e.length-1;n>=0;n--){const a=e[n];if(this.urlMatchesPattern(t,a.path))return a}}static urlMatchesPattern(e,t="/"){const n=new URL(e),a=n.pathname+n.search,r=t.includes("*"),o=t.includes("$");if(!r&&!o)return a.startsWith(t);if(!r&&o)return a===t.slice(0,-1);if(r&&!o){const[e,n]=t.split("*"),r=a.slice(e.length);return a.startsWith(e)&&r.includes(n)}if(r&&o){const[e,n]=t.split("*"),r=a.slice(e.length);return a.startsWith(e)&&r.endsWith(n.slice(0,-1))
}return!1}static validateTimingBudget(e){const{metric:t,budget:n,...a}=e;Budget.assertNoExcessProperties(a,"Timing Budget");const r=["first-contentful-paint","interactive","first-meaningful-paint","max-potential-fid","total-blocking-time","speed-index","largest-contentful-paint","cumulative-layout-shift"];if(!r.includes(t))throw new Error(`Invalid timing metric: ${t}. \nValid timing metrics are: ${r.join(", ")}`);if(!isNumber(n))throw new Error(`Invalid budget: ${n}`);return{metric:t,budget:n}}static validateHostname(e){const t=`${e} is not a valid hostname.`;if(0===e.length)throw new Error(t);if(e.includes("/"))throw new Error(t);if(e.includes(":"))throw new Error(t);if(e.includes("*")&&(!e.startsWith("*.")||e.lastIndexOf("*")>0))throw new Error(t);return e}static validateHostnames(e){if(Array.isArray(e)&&e.every((e=>"string"==typeof e)))return e.map(Budget.validateHostname);if(void 0!==e)throw new Error("firstPartyHostnames should be defined as an array of strings.")}
static initializeBudget(e){if(!isArrayOfUnknownObjects$1(e=JSON.parse(JSON.stringify(e))))throw new Error("Budget file is not defined as an array of budgets.");return e.map(((e,t)=>{const n={},{path:a,options:r,resourceSizes:o,resourceCounts:i,timings:s,...c}=e;if(Budget.assertNoExcessProperties(c,"Budget"),n.path=Budget.validatePath(a),isObjectOfUnknownProperties$1(r)){const{firstPartyHostnames:e,...t}=r;Budget.assertNoExcessProperties(t,"Options property"),n.options={},n.options.firstPartyHostnames=Budget.validateHostnames(e)}else if(void 0!==r)throw new Error(`Invalid options property in budget at index ${t}`);if(isArrayOfUnknownObjects$1(o))n.resourceSizes=o.map(Budget.validateResourceBudget),Budget.assertNoDuplicateStrings(n.resourceSizes.map((e=>e.resourceType)),`budgets[${t}].resourceSizes`);else if(void 0!==o)throw new Error(`Invalid resourceSizes entry in budget at index ${t}`);if(isArrayOfUnknownObjects$1(i))n.resourceCounts=i.map(Budget.validateResourceBudget),
Budget.assertNoDuplicateStrings(n.resourceCounts.map((e=>e.resourceType)),`budgets[${t}].resourceCounts`);else if(void 0!==i)throw new Error(`Invalid resourceCounts entry in budget at index ${t}`);if(isArrayOfUnknownObjects$1(s))n.timings=s.map(Budget.validateTimingBudget),Budget.assertNoDuplicateStrings(n.timings.map((e=>e.metric)),`budgets[${t}].timings`);else if(void 0!==s)throw new Error(`Invalid timings entry in budget at index ${t}`);return n}))}}function isArrayOfUnknownObjects(e){return Array.isArray(e)&&e.every(isObjectOfUnknownProperties)}function isObjectOfUnknownProperties(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function objectIsGatherMode(e){return"string"==typeof e&&("navigation"===e||"timespan"===e||"snapshot"===e)}function assertNoExcessProperties(e,t,n=""){n&&(n+=" ");const a=Object.keys(e);if(a.length>0){const e=a.join(", ");throw new Error(`${t} has unrecognized ${n}properties: [${e}]`)}}class ConfigPlugin{static _parseAuditsList(e,t){if(void 0!==e){
if(!isArrayOfUnknownObjects(e))throw new Error(`${t} has an invalid audits array.`);return e.map((e=>{const{path:n,...a}=e;if(assertNoExcessProperties(a,t,"audit"),"string"!=typeof n)throw new Error(`${t} has a missing audit path.`);return{path:n}}))}}static _parseAuditRefsList(e,t){if(!isArrayOfUnknownObjects(e))throw new Error(`${t} has no valid auditsRefs.`);return e.map((e=>{const{id:n,weight:a,group:r,...o}=e;if(assertNoExcessProperties(o,t,"auditRef"),"string"!=typeof n)throw new Error(`${t} has an invalid auditRef id.`);if("number"!=typeof a)throw new Error(`${t} has an invalid auditRef weight.`);if("string"!=typeof r&&void 0!==r)throw new Error(`${t} has an invalid auditRef group.`);return{id:n,weight:a,group:r?`${t}-${r}`:r}}))}static _parseCategory(e,t){if(!isObjectOfUnknownProperties(e))throw new Error(`${t} has no valid category.`);const{title:n,description:a,manualDescription:r,auditRefs:o,supportedModes:i,...s}=e;if(assertNoExcessProperties(s,t,"category"),
!isStringOrIcuMessage(n))throw new Error(`${t} has an invalid category tile.`);if(!isStringOrIcuMessage(a)&&void 0!==a)throw new Error(`${t} has an invalid category description.`);if(!isStringOrIcuMessage(r)&&void 0!==r)throw new Error(`${t} has an invalid category manualDescription.`);if(!function isArrayOfGatherModes(e){return!!Array.isArray(e)&&e.every(objectIsGatherMode)}(i)&&void 0!==i)throw new Error(`${t} supportedModes must be an array, valid array values are "navigation", "timespan", and "snapshot".`);return{title:n,auditRefs:ConfigPlugin._parseAuditRefsList(o,t),description:a,manualDescription:r,supportedModes:i}}static _parseGroups(e,t){if(void 0===e)return;if(!isObjectOfUnknownProperties(e))throw new Error(`${t} groups json is not defined as an object.`);const n=Object.entries(e),a={};return n.forEach((([e,n])=>{if(!isObjectOfUnknownProperties(n))throw new Error(`${t} has a group not defined as an object.`);const{title:r,description:o,...i}=n
;if(assertNoExcessProperties(i,t,"group"),!isStringOrIcuMessage(r))throw new Error(`${t} has an invalid group title.`);if(!isStringOrIcuMessage(o)&&void 0!==o)throw new Error(`${t} has an invalid group description.`);a[`${t}-${e}`]={title:r,description:o}})),a}static parsePlugin(e,t){if(!isObjectOfUnknownProperties(e=JSON.parse(JSON.stringify(e))))throw new Error(`${t} is not defined as an object.`);const{audits:n,category:a,groups:r,...o}=e;return assertNoExcessProperties(o,t),{audits:ConfigPlugin._parseAuditsList(n,t),categories:{[t]:ConfigPlugin._parseCategory(a,t)},groups:ConfigPlugin._parseGroups(r,t)}}}const bi={resolve(){throw new Error("createRequire.resolve is not supported in bundled Lighthouse")}};function isBundledEnvironment(){if(globalThis.isDevtools||globalThis.isLightrider)return!0;try{return bi.resolve("lighthouse-logger"),!1}catch(e){return!0}}const vi=function _mergeConfigFragment(e,t,n=!1){if(null==e)return t;if(void 0===t)return e;if(Array.isArray(t)){if(n)return t
;if(!Array.isArray(e))throw new TypeError("Expected array but got "+typeof e);const a=e.slice();return t.forEach((e=>{a.some((t=>Za(t,e)))||a.push(e)})),a}if("object"==typeof t){if("object"!=typeof e)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((a=>{const r=n||"settings"===a&&"object"==typeof e[a];e[a]=_mergeConfigFragment(e[a],t[a],r)})),e}return t};const wi=new Map([["../gather/gatherers/accessibility",Promise.resolve().then((function(){return Oi}))],["../gather/gatherers/anchor-elements",Promise.resolve().then((function(){return Bi}))],["../gather/gatherers/bf-cache-failures",Promise.resolve().then((function(){return Ui}))],["../gather/gatherers/cache-contents",Promise.resolve().then((function(){return ji}))],["../gather/gatherers/console-messages",Promise.resolve().then((function(){return zi}))],["../gather/gatherers/css-usage",Promise.resolve().then((function(){
return qi}))],["../gather/gatherers/devtools-log-compat",Promise.resolve().then((function(){return $i}))],["../gather/gatherers/devtools-log",Promise.resolve().then((function(){return qr}))],["../gather/gatherers/dobetterweb/doctype",Promise.resolve().then((function(){return Vi}))],["../gather/gatherers/dobetterweb/domstats",Promise.resolve().then((function(){return Wi}))],["../gather/gatherers/dobetterweb/optimized-images",Promise.resolve().then((function(){return Gi}))],["../gather/gatherers/dobetterweb/response-compression",Promise.resolve().then((function(){return Vs}))],["../gather/gatherers/dobetterweb/tags-blocking-first-paint",Promise.resolve().then((function(){return Ws}))],["../gather/gatherers/full-page-screenshot",Promise.resolve().then((function(){return Hs}))],["../gather/gatherers/global-listeners",Promise.resolve().then((function(){return Gs}))],["../gather/gatherers/iframe-elements",Promise.resolve().then((function(){return Ys
}))],["../gather/gatherers/image-elements",Promise.resolve().then((function(){return Js}))],["../gather/gatherers/inputs",Promise.resolve().then((function(){return Zs}))],["../gather/gatherers/inspector-issues",Promise.resolve().then((function(){return Xs}))],["../gather/gatherers/installability-errors",Promise.resolve().then((function(){return Qs}))],["../gather/gatherers/js-usage",Promise.resolve().then((function(){return ec}))],["../gather/gatherers/link-elements",Promise.resolve().then((function(){return cc}))],["../gather/gatherers/main-document-content",Promise.resolve().then((function(){return lc}))],["../gather/gatherers/meta-elements",Promise.resolve().then((function(){return uc}))],["../gather/gatherers/network-user-agent",Promise.resolve().then((function(){return Eo}))],["../gather/gatherers/script-elements",Promise.resolve().then((function(){return dc}))],["../gather/gatherers/scripts",Promise.resolve().then((function(){return mc
}))],["../gather/gatherers/seo/embedded-content",Promise.resolve().then((function(){return pc}))],["../gather/gatherers/seo/font-size",Promise.resolve().then((function(){return Ks}))],["../gather/gatherers/seo/robots-txt",Promise.resolve().then((function(){return gc}))],["../gather/gatherers/seo/tap-targets",Promise.resolve().then((function(){return fc}))],["../gather/gatherers/service-worker",Promise.resolve().then((function(){return yc}))],["../gather/gatherers/source-maps",Promise.resolve().then((function(){return bc}))],["../gather/gatherers/stacks",Promise.resolve().then((function(){return vc}))],["../gather/gatherers/trace-compat",Promise.resolve().then((function(){return wc}))],["../gather/gatherers/trace-elements",Promise.resolve().then((function(){return _c}))],["../gather/gatherers/trace",Promise.resolve().then((function(){return Vr}))],["../gather/gatherers/viewport-dimensions",Promise.resolve().then((function(){return Ac
}))],["../gather/gatherers/web-app-manifest",Promise.resolve().then((function(){return xc}))],["../audits/accessibility/accesskeys",Promise.resolve().then((function(){return Pc}))],["../audits/accessibility/aria-allowed-attr",Promise.resolve().then((function(){return Uc}))],["../audits/accessibility/aria-command-name",Promise.resolve().then((function(){return qc}))],["../audits/accessibility/aria-hidden-body",Promise.resolve().then((function(){return Wc}))],["../audits/accessibility/aria-hidden-focus",Promise.resolve().then((function(){return Yc}))],["../audits/accessibility/aria-input-field-name",Promise.resolve().then((function(){return Zc}))],["../audits/accessibility/aria-meter-name",Promise.resolve().then((function(){return el}))],["../audits/accessibility/aria-progressbar-name",Promise.resolve().then((function(){return al}))],["../audits/accessibility/aria-required-attr",Promise.resolve().then((function(){return il
}))],["../audits/accessibility/aria-required-children",Promise.resolve().then((function(){return ll}))],["../audits/accessibility/aria-required-parent",Promise.resolve().then((function(){return ml}))],["../audits/accessibility/aria-roles",Promise.resolve().then((function(){return hl}))],["../audits/accessibility/aria-toggle-field-name",Promise.resolve().then((function(){return bl}))],["../audits/accessibility/aria-tooltip-name",Promise.resolve().then((function(){return Dl}))],["../audits/accessibility/aria-treeitem-name",Promise.resolve().then((function(){return Sl}))],["../audits/accessibility/aria-valid-attr-value",Promise.resolve().then((function(){return Al}))],["../audits/accessibility/aria-valid-attr",Promise.resolve().then((function(){return Rl}))],["../audits/accessibility/button-name",Promise.resolve().then((function(){return Nl}))],["../audits/accessibility/bypass",Promise.resolve().then((function(){return Pl
}))],["../audits/accessibility/color-contrast",Promise.resolve().then((function(){return Ul}))],["../audits/accessibility/definition-list",Promise.resolve().then((function(){return ql}))],["../audits/accessibility/dlitem",Promise.resolve().then((function(){return Wl}))],["../audits/accessibility/document-title",Promise.resolve().then((function(){return Yl}))],["../audits/accessibility/duplicate-id-active",Promise.resolve().then((function(){return Zl}))],["../audits/accessibility/duplicate-id-aria",Promise.resolve().then((function(){return eu}))],["../audits/accessibility/form-field-multiple-labels",Promise.resolve().then((function(){return au}))],["../audits/accessibility/frame-title",Promise.resolve().then((function(){return iu}))],["../audits/accessibility/heading-order",Promise.resolve().then((function(){return lu}))],["../audits/accessibility/html-has-lang",Promise.resolve().then((function(){return mu
}))],["../audits/accessibility/html-lang-valid",Promise.resolve().then((function(){return hu}))],["../audits/accessibility/image-alt",Promise.resolve().then((function(){return bu}))],["../audits/accessibility/input-image-alt",Promise.resolve().then((function(){return Du}))],["../audits/accessibility/label",Promise.resolve().then((function(){return Su}))],["../audits/accessibility/link-name",Promise.resolve().then((function(){return Au}))],["../audits/accessibility/list",Promise.resolve().then((function(){return Ru}))],["../audits/accessibility/listitem",Promise.resolve().then((function(){return Nu}))],["../audits/accessibility/manual/custom-controls-labels",Promise.resolve().then((function(){return Lu}))],["../audits/accessibility/manual/custom-controls-roles",Promise.resolve().then((function(){return Mu}))],["../audits/accessibility/manual/focus-traps",Promise.resolve().then((function(){return Pu
}))],["../audits/accessibility/manual/focusable-controls",Promise.resolve().then((function(){return Ou}))],["../audits/accessibility/manual/interactive-element-affordance",Promise.resolve().then((function(){return Bu}))],["../audits/accessibility/manual/logical-tab-order",Promise.resolve().then((function(){return Uu}))],["../audits/accessibility/manual/managed-focus",Promise.resolve().then((function(){return ju}))],["../audits/accessibility/manual/offscreen-content-hidden",Promise.resolve().then((function(){return zu}))],["../audits/accessibility/manual/use-landmarks",Promise.resolve().then((function(){return qu}))],["../audits/accessibility/manual/visual-order-follows-dom",Promise.resolve().then((function(){return $u}))],["../audits/accessibility/meta-refresh",Promise.resolve().then((function(){return Hu}))],["../audits/accessibility/meta-viewport",Promise.resolve().then((function(){return Ku}))],["../audits/accessibility/object-alt",Promise.resolve().then((function(){return Xu
}))],["../audits/accessibility/tabindex",Promise.resolve().then((function(){return td}))],["../audits/accessibility/td-headers-attr",Promise.resolve().then((function(){return rd}))],["../audits/accessibility/th-has-data-cells",Promise.resolve().then((function(){return sd}))],["../audits/accessibility/valid-lang",Promise.resolve().then((function(){return ud}))],["../audits/accessibility/video-caption",Promise.resolve().then((function(){return pd}))],["../audits/autocomplete",Promise.resolve().then((function(){return vd}))],["../audits/bf-cache",Promise.resolve().then((function(){return Ad}))],["../audits/bootup-time",Promise.resolve().then((function(){return Md}))],["../audits/byte-efficiency/duplicated-javascript",Promise.resolve().then((function(){return Jd}))],["../audits/byte-efficiency/efficient-animated-content",Promise.resolve().then((function(){return Qd}))],["../audits/byte-efficiency/legacy-javascript",Promise.resolve().then((function(){return am
}))],["../audits/byte-efficiency/modern-image-formats",Promise.resolve().then((function(){return im}))],["../audits/byte-efficiency/offscreen-images",Promise.resolve().then((function(){return dm}))],["../audits/byte-efficiency/render-blocking-resources",Promise.resolve().then((function(){return ym}))],["../audits/byte-efficiency/total-byte-weight",Promise.resolve().then((function(){return wm}))],["../audits/byte-efficiency/unminified-css",Promise.resolve().then((function(){return Cm}))],["../audits/byte-efficiency/unminified-javascript",Promise.resolve().then((function(){return km}))],["../audits/byte-efficiency/unused-css-rules",Promise.resolve().then((function(){return xm}))],["../audits/byte-efficiency/unused-javascript",Promise.resolve().then((function(){return Om}))],["../audits/byte-efficiency/uses-long-cache-ttl",Promise.resolve().then((function(){return zm}))],["../audits/byte-efficiency/uses-optimized-images",Promise.resolve().then((function(){return Vm
}))],["../audits/byte-efficiency/uses-responsive-images-snapshot",Promise.resolve().then((function(){return Zm}))],["../audits/byte-efficiency/uses-responsive-images",Promise.resolve().then((function(){return Ym}))],["../audits/byte-efficiency/uses-text-compression",Promise.resolve().then((function(){return ep}))],["../audits/content-width",Promise.resolve().then((function(){return ap}))],["../audits/critical-request-chains",Promise.resolve().then((function(){return sp}))],["../audits/csp-xss",Promise.resolve().then((function(){return Yp}))],["../audits/deprecations",Promise.resolve().then((function(){return Qp}))],["../audits/diagnostics",Promise.resolve().then((function(){return eg}))],["../audits/dobetterweb/charset",Promise.resolve().then((function(){return ig}))],["../audits/dobetterweb/doctype",Promise.resolve().then((function(){return lg}))],["../audits/dobetterweb/dom-size",Promise.resolve().then((function(){return mg
}))],["../audits/dobetterweb/geolocation-on-start",Promise.resolve().then((function(){return fg}))],["../audits/dobetterweb/inspector-issues",Promise.resolve().then((function(){return vg}))],["../audits/dobetterweb/js-libraries",Promise.resolve().then((function(){return Eg}))],["../audits/dobetterweb/no-document-write",Promise.resolve().then((function(){return Cg}))],["../audits/dobetterweb/notification-on-start",Promise.resolve().then((function(){return kg}))],["../audits/dobetterweb/paste-preventing-inputs",Promise.resolve().then((function(){return xg}))],["../audits/dobetterweb/uses-http2",Promise.resolve().then((function(){return Mg}))],["../audits/dobetterweb/uses-passive-event-listeners",Promise.resolve().then((function(){return Bg}))],["../audits/errors-in-console",Promise.resolve().then((function(){return zg}))],["../audits/final-screenshot",Promise.resolve().then((function(){return $g}))],["../audits/font-display",Promise.resolve().then((function(){return Kg
}))],["../audits/image-aspect-ratio",Promise.resolve().then((function(){return Xg}))],["../audits/image-size-responsive",Promise.resolve().then((function(){return th}))],["../audits/installable-manifest",Promise.resolve().then((function(){return ih}))],["../audits/is-on-https",Promise.resolve().then((function(){return uh}))],["../audits/largest-contentful-paint-element",Promise.resolve().then((function(){return ph}))],["../audits/layout-shift-elements",Promise.resolve().then((function(){return fh}))],["../audits/lcp-lazy-loaded",Promise.resolve().then((function(){return vh}))],["../audits/long-tasks",Promise.resolve().then((function(){return Th}))],["../audits/main-thread-tasks",Promise.resolve().then((function(){return Sh}))],["../audits/mainthread-work-breakdown",Promise.resolve().then((function(){return Ah}))],["../audits/manual/pwa-cross-browser",Promise.resolve().then((function(){return Rh}))],["../audits/manual/pwa-each-page-has-url",Promise.resolve().then((function(){return Nh
}))],["../audits/manual/pwa-page-transitions",Promise.resolve().then((function(){return Ph}))],["../audits/maskable-icon",Promise.resolve().then((function(){return Uh}))],["../audits/metrics",Promise.resolve().then((function(){return bf}))],["../audits/metrics/cumulative-layout-shift",Promise.resolve().then((function(){return Df}))],["../audits/metrics/experimental-interaction-to-next-paint",Promise.resolve().then((function(){return Sf}))],["../audits/metrics/first-contentful-paint-3g",Promise.resolve().then((function(){return _f}))],["../audits/metrics/first-contentful-paint",Promise.resolve().then((function(){return Ff}))],["../audits/metrics/first-meaningful-paint",Promise.resolve().then((function(){return If}))],["../audits/metrics/interactive",Promise.resolve().then((function(){return Mf}))],["../audits/metrics/largest-contentful-paint",Promise.resolve().then((function(){return Bf}))],["../audits/metrics/max-potential-fid",Promise.resolve().then((function(){return zf
}))],["../audits/metrics/speed-index",Promise.resolve().then((function(){return Vf}))],["../audits/metrics/total-blocking-time",Promise.resolve().then((function(){return Gf}))],["../audits/network-requests",Promise.resolve().then((function(){return Yf}))],["../audits/network-rtt",Promise.resolve().then((function(){return Zf}))],["../audits/network-server-latency",Promise.resolve().then((function(){return ey}))],["../audits/no-unload-listeners",Promise.resolve().then((function(){return ay}))],["../audits/non-composited-animations",Promise.resolve().then((function(){return sy}))],["../audits/oopif-iframe-test-audit",Promise.resolve().then((function(){return cy}))],["../audits/performance-budget",Promise.resolve().then((function(){return my}))],["../audits/predictive-perf",Promise.resolve().then((function(){return gy}))],["../audits/preload-fonts",Promise.resolve().then((function(){return by}))],["../audits/prioritize-lcp-image",Promise.resolve().then((function(){return Dy
}))],["../audits/redirects",Promise.resolve().then((function(){return Sy}))],["../audits/resource-summary",Promise.resolve().then((function(){return Ay}))],["../audits/screenshot-thumbnails",Promise.resolve().then((function(){return ky}))],["../audits/script-elements-test-audit",Promise.resolve().then((function(){return Fy}))],["../audits/script-treemap-data",Promise.resolve().then((function(){return Ry}))],["../audits/seo/canonical",Promise.resolve().then((function(){return Ny}))],["../audits/seo/crawlable-anchors",Promise.resolve().then((function(){return Py}))],["../audits/seo/font-size",Promise.resolve().then((function(){return zy}))],["../audits/seo/hreflang",Promise.resolve().then((function(){return Wy}))],["../audits/seo/http-status-code",Promise.resolve().then((function(){return Yy}))],["../audits/seo/is-crawlable",Promise.resolve().then((function(){return tb}))],["../audits/seo/link-text",Promise.resolve().then((function(){return ob
}))],["../audits/seo/manual/structured-data",Promise.resolve().then((function(){return cb}))],["../audits/seo/meta-description",Promise.resolve().then((function(){return db}))],["../audits/seo/plugins",Promise.resolve().then((function(){return vb}))],["../audits/seo/robots-txt",Promise.resolve().then((function(){return Fb}))],["../audits/seo/tap-targets",Promise.resolve().then((function(){return Ib}))],["../audits/server-response-time",Promise.resolve().then((function(){return Mb}))],["../audits/service-worker",Promise.resolve().then((function(){return Bb}))],["../audits/splash-screen",Promise.resolve().then((function(){return zb}))],["../audits/themed-omnibox",Promise.resolve().then((function(){return Vb}))],["../audits/third-party-facades",Promise.resolve().then((function(){return Zb}))],["../audits/third-party-summary",Promise.resolve().then((function(){return Gb}))],["../audits/timing-budget",Promise.resolve().then((function(){return ev
}))],["../audits/unsized-images",Promise.resolve().then((function(){return av}))],["../audits/user-timings",Promise.resolve().then((function(){return sv}))],["../audits/uses-rel-preconnect",Promise.resolve().then((function(){return uv}))],["../audits/uses-rel-preload",Promise.resolve().then((function(){return pv}))],["../audits/valid-source-maps",Promise.resolve().then((function(){return fv}))],["../audits/viewport",Promise.resolve().then((function(){return vv}))],["../audits/work-during-interaction",Promise.resolve().then((function(){return Ev}))],["lighthouse-plugin-publisher-ads",Promise.resolve().then((function(){return Nv}))],["lighthouse-plugin-publisher-ads/audits/ad-blocking-tasks",Promise.resolve().then((function(){return tw}))],["lighthouse-plugin-publisher-ads/audits/ad-render-blocking-resources",Promise.resolve().then((function(){return ow}))],["lighthouse-plugin-publisher-ads/audits/ad-request-critical-path",Promise.resolve().then((function(){return lw
}))],["lighthouse-plugin-publisher-ads/audits/bid-request-from-page-start",Promise.resolve().then((function(){return pw}))],["lighthouse-plugin-publisher-ads/audits/ad-request-from-page-start",Promise.resolve().then((function(){return fw}))],["lighthouse-plugin-publisher-ads/audits/ad-top-of-viewport",Promise.resolve().then((function(){return ww}))],["lighthouse-plugin-publisher-ads/audits/ads-in-viewport",Promise.resolve().then((function(){return Sw}))],["lighthouse-plugin-publisher-ads/audits/async-ad-tags",Promise.resolve().then((function(){return Aw}))],["lighthouse-plugin-publisher-ads/audits/blocking-load-events",Promise.resolve().then((function(){return xw}))],["lighthouse-plugin-publisher-ads/audits/bottleneck-requests",Promise.resolve().then((function(){return Mw}))],["lighthouse-plugin-publisher-ads/audits/duplicate-tags",Promise.resolve().then((function(){return jw}))],["lighthouse-plugin-publisher-ads/audits/first-ad-render",Promise.resolve().then((function(){return Vw
}))],["lighthouse-plugin-publisher-ads/audits/full-width-slots",Promise.resolve().then((function(){return Gw}))],["lighthouse-plugin-publisher-ads/audits/gpt-bids-parallel",Promise.resolve().then((function(){return Jw}))],["lighthouse-plugin-publisher-ads/audits/loads-gpt-from-official-source",Promise.resolve().then((function(){return Qw}))],["lighthouse-plugin-publisher-ads/audits/loads-ad-tag-over-https",Promise.resolve().then((function(){return nD}))],["lighthouse-plugin-publisher-ads/audits/script-injected-tags",Promise.resolve().then((function(){return sD}))],["lighthouse-plugin-publisher-ads/audits/serial-header-bidding",Promise.resolve().then((function(){return gD}))],["lighthouse-plugin-publisher-ads/audits/tag-load-time",Promise.resolve().then((function(){return bD}))],["lighthouse-plugin-publisher-ads/audits/viewport-ad-density",Promise.resolve().then((function(){return DD}))],["lighthouse-plugin-publisher-ads/audits/cumulative-ad-shift",Promise.resolve().then((function(){
return SD}))],["lighthouse-plugin-publisher-ads/audits/deprecated-api-usage",Promise.resolve().then((function(){return AD}))],["lighthouse-plugin-publisher-ads/audits/gpt-errors-overall",Promise.resolve().then((function(){return RD}))],["lighthouse-plugin-publisher-ads/audits/total-ad-blocking-time",Promise.resolve().then((function(){return LD}))]]);async function requireWrapper(e){let t;if(Q.isAbsolute(e)&&(e=tr.pathToFileURL(e).href),wi.has(e)?t=await wi.get(e):(e.match(/\.(js|mjs|cjs)$/)||(e+=".js"),t=await import(e)),t.default)return t.default;const n=new Set(["meta"]),a=Object.keys(t).filter((e=>!!(t[e]&&t[e]instanceof Object)&&Object.getOwnPropertyNames(t[e]).some((e=>n.has(e)))));if(1===a.length)return a[0];if(a.length>1)throw new Error(`module '${e}' has too many possible exports`);throw new Error(`module '${e}' missing default export`)}function cleanFlagsForSettings(e={}){const t={};for(const n of Object.keys(e))n in Jr&&(t[n]=e[n]);return t}function resolveSettings(e={},t){
const n=lookupLocale(t?.locale||e.locale),{defaultSettings:a}=eo,r=vi(deepClone(a),e,!0),o=vi(r,cleanFlagsForSettings(t),!0);return o.budgets&&(o.budgets=Budget.initializeBudget(o.budgets)),o.locale=n,!0===o.emulatedUserAgent&&(o.emulatedUserAgent=Kr[o.formFactor]),assertValidSettings(o),o}async function mergePlugins(e,t,n){const a=e.plugins||[],r=new Set([...a,...n?.plugins||[]]);for(const n of r){assertValidPluginName(e,n);const a=isBundledEnvironment()?n:resolveModulePath(n,t,"plugin"),r=await requireWrapper(a),o=ConfigPlugin.parsePlugin(r,n);e=vi(e,o)}return e}async function resolveGathererToDefn(e,t,n){const a=function expandGathererShorthand(e){if("string"==typeof e)return{path:e};if("implementation"in e||"instance"in e)return e;if("path"in e){if("string"!=typeof e.path)throw new Error("Invalid Gatherer type "+JSON.stringify(e));return e}if("function"==typeof e)return{implementation:e};if(e&&"function"==typeof e.beforePass)return{instance:e}
;throw new Error("Invalid Gatherer type "+JSON.stringify(e))}(e);if(a.instance)return{instance:a.instance,implementation:a.implementation,path:a.path};if(a.implementation){return{instance:new(0,a.implementation),implementation:a.implementation,path:a.path}}if(a.path){return async function requireGatherer(e,t,n){const a=t.find((t=>t===`${e}.js`));let r=`../gather/gatherers/${e}`;a||(r=resolveModulePath(e,n,"gatherer"));const o=await requireWrapper(r);return{instance:new o,implementation:o,path:e}}(a.path,t,n)}throw new Error("Invalid expanded Gatherer: "+JSON.stringify(a))}async function resolveAuditsToDefns(e,t){if(!e)return null;const n=Runner.getAuditList(),a=e.map((async e=>{const a=function expandAuditShorthand(e){if("string"==typeof e)return{path:e,options:{}};if("implementation"in e&&"function"==typeof e.implementation.audit)return e;if("path"in e&&"string"==typeof e.path)return e;if("audit"in e&&"function"==typeof e.audit)return{implementation:e,options:{}}
;throw new Error("Invalid Audit type "+JSON.stringify(e))}(e);let r;return r="implementation"in a?a.implementation:await function requireAudit(e,t,n){const a=`${e}.js`;let r=`../audits/${e}`;if(!t.find((e=>e===a)))if(isBundledEnvironment())r=e;else{const t=resolveModulePath(e,n,"audit");r=isBundledEnvironment()?Q.relative(getModuleDirectory({url:"core/config/config-helpers.js"}),t):t}return requireWrapper(r)}(a.path,n,t),{implementation:r,path:a.path,options:a.options||{}}})),r=function(e){const t=[];for(const n of e){const e=n.path&&t.find((e=>e.path===n.path));e?e.options=Object.assign({},e.options,n.options):t.push(n)}return t}(await Promise.all(a));return r.forEach((e=>assertValidAudit(e))),r}function resolveModulePath(e,t,n){try{return bi.resolve(e)}catch(e){}try{return bi.resolve(e,{paths:[process.cwd()]})}catch(e){}const a=Q.resolve(process.cwd(),e);try{return bi.resolve(a)}catch(e){}
const r="Unable to locate "+(n?`${n}: `:"")+`\`${e}\`.\n Tried to resolve the module from these locations:\n ${getModuleDirectory({url:"core/config/config-helpers.js"})}\n ${a}`;if(!t)throw new Error(r);const o=Q.resolve(t,e);try{return bi.resolve(o)}catch(e){}try{return bi.resolve(e,{paths:[t]})}catch(e){}throw new Error(r+`\n ${o}`)}function shallowClone(e){return"object"==typeof e?Object.assign(Object.create(Object.getPrototypeOf(e)),e):e}function deepClone(e){return JSON.parse(JSON.stringify(e))}function deepCloneConfigJson(e){const t=deepClone(e);if(Array.isArray(t.passes)&&Array.isArray(e.passes))for(let n=0;n<t.passes.length;n++){t.passes[n].gatherers=(e.passes[n].gatherers||[]).map((e=>shallowClone(e)))}return Array.isArray(e.audits)&&(t.audits=e.audits.map((e=>shallowClone(e)))),Array.isArray(e.artifacts)&&(t.artifacts=e.artifacts.map((e=>({...e,gatherer:shallowClone(e.gatherer)})))),t}const Di=Object.keys({fetchTime:"",LighthouseRunWarnings:"",
HostFormFactor:"",HostUserAgent:"",NetworkUserAgent:"",BenchmarkIndex:"",BenchmarkIndexes:"",GatherContext:"",traces:"",devtoolsLogs:"",settings:"",URL:"",Timing:"",PageLoadError:""}),Ei=["WebAppManifest","InstallabilityErrors","Stacks","FullPageScreenshot"],Ti={FullPageScreenshot:1,BFCacheFailures:1};class LegacyResolvedConfig{static async fromJson(e,t){const n={msg:"Create config",id:"lh:init:config"};Log.time(n,"verbose");let a=t?.configPath;if(e||(e=fi,a=Q.resolve(getModuleDirectory({url:"core/legacy/config/config.js"}),"./legacy-default-config.js")),a&&!Q.isAbsolute(a))throw new Error("configPath must be an absolute path.");if((e=deepCloneConfigJson(e)).extends){if("lighthouse:default"!==e.extends)throw new Error("`lighthouse:default` is the only valid extension method.");e=LegacyResolvedConfig.extendConfigJSON(deepCloneConfigJson(fi),e)}
const r=a?Q.dirname(a):void 0,o=resolveSettings((e=await mergePlugins(e,r,t)).settings||{},t),i=LegacyResolvedConfig.augmentPassesWithDefaults(e.passes);LegacyResolvedConfig.adjustDefaultPassForThrottling(o,i);const s=await LegacyResolvedConfig.requireGatherers(i,r),c=await LegacyResolvedConfig.requireAudits(e.audits,r),l=new LegacyResolvedConfig(e,{settings:o,passes:s,audits:c});return Log.timeEnd(n),l}constructor(e,t){this.settings=t.settings,this.passes=t.passes,this.audits=t.audits,this.categories=e.categories||null,this.groups=e.groups||null,LegacyResolvedConfig.filterConfigIfNeeded(this),function assertValidPasses(e,t){if(!Array.isArray(e))return;const n=LegacyResolvedConfig.getGatherersRequestedByAudits(t),a=new Set(Di);e.forEach(((e,t)=>{0===t&&"fatal"!==e.loadFailureMode&&(Log.warn(`"${e.passName}" is the first pass but was marked as non-fatal. The first pass will always be treated as loadFailureMode=fatal.`),e.loadFailureMode="fatal"),e.gatherers.forEach((e=>{
const t=e.instance;a.add(t.name);const r=n.has(t.name),o=Ei.includes(t.name);if(!r&&!o){const e=`${t.name} gatherer requested, however no audit requires it.`;Log.warn("config",e)}}))}));for(const e of t||[]){const t=e.implementation.meta;for(const e of t.requiredArtifacts)if(!a.has(e))throw new Error(`${e} gatherer, required by audit ${t.id}, was not found in config.`)}const r=new Set;e.forEach((e=>{const t=e.passName;if(r.has(t))throw new Error(`Passes must have unique names (repeated passName: ${t}.`);r.add(t)}))}(this.passes,this.audits),assertValidCategories(this.categories,this.audits,this.groups)}getPrintString(){const e=deepClone(this);if(e.passes)for(const t of e.passes)for(const e of t.gatherers)e.implementation=void 0,e.instance=void 0;if(e.audits)for(const t of e.audits)t.implementation=void 0,0===Object.keys(t.options).length&&(t.options=void 0);return replaceIcuMessages(e,e.settings.locale),JSON.stringify(e,null,2)}static extendConfigJSON(e,t){if(t.passes&&e.passes){
for(const n of t.passes){const t=n.passName||Zr.passName,a=e.passes.find((e=>e.passName===t));a?vi(a,n):e.passes.push(n)}delete t.passes}return vi(e,t)}static augmentPassesWithDefaults(e){if(!e)return null;const{defaultPassConfig:t}=eo;return e.map((e=>vi(deepClone(t),e)))}static adjustDefaultPassForThrottling(e,t){if(!t||"devtools"!==e.throttlingMethod&&"provided"!==e.throttlingMethod)return;const n=t.find((e=>"defaultPass"===e.passName));if(!n)return;const a=Qr;n.pauseAfterFcpMs=Math.max(a.pauseAfterFcpMs,n.pauseAfterFcpMs),n.pauseAfterLoadMs=Math.max(a.pauseAfterLoadMs,n.pauseAfterLoadMs),n.cpuQuietThresholdMs=Math.max(a.cpuQuietThresholdMs,n.cpuQuietThresholdMs),n.networkQuietThresholdMs=Math.max(a.networkQuietThresholdMs,n.networkQuietThresholdMs)}static filterConfigIfNeeded(e){const t=e.settings;if(!(t.onlyCategories||t.onlyAudits||t.skipAudits||t.disableFullPageScreenshot))return
;const{categories:n,requestedAuditNames:a}=LegacyResolvedConfig.filterCategoriesAndAudits(e.categories,t),r=e.audits&&e.audits.filter((e=>a.has(e.implementation.meta.id))),o=LegacyResolvedConfig.getGatherersRequestedByAudits(r);for(const e of Ei)o.add(e);t.disableFullPageScreenshot&&o.delete("FullPageScreenshot");const i=LegacyResolvedConfig.generatePassesNeededByGatherers(e.passes,o);e.categories=n,e.audits=r,e.passes=i}static filterCategoriesAndAudits(e,t){if(!e)return{categories:null,requestedAuditNames:new Set};if(t.onlyAudits&&t.skipAudits)throw new Error("Cannot set both skipAudits and onlyAudits");const n={},a=!!t.onlyCategories,r=!!t.onlyAudits,o=t.onlyCategories||[],i=t.onlyAudits||[],s=t.skipAudits||[];o.forEach((t=>{e[t]||Log.warn("config",`unrecognized category in 'onlyCategories': ${t}`)}));const c=new Set(i.concat(s));for(const t of c){const n=Object.keys(e).find((n=>!!e[n].auditRefs.find((e=>e.id===t))))
;if(n)i.includes(t)&&o.includes(n)&&Log.warn("config",`${t} in 'onlyAudits' is already included by ${n} in 'onlyCategories'`);else{const e=s.includes(t)?"skipAudits":"onlyAudits";Log.warn("config",`unrecognized audit in '${e}': ${t}`)}}const l=new Set(i);return s.forEach((e=>l.delete(e))),Object.keys(e).forEach((t=>{const c=deepClone(e[t]);if(a&&r)o.includes(t)||(c.auditRefs=c.auditRefs.filter((e=>i.includes(e.id))));else if(a){if(!o.includes(t))return}else r&&(c.auditRefs=c.auditRefs.filter((e=>i.includes(e.id))));c.auditRefs=c.auditRefs.filter((e=>!s.includes(e.id))),c.auditRefs.length&&(n[t]=c,c.auditRefs.forEach((e=>l.add(e.id))))})),{categories:n,requestedAuditNames:l}}static getGatherersRequestedByAudits(e){if(!e)return new Set;const t=new Set;for(const n of e){const{requiredArtifacts:e,__internalOptionalArtifacts:a}=n.implementation.meta;e.forEach((e=>t.add(e))),a&&a.forEach((e=>t.add(e)))}return t}static generatePassesNeededByGatherers(e,t){if(!e)return null
;const n=t.has("traces");return e.map((e=>{if(e.gatherers=e.gatherers.filter((e=>{const n=e.instance;return t.has(n.name)})),e.recordTrace&&!n){const t=e.passName||"unknown pass";Log.warn("config",`Trace not requested by an audit, dropping trace in ${t}`),e.recordTrace=!1}return e})).filter((e=>!!e.recordTrace||("defaultPass"===e.passName||e.gatherers.length>0)))}static async requireAudits(e,t){const n={msg:"Requiring audits",id:"lh:config:requireAudits"};Log.time(n,"verbose");const a=await resolveAuditsToDefns(e,t);return Log.timeEnd(n),a}static async requireGatherers(e,t){if(!e)return null;const n={msg:"Requiring gatherers",id:"lh:config:requireGatherers"};Log.time(n,"verbose");const a=Runner.getGathererList(),r=e.map((async e=>{const n=await Promise.all(e.gatherers.map((e=>resolveGathererToDefn(e,a,t)))),r=Array.from(new Map(n.map((e=>[e.instance.name,e]))).values());return r.forEach((e=>function assertValidGatherer(e,t){if(t=t||e.name||"gatherer",
"function"!=typeof e.beforePass)throw new Error(`${t} has no beforePass() method.`);if("function"!=typeof e.pass)throw new Error(`${t} has no pass() method.`);if("function"!=typeof e.afterPass)throw new Error(`${t} has no afterPass() method.`)}(e.instance,e.path))),r.sort(((e,t)=>(Ti[e.instance.name]||0)-(Ti[t.instance.name]||0))),Object.assign(e,{gatherers:r})})),o=await Promise.all(r);return Log.timeEnd(n),o}}const Si=EventEmitter;class ProtocolSession extends Si{constructor(e){super(),this._cdpSession=e,this._targetInfo=void 0,this._nextProtocolTimeout=void 0,this._handleProtocolEvent=this._handleProtocolEvent.bind(this),this._cdpSession.on("*",this._handleProtocolEvent)}id(){return this._cdpSession.id()}_handleProtocolEvent(e,...t){this.emit(e,...t)}setTargetInfo(e){this._targetInfo=e}hasNextProtocolTimeout(){return void 0!==this._nextProtocolTimeout}getNextProtocolTimeout(){return this._nextProtocolTimeout||3e4}setNextProtocolTimeout(e){this._nextProtocolTimeout=e}
sendCommand(e,...t){const n=this.getNextProtocolTimeout();let a;this._nextProtocolTimeout=void 0;const r=new Promise(((t,r)=>{n!==1/0&&(a=setTimeout(r,n,new LighthouseError(LighthouseError.errors.PROTOCOL_TIMEOUT,{protocolMethod:e})))})),o=this._cdpSession.send(e,...t);return Promise.race([o,r]).finally((()=>{a&&clearTimeout(a)}))}async dispose(){this._cdpSession.off("*",this._handleProtocolEvent),await this._cdpSession.detach()}}const Ci=EventEmitter;class TargetManager extends Ci{constructor(e){super(),this._enabled=!1,this._rootCdpSession=e,this._targetIdToTargets=new Map,this._onSessionAttached=this._onSessionAttached.bind(this),this._onFrameNavigated=this._onFrameNavigated.bind(this)}async _onFrameNavigated(e){if(!e.frame.parentId&&this._enabled)try{await this._rootCdpSession.send("Target.setAutoAttach",{autoAttach:!0,flatten:!0,waitForDebuggerOnStart:!0})}catch(e){if(this._enabled)throw e}}_findSession(e){
for(const{session:t,cdpSession:n}of this._targetIdToTargets.values())if(n.id()===e)return t;throw new Error(`session ${e} not found`)}rootSession(){const e=this._rootCdpSession.id();return this._findSession(e)}async _onSessionAttached(e){const t=new ProtocolSession(e);try{const n=await t.sendCommand("Target.getTargetInfo").catch((()=>null)),a=n?.targetInfo?.type,r="page"===a||"iframe"===a;if(!n||!r)return;const o=n.targetInfo.targetId;if(this._targetIdToTargets.has(o))return;t.setTargetInfo(n.targetInfo);const i=n.targetInfo.url||n.targetInfo.targetId;Log.verbose("target-manager",`target ${i} attached`);const s=this._getProtocolEventListener(t.id());e.on("*",s),e.on("sessionattached",this._onSessionAttached);const c={target:n.targetInfo,cdpSession:e,session:t,protocolListener:s};this._targetIdToTargets.set(o,c),await t.sendCommand("Network.enable"),await t.sendCommand("Target.setAutoAttach",{autoAttach:!0,flatten:!0,waitForDebuggerOnStart:!0})}catch(e){
if(/Target closed/.test(e.message))return;throw e}finally{await t.sendCommand("Runtime.runIfWaitingForDebugger").catch((()=>{}))}}_getProtocolEventListener(e){return(t,n)=>{const a={method:t,params:n,sessionId:e};this.emit("protocolevent",a)}}async enable(){this._enabled||(this._enabled=!0,this._targetIdToTargets=new Map,this._rootCdpSession.on("Page.frameNavigated",this._onFrameNavigated),await this._rootCdpSession.send("Page.enable"),await this._onSessionAttached(this._rootCdpSession))}async disable(){this._rootCdpSession.off("Page.frameNavigated",this._onFrameNavigated);for(const{cdpSession:e,protocolListener:t}of this._targetIdToTargets.values())e.off("*",t),e.off("sessionattached",this._onSessionAttached);this._enabled=!1,this._targetIdToTargets=new Map}}const throwNotConnectedFn=()=>{throw new Error("Session not connected")},_i={setTargetInfo:throwNotConnectedFn,hasNextProtocolTimeout:throwNotConnectedFn,getNextProtocolTimeout:throwNotConnectedFn,
setNextProtocolTimeout:throwNotConnectedFn,on:throwNotConnectedFn,once:throwNotConnectedFn,off:throwNotConnectedFn,sendCommand:throwNotConnectedFn,dispose:throwNotConnectedFn};class Driver{constructor(e){this._page=e,this._targetManager=void 0,this._executionContext=void 0,this._fetcher=void 0,this.defaultSession=_i}get executionContext(){return this._executionContext?this._executionContext:throwNotConnectedFn()}get fetcher(){return this._fetcher?this._fetcher:throwNotConnectedFn()}get targetManager(){return this._targetManager?this._targetManager:throwNotConnectedFn()}async url(){return this._page.url()}async connect(){if(this.defaultSession!==_i)return;const e={msg:"Connecting to browser",id:"lh:driver:connect"};Log.time(e);const t=await this._page.target().createCDPSession();this._targetManager=new TargetManager(t),await this._targetManager.enable(),this.defaultSession=this._targetManager.rootSession(),this._executionContext=new ExecutionContext(this.defaultSession),
this._fetcher=new Fetcher(this.defaultSession),Log.timeEnd(e)}async disconnect(){this.defaultSession!==_i&&(await(this._targetManager?.disable()),await this.defaultSession.dispose())}}function createDependencyError(e,t){return new Error(`Dependency "${e.id}" failed with exception: ${t.message}`)}const Ai={startInstrumentation:void 0,startSensitiveInstrumentation:"startInstrumentation",stopSensitiveInstrumentation:"startSensitiveInstrumentation",stopInstrumentation:"stopSensitiveInstrumentation",getArtifact:"stopInstrumentation"};async function collectPhaseArtifacts(e){const{driver:t,page:n,artifactDefinitions:a,artifactState:r,baseArtifacts:o,phase:i,gatherMode:s,computedCache:c,settings:l}=e,u=Ai[i],d=u&&r[u]||{};for(const e of a){Log["getArtifact"===i?"log":"verbose"](`artifacts:${i}`,e.id);const a=e.gatherer.instance,u=(d[e.id]||Promise.resolve()).then((async()=>{const u="getArtifact"===i?await collectArtifactDependencies(e,r.getArtifact):{};return a[i]({gatherMode:s,driver:t,
page:n,baseArtifacts:o,dependencies:u,computedCache:c,settings:l})}));await u.catch((()=>{})),r[i][e.id]=u}}async function collectArtifactDependencies(e,t){if(!e.dependencies)return{};const n=Object.entries(e.dependencies).map((async([e,n])=>{const a=t[n.id];if(void 0===a)throw new Error(`"${n.id}" did not run`);if(a instanceof Error)throw createDependencyError(n,a);const r=Promise.resolve().then((()=>a)).catch((e=>Promise.reject(createDependencyError(n,e))));return[e,await r]}));return Object.fromEntries(await Promise.all(n))}async function awaitArtifacts(e){const t={};for(const[n,a]of Object.entries(e.getArtifact)){const e=await a.catch((e=>e));void 0!==e&&(t[n]=e)}return t}const ki=Object.keys({fetchTime:"",LighthouseRunWarnings:"",BenchmarkIndex:"",BenchmarkIndexes:"",settings:"",Timing:"",URL:"",PageLoadError:"",HostFormFactor:"",HostUserAgent:"",GatherContext:""}),Fi=[],Ri=["Stacks","NetworkUserAgent","FullPageScreenshot"];function getAuditIdsInCategories(e,t){
if(!e)return new Set;const n=(t=t||Object.keys(e)).map((t=>e[t])).flatMap((e=>e?.auditRefs||[]));return new Set(n.map((e=>e.id)))}function filterCategoriesByAvailableAudits(e,t){if(!e)return e;const n=new Map(t.map((e=>[e.implementation.meta.id,e.implementation.meta]))),a=Object.entries(e).map((([e,t])=>{const a={...t,auditRefs:t.auditRefs.filter((e=>n.has(e.id)))},r=a.auditRefs.length<t.auditRefs.length,o=a.auditRefs.every((e=>{const t=n.get(e.id);return!!t&&t.scoreDisplayMode===Audit.SCORING_MODES.MANUAL}));return r&&o&&(a.auditRefs=[]),[e,a]})).filter((e=>"object"==typeof e[1]&&e[1].auditRefs.length));return Object.fromEntries(a)}function filterConfigByGatherMode(e,t){const n=function filterArtifactsByGatherMode(e,t){return e?e.filter((e=>e.gatherer.instance.meta.supportedModes.includes(t))):null}(e.artifacts,t),a=function filterAuditsByAvailableArtifacts(e,t){if(!e)return null;const n=new Set(t.map((e=>e.id)).concat(ki))
;return e.filter((e=>e.implementation.meta.requiredArtifacts.every((e=>n.has(e)))))}(function filterAuditsByGatherMode(e,t){return e?e.filter((e=>{const n=e.implementation.meta;return!n.supportedModes||n.supportedModes.includes(t)})):null}(e.audits,t),n||[]),r=filterCategoriesByAvailableAudits(function filterCategoriesByGatherMode(e,t){if(!e)return null;const n=Object.entries(e).filter((([e,n])=>!n.supportedModes||n.supportedModes.includes(t)));return Object.fromEntries(n)}(e.categories,t),a||[]);return{...e,artifacts:n,audits:a,categories:r}}function filterConfigByExplicitFilters(e,t){const{onlyAudits:n,onlyCategories:a,skipAudits:r}=t;!function warnOnUnknownOnlyCategories(e,t){if(t)for(const n of t)e?.[n]||Log.warn("config",`unrecognized category in 'onlyCategories': ${n}`)}(e.categories,a);let o=getAuditIdsInCategories(e.categories,void 0)
;a?o=getAuditIdsInCategories(e.categories,a):n?o=new Set:e.categories&&Object.keys(e.categories).length||(o=new Set(e.audits?.map((e=>e.implementation.meta.id))));const i=new Set([...o,...n||[],...Fi].filter((e=>!r||!r.includes(e)))),s=i.size&&e.audits?e.audits.filter((e=>i.has(e.implementation.meta.id))):e.audits,c=function filterCategoriesByExplicitFilters(e,t){if(!e||!t)return e;const n=Object.entries(e).filter((([e])=>t.includes(e)));return Object.fromEntries(n)}(filterCategoriesByAvailableAudits(e.categories,s||[]),a);let l=function filterArtifactsByAvailableAudits(e,t){if(!e)return null;if(!t)return e;const n=new Map(e.map((e=>[e.id,e]))),a=new Set([...Ri,...t.flatMap((e=>e.implementation.meta.requiredArtifacts))]);let r=0;for(;r!==a.size;){r=a.size;for(const e of a){const t=n.get(e);if(t&&t.dependencies)for(const e of Object.values(t.dependencies))a.add(e.id)}}return e.filter((e=>a.has(e.id)))}(e.artifacts,s)
;l&&e.settings.disableFullPageScreenshot&&(l=l.filter((({id:e})=>"FullPageScreenshot"!==e)));const u=function filterNavigationsByAvailableArtifacts(e,t){if(!e)return e;const n=new Set(t.map((e=>e.id)).concat(ki));return e.map((e=>({...e,artifacts:e.artifacts.filter((e=>n.has(e.id)))}))).filter((e=>e.artifacts.length))}(e.navigations,l||[]);return{...e,artifacts:l,navigations:u,audits:s,categories:c}}const xi=Q.join(getModuleDirectory({url:"core/config/config.js"}),"../../config/default-config.js"),Ii={FullPageScreenshot:1,BFCacheFailures:1};function resolveExtensions(e){if(!e.extends)return e;if("lighthouse:default"!==e.extends)throw new Error("`lighthouse:default` is the only valid extension method.");const{artifacts:t,...n}=e,a=deepCloneConfigJson(hi),r=vi(a,n);return r.artifacts=function mergeConfigFragmentArrayByKey(e,t,n){const a=new Map,r=e||[];for(let e=0;e<r.length;e++){const t=r[e];a.set(n(t),{index:e,item:t})}for(const e of t||[]){const t=a.get(n(e));if(t){
const n=t.item,a="object"==typeof e&&"object"==typeof n?vi(n,e,!0):e;r[t.index]=a}else r.push(e)}return r}(a.artifacts,t,(e=>e.id)),r}function resolveArtifactDependencies(e,t,n){if(!("dependencies"in t.instance.meta))return;const a=Object.entries(t.instance.meta.dependencies).map((([a,r])=>{const o=n.get(r);o||throwInvalidDependencyOrder(e.id,a);return function isValidArtifactDependency(e,t){const n={timespan:0,snapshot:1,navigation:2},a=Math.min(...e.instance.meta.supportedModes.map((e=>n[e]))),r=Math.min(...t.instance.meta.supportedModes.map((e=>n[e])));return a===n.timespan?r===n.timespan:a!==n.snapshot||r===n.snapshot}(t,o.gatherer)||function throwInvalidArtifactDependency(e,t){throw new Error([`Dependency "${t}" for "${e}" artifact is invalid.`,"The dependency must be collected before the dependent."].join("\n"))}(e.id,a),[a,{id:o.id}]}));return Object.fromEntries(a)}function resolveFakeNavigations(e,t){if(!e)return null;const n={msg:"Resolve navigation definitions",
id:"lh:config:resolveNavigationsToDefns"};Log.time(n,"verbose");const a={...Xr,artifacts:e,pauseAfterFcpMs:t.pauseAfterFcpMs,pauseAfterLoadMs:t.pauseAfterLoadMs,networkQuietThresholdMs:t.networkQuietThresholdMs,cpuQuietThresholdMs:t.cpuQuietThresholdMs,blankPage:t.blankPage};!function overrideNavigationThrottlingWindows(e,t){e.disableThrottling||"simulate"!==t.throttlingMethod&&(e.cpuQuietThresholdMs=Math.max(e.cpuQuietThresholdMs||0,Qr.cpuQuietThresholdMs),e.networkQuietThresholdMs=Math.max(e.networkQuietThresholdMs||0,Qr.networkQuietThresholdMs),e.pauseAfterFcpMs=Math.max(e.pauseAfterFcpMs||0,Qr.pauseAfterFcpMs),e.pauseAfterLoadMs=Math.max(e.pauseAfterLoadMs||0,Qr.pauseAfterLoadMs))}(a,t);const r=[a];return function assertArtifactTopologicalOrder(e){const t=new Set;for(const n of e)for(const e of n.artifacts)if(t.add(e.id),e.dependencies)for(const[n,{id:a}]of Object.entries(e.dependencies))t.has(a)||throwInvalidDependencyOrder(e.id,n)}(r),Log.timeEnd(n),r}
async function initializeConfig(e,t,n={}){const a={msg:"Initialize config",id:"lh:config"};Log.time(a,"verbose");let{configWorkingCopy:r,configDir:o}=function resolveWorkingCopy(e,t){let{configPath:n}=t;if(n&&!Q.isAbsolute(n))throw new Error("configPath must be an absolute path");e||(e=hi,n=xi);const a=n?Q.dirname(n):void 0;return{configWorkingCopy:deepCloneConfigJson(e),configPath:n,configDir:a}}(t,n);r=resolveExtensions(r),r=await mergePlugins(r,o,n);const i=resolveSettings(r.settings||{},n);!function overrideSettingsForGatherMode(e,t){"timespan"===t&&"simulate"===e.throttlingMethod&&(e.throttlingMethod="devtools")}(i,e);const s=await async function resolveArtifactsToDefns(e,t){if(!e)return null;const n={msg:"Resolve artifact definitions",id:"lh:config:resolveArtifactsToDefns"};Log.time(n,"verbose");const a=[...e];a.sort(((e,t)=>(Ii[e.id]||0)-(Ii[t.id]||0)));const r=new Map,o=Runner.getGathererList(),i=[];for(const e of a){const n=e.gatherer,a=await resolveGathererToDefn(n,o,t)
;if(!("meta"in a.instance))throw new Error(`${a.instance.name} gatherer does not have a Fraggle Rock meta obj`);const s={id:e.id,gatherer:a,dependencies:resolveArtifactDependencies(e,a,r)},c=s.gatherer.instance.meta.symbol;c&&r.set(c,s),i.push(s)}return Log.timeEnd(n),i}(r.artifacts,o);let c={artifacts:s,navigations:resolveFakeNavigations(s,i),audits:await resolveAuditsToDefns(r.audits,o),categories:r.categories||null,groups:r.groups||null,settings:i};const{warnings:l}=assertValidConfig(c);return c=filterConfigByGatherMode(c,e),c=filterConfigByExplicitFilters(c,i),Log.timeEnd(a),{resolvedConfig:c,warnings:l}}async function startTimespanGather(e,t={}){const{flags:n={},config:a}=t;Log.setLevel(n.logLevel||"error");const{resolvedConfig:r}=await initializeConfig("timespan",a,n),o=new Driver(e);await o.connect();const i=new Map,s=r.artifacts||[],c=await getBaseArtifacts(r,o,{gatherMode:"timespan"}),l={startInstrumentation:{},startSensitiveInstrumentation:{},stopSensitiveInstrumentation:{},
stopInstrumentation:{},getArtifact:{}},u={driver:o,page:e,artifactDefinitions:s,artifactState:l,baseArtifacts:c,computedCache:i,gatherMode:"timespan",settings:r.settings};await async function prepareTargetForTimespanMode(e,t){const n={msg:"Preparing target for timespan mode",id:"lh:prepare:timespanMode"};Log.time(n),await prepareDeviceEmulation(e,t),await prepareThrottlingAndNetwork(e.defaultSession,t,{disableThrottling:!1,blockedUrlPatterns:void 0}),Log.timeEnd(n)}(o,r.settings);const d=await enableAsyncStacks(o.defaultSession);return await collectPhaseArtifacts({phase:"startInstrumentation",...u}),await collectPhaseArtifacts({phase:"startSensitiveInstrumentation",...u}),{async endTimespanGather(){const e=await o.url(),t={resolvedConfig:r,computedCache:i};return{artifacts:await Runner.gather((async()=>{c.URL={finalDisplayedUrl:e},await collectPhaseArtifacts({phase:"stopSensitiveInstrumentation",...u}),await collectPhaseArtifacts({phase:"stopInstrumentation",...u}),await d(),
await collectPhaseArtifacts({phase:"getArtifact",...u}),await o.disconnect();const t=await awaitArtifacts(l);return finalizeArtifacts(c,t)}),t),runnerOptions:t}}}}var Ni={};const Li="127.0.0.1",Mi=9222;async function _computeNavigationResult(e,t,n,a){const{navigationError:r,mainDocumentUrl:o}=a,i=[...n.warnings,...a.warnings],s=await async function _collectDebugData(e,t){const n=t.artifactDefinitions.find((e=>e.gatherer.instance.meta.symbol===DevtoolsLog.symbol)),a=t.artifactDefinitions.find((e=>e.gatherer.instance.meta.symbol===Trace.symbol)),r=[n,a].filter((e=>Boolean(e)));if(!r.length)return{};await collectPhaseArtifacts({...t,phase:"getArtifact",artifactDefinitions:r});const o=t.artifactState.getArtifact,i=n?.id,s=i&&await o[i],c=s&&await go.request(s,e),l=a?.id;return{devtoolsLog:s,records:c,trace:l&&await o[l]}}(e,t),c=s.records?getPageLoadError(r,{url:o,loadFailureMode:e.navigation.loadFailureMode,networkRecords:s.records,warnings:i}):r;if(c){
const t=e.resolvedConfig.settings.locale,n=getFormatted(c.friendlyMessage,t);Log.error("NavigationRunner",n,a.requestedUrl);const r={},o=`pageLoadError-${e.navigation.id}`;return s.devtoolsLog&&(r.devtoolsLogs={[o]:s.devtoolsLog}),s.trace&&(r.traces={[o]:s.trace}),{pageLoadError:c,artifacts:r,warnings:[...i,c.friendlyMessage]}}await collectPhaseArtifacts({phase:"getArtifact",...t});return{artifacts:await awaitArtifacts(t.artifactState),warnings:i,pageLoadError:void 0}}async function _navigation(e){const t={startInstrumentation:{},startSensitiveInstrumentation:{},stopSensitiveInstrumentation:{},stopInstrumentation:{},getArtifact:{}},n={url:await e.driver.url(),gatherMode:"navigation",driver:e.driver,page:e.page,computedCache:e.computedCache,artifactDefinitions:e.navigation.artifacts,artifactState:t,baseArtifacts:e.baseArtifacts,settings:e.resolvedConfig.settings},a=await async function _setupNavigation({requestor:e,driver:t,navigation:n,resolvedConfig:a}){
"string"!=typeof e||a.settings.skipAboutBlank||await gotoURL(t,n.blankPage,{...n,waitUntil:["navigated"]});const{warnings:r}=await prepareTargetForIndividualNavigation(t.defaultSession,a.settings,{...n,requestor:e});return{warnings:r}}(e),r=await enableAsyncStacks(e.driver.defaultSession);await collectPhaseArtifacts({phase:"startInstrumentation",...n}),await collectPhaseArtifacts({phase:"startSensitiveInstrumentation",...n});const o=await async function _navigate(e){const{driver:t,resolvedConfig:n,requestor:a}=e;try{const{requestedUrl:r,mainDocumentUrl:o,warnings:i}=await gotoURL(t,a,{...e.navigation,debugNavigation:n.settings.debugNavigation,maxWaitForFcp:n.settings.maxWaitForFcp,maxWaitForLoad:n.settings.maxWaitForLoad,waitUntil:e.navigation.pauseAfterFcpMs?["fcp","load"]:["load"]});return{requestedUrl:r,mainDocumentUrl:o,navigationError:void 0,warnings:i}}catch(e){if(!(e instanceof LighthouseError))throw e;if("NO_FCP"!==e.code&&"PAGE_HUNG"!==e.code)throw e
;if("string"!=typeof a)throw e;return{requestedUrl:a,mainDocumentUrl:a,navigationError:e,warnings:[]}}}(e);return Object.values(n.baseArtifacts).every(Boolean)||(n.baseArtifacts.URL={requestedUrl:o.requestedUrl,mainDocumentUrl:o.mainDocumentUrl,finalDisplayedUrl:await e.driver.url()}),n.url=o.mainDocumentUrl,await collectPhaseArtifacts({phase:"stopSensitiveInstrumentation",...n}),await collectPhaseArtifacts({phase:"stopInstrumentation",...n}),await r(),await async function _cleanupNavigation({driver:e}){await clearThrottling(e.defaultSession)}(e),_computeNavigationResult(e,n,a,o)}async function navigationGather(e,t,n={}){const{flags:a={},config:r}=n;Log.setLevel(a.logLevel||"error");const{resolvedConfig:o}=await initializeConfig("navigation",r,a),i=new Map,s="function"==typeof t,c={resolvedConfig:o,computedCache:i};return{artifacts:await Runner.gather((async()=>{const n=s?t:UrlUtils.normalizeUrl(t);let r,c;if(!e){const{hostname:t=Li,port:n=Mi}=a;r=await Ni.connect({
browserURL:`http://${t}:${n}`}),c=await r.newPage(),e=c}const l={driver:new Driver(e),lhBrowser:r,lhPage:c,resolvedConfig:o,requestor:n},{baseArtifacts:u}=await async function _setup({driver:e,resolvedConfig:t,requestor:n}){await e.connect(),"string"!=typeof n||t.settings.skipAboutBlank||await gotoURL(e,Xr.blankPage,{waitUntil:["navigated"]});const a=await getBaseArtifacts(t,e,{gatherMode:"navigation"});return await prepareTargetForNavigationMode(e,t.settings),{baseArtifacts:a}}(l),{artifacts:d}=await async function _navigations(e){const{driver:t,page:n,resolvedConfig:a,requestor:r,baseArtifacts:o,computedCache:i}=e;if(!a.navigations)throw new Error("No navigations configured");const s={},c=[];for(const e of a.navigations){const l={driver:t,page:n,navigation:e,requestor:r,resolvedConfig:a,baseArtifacts:o,computedCache:i};let u=!1;const d=await _navigation(l);if("fatal"===e.loadFailureMode&&d.pageLoadError&&(s.PageLoadError=d.pageLoadError,u=!0),c.push(...d.warnings),
Object.assign(s,d.artifacts),u)break}return{artifacts:{...s,LighthouseRunWarnings:c}}}({...l,page:e,baseArtifacts:u,computedCache:i});return await async function _cleanup({requestedUrl:e,driver:t,resolvedConfig:n,lhBrowser:a,lhPage:r}){!n.settings.disableStorageReset&&e&&await clearDataForOrigin(t.defaultSession,e),await t.disconnect(),await(r?.close()),await(a?.disconnect())}(l),finalizeArtifacts(u,d)}),c),runnerOptions:c}}async function legacyNavigation(e,t={},n,a){t.logLevel=t.logLevel||"error",Log.setLevel(t.logLevel);const r={resolvedConfig:await LegacyResolvedConfig.fromJson(n,t),computedCache:new Map},o=a||new ui(t.port,t.hostname),i=await Runner.gather((()=>{const t=UrlUtils.normalizeUrl(e);return Runner._gatherArtifactsFromBrowser(t,r,o)}),r);return Runner.audit(i,r)}async function navigation(e,t,n){const a=await navigationGather(e,t,n);return Runner.audit(a.artifacts,a.runnerOptions)}async function snapshot(e,t){const n=await async function snapshotGather(e,t={}){
const{flags:n={},config:a}=t;Log.setLevel(n.logLevel||"error");const{resolvedConfig:r}=await initializeConfig("snapshot",a,n),o=new Driver(e);await o.connect();const i=new Map,s=await o.url(),c={resolvedConfig:r,computedCache:i};return{artifacts:await Runner.gather((async()=>{const t=await getBaseArtifacts(r,o,{gatherMode:"snapshot"});t.URL={finalDisplayedUrl:s};const n=r.artifacts||[],a={startInstrumentation:{},startSensitiveInstrumentation:{},stopSensitiveInstrumentation:{},stopInstrumentation:{},getArtifact:{}};return await collectPhaseArtifacts({phase:"getArtifact",gatherMode:"snapshot",driver:o,page:e,baseArtifacts:t,artifactDefinitions:n,artifactState:a,computedCache:i,settings:r.settings}),await o.disconnect(),finalizeArtifacts(t,await awaitArtifacts(a))}),c),runnerOptions:c}}(e,t);return Runner.audit(n.artifacts,n.runnerOptions)}async function startTimespan(e,t){const{endTimespanGather:n}=await startTimespanGather(e,t);return{endTimespan:async()=>{const e=await n()
;return Runner.audit(e.artifacts,e.runnerOptions)}}}createIcuMessageFn("core/user-flow.js",{defaultFlowName:"User flow ({url})",defaultNavigationName:"Navigation report ({url})",defaultTimespanName:"Timespan report ({url})",defaultSnapshotName:"Snapshot report ({url})"});class RawConnection extends class Connection{constructor(){this._lastCommandId=0,this._callbacks=new Map,this._eventEmitter=new EventEmitter}connect(){return Promise.reject(new Error("Not implemented"))}disconnect(){return Promise.reject(new Error("Not implemented"))}wsEndpoint(){return Promise.reject(new Error("Not implemented"))}sendCommand(e,t,...n){const a=n.length?n[0]:void 0;Log.formatProtocol("method => browser",{method:e,params:a},"verbose");const r=++this._lastCommandId,o=JSON.stringify({id:r,sessionId:t,method:e,params:a});return this.sendRawMessage(o),new Promise((t=>{this._callbacks.set(r,{method:e,resolve:t})}))}on(e,t){if("protocolevent"!==e)throw new Error('Only supports "protocolevent" events')
;if(!this._eventEmitter)throw new Error("Attempted to add event listener after connection disposed.");this._eventEmitter.on(e,t)}off(e,t){if("protocolevent"!==e)throw new Error('Only supports "protocolevent" events');if(!this._eventEmitter)throw new Error("Attempted to remove event listener after connection disposed.");this._eventEmitter.removeListener(e,t)}sendRawMessage(e){throw new Error("Not implemented")}handleRawMessage(e){const t=JSON.parse(e);if(!("id"in t))return Log.formatProtocol("<= event",{method:t.method,params:t.params},"verbose"),void this.emitProtocolEvent(t);const n=this._callbacks.get(t.id);if(n)this._callbacks.delete(t.id),n.resolve(Promise.resolve().then((e=>{if(t.error)throw Log.formatProtocol("method <= browser ERR",{method:n.method},"error"),LighthouseError.fromProtocolMessage(n.method,t.error);return Log.formatProtocol("method <= browser OK",{method:n.method,params:t.result},"verbose"),t.result})));else{const e=t.error?.message
;Log.formatProtocol("disowned method <= browser "+(e?"ERR":"OK"),{method:"UNKNOWN",params:e||t.result},"verbose")}}emitProtocolEvent(e){if(!this._eventEmitter)throw new Error("Attempted to emit event after connection disposed.");this._eventEmitter.emit("protocolevent",e)}dispose(){this._eventEmitter&&(this._eventEmitter.removeAllListeners(),this._eventEmitter=null)}}{constructor(e){super(),this._port=e,this._port.on("message",this.handleRawMessage.bind(this)),this._port.on("close",this.dispose.bind(this))}connect(){return Promise.resolve()}disconnect(){return this._port.close(),Promise.resolve()}sendRawMessage(e){this._port.send(e)}}globalThis.Buffer=Buffer$1,"undefined"!=typeof self?(globalThis.isDevtools=!0,self.setUpWorkerConnection=function setUpWorkerConnection(e){return new RawConnection(e)},self.runLighthouse=legacyNavigation,self.runLighthouseNavigation=function runLighthouseNavigation(e,{page:t,...n}){return navigation(t,e,n)},self.navigation=navigation,
self.startLighthouseTimespan=function startLighthouseTimespan({page:e,...t}){return startTimespan(e,t)},self.startTimespan=startTimespan,self.runLighthouseSnapshot=function runLighthouseSnapshot({page:e,...t}){return snapshot(e,t)},self.snapshot=snapshot,self.createConfig=function createConfig(e,t){const n={onlyCategories:e,screenEmulation:{disabled:!0}};return"desktop"===t&&(n.throttling=Gr.desktopDense4G,n.emulatedUserAgent=Kr.desktop,n.formFactor="desktop"),{extends:"lighthouse:default",plugins:["lighthouse-plugin-publisher-ads"],settings:n}},self.listenForStatus=function listenForStatus(e){Log.events.addListener("status",e),Log.events.addListener("warning",e)},self.registerLocaleData=function registerLocaleData(e,t){gr[e]=t},self.lookupLocale=function lookupCanonicalLocale(e){return lookupLocale(e,function getCanonicalLocales(){return fr}())}):(global.runBundledLighthouse=async function lighthouse(e,t={},n,a){return navigation(a,e,{config:n,flags:t})},
global.runBundledLighthouseLegacyNavigation=legacyNavigation);var Pi=Object.freeze({__proto__:null,default:{}});async function runA11yChecks(){const e=window.axe,t=`lighthouse-${Math.random()}`;e.configure({branding:{application:t},noHtml:!0});const n=await e.run(document,{elementRef:!0,runOnly:{type:"tag",values:["wcag2a","wcag2aa"]},resultTypes:["violations","inapplicable"],rules:{tabindex:{enabled:!0},accesskeys:{enabled:!0},"heading-order":{enabled:!0},"meta-viewport":{enabled:!0},"duplicate-id":{enabled:!1},"table-fake-caption":{enabled:!1},"td-has-header":{enabled:!1},marquee:{enabled:!1},"area-alt":{enabled:!1},"html-xml-lang-mismatch":{enabled:!1},blink:{enabled:!1},"server-side-image-map":{enabled:!1},"identical-links-same-purpose":{enabled:!1},"no-autoplay-audio":{enabled:!1},"svg-img-alt":{enabled:!1},"audio-caption":{enabled:!1},"aria-treeitem-name":{enabled:!0},"nested-interactive":{enabled:!1},"frame-focusable-content":{enabled:!1},"aria-roledescription":{enabled:!1},
"scrollable-region-focusable":{enabled:!1},"input-button-name":{enabled:!1},"role-img-alt":{enabled:!1},"select-name":{enabled:!1},"link-in-text-block":{enabled:!1},"frame-title-unique":{enabled:!1}}});return document.documentElement.scrollTop=0,{violations:n.violations.map(createAxeRuleResultArtifact),incomplete:n.incomplete.map(createAxeRuleResultArtifact),notApplicable:n.inapplicable.map((e=>({id:e.id}))),passes:n.passes.map((e=>({id:e.id}))),version:n.testEngine.version}}async function runA11yChecksAndResetScroll(){const e={x:window.scrollX,y:window.scrollY};try{return await runA11yChecks()}finally{window.scrollTo(e.x,e.y)}}function createAxeRuleResultArtifact(e){const t=e.nodes.map((e=>{const{target:t,failureSummary:n,element:a}=e,r=getNodeDetails(a),o=new Set,impactToNumber=e=>[null,"minor","moderate","serious","critical"].indexOf(e),i=[...e.any,...e.all,...e.none].sort(((e,t)=>impactToNumber(t.impact)-impactToNumber(e.impact)))
;for(const e of i)for(const t of e.relatedNodes||[]){const e=t.element;if(o.size>=3)break;e&&(a!==e&&o.add(e))}return{target:t,failureSummary:n,node:r,relatedNodes:[...o].map(getNodeDetails)}})),n=e.error;let a;return n instanceof Error&&(a={name:n.name,message:n.message}),{id:e.id,impact:e.impact||void 0,tags:e.tags,nodes:t,error:a}}var Oi=Object.freeze({__proto__:null,default:class Accessibility extends FRGatherer{meta={supportedModes:["snapshot","navigation"]};static pageFns={runA11yChecks,createAxeRuleResultArtifact};getArtifact(e){return e.driver.executionContext.evaluate(runA11yChecksAndResetScroll,{args:[],useIsolation:!0,
deps:['/*! axe v4.6.3\n * Copyright (c) 2023 Deque Systems, Inc.\n *\n * Your use of this Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * This entire copyright notice must appear in every copy of this file you\n * distribute or in any file that contains substantial portions of this source\n * code.\n */\n!function e(t){var n=t,a=t.document;function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var o=o||{};function u(e){this.name="SupportError",this.cause=e.cause,this.message="`".concat(e.cause,"` - feature unsupported in your environment."),e.ruleId&&(this.ruleId=e.ruleId,this.message+=" Skipping ".concat(this.ruleId," rule.")),this.stack=(new Error).stack}o.version="4.6.3","function"==typeof define&&define.amd&&define("axe-core",[],(function(){return o})),"object"===("undefined"==typeof module?"undefined":r(module))&&module.exports&&"function"==typeof e.toString&&(o.source="("+e.toString()+\')(typeof window === "object" ? window : this);\',module.exports=o),"function"==typeof t.getComputedStyle&&(t.axe=o),(u.prototype=Object.create(Error.prototype)).constructor=u;var i=["node"],l=["variant"],s=["matches"],c=["chromium"],d=["noImplicit"],p=["noPresentational"],D=["node"],f=["nodes"],m=["node"],h=["relatedNodes"],g=["environmentData"],b=["environmentData"],y=["node"],v=["environmentData"],F=["environmentData"],w=["environmentData"];function E(e){return I(e)||T(e)||V(e)||S()}function C(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&x(e,t)}function x(e,t){return(x=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function A(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=B(e);n=t?(n=B(this).constructor,Reflect.construct(a,arguments,n)):a.apply(this,arguments),a=this;if(n&&("object"===r(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return k(a)}}function k(e){if(void 0===e)throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called");return e}function B(e){return(B=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function R(e,t){if(null==e)return{};var n,a=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],0<=t.indexOf(n)||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols)for(var r=Object.getOwnPropertySymbols(e),o=0;o<r.length;o++)n=r[o],0<=t.indexOf(n)||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n]);return a}function N(e){return function(e){if(Array.isArray(e))return z(e)}(e)||T(e)||V(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function T(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function O(){return(O=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n,a=arguments[t];for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e}).apply(this,arguments)}function _(e,t){return I(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,o,u,i=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(a=o.call(n)).done)&&(i.push(a.value),i.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=n.return&&(u=n.return(),Object(u)!==u))return}finally{if(s)throw r}}return i}}(e,t)||V(e,t)||S()}function S(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function I(e){if(Array.isArray(e))return e}function P(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function M(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,j(a.key),a)}}function L(e,t,n){t&&M(e.prototype,t),n&&M(e,n),Object.defineProperty(e,"prototype",{writable:!1})}function j(e){return e=function(e,t){if("object"!==r(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0===n)return String(e);if(n=n.call(e,t),"object"===r(n))throw new TypeError("@@toPrimitive must return a primitive value.");return n}(e,"string"),"symbol"===r(e)?e:String(e)}function q(e,t){var n,a,r,o,u="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(u)return a=!(n=!0),{s:function(){u=u.call(e)},n:function(){var e=u.next();return n=e.done,e},e:function(e){a=!0,r=e},f:function(){try{n||null==u.return||u.return()}finally{if(a)throw r}}};if(Array.isArray(e)||(u=V(e))||t&&e&&"number"==typeof e.length)return u&&(e=u),o=0,{s:t=function(){},n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:t};throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function V(e,t){var n;if(e)return"string"==typeof e?z(e,t):"Map"===(n="Object"===(n=Object.prototype.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:n)||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?z(e,t):void 0}function z(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function $(e,t){return function(){return t||e((t={exports:{}}).exports,t),t.exports}}function U(e,t){for(var n in t)W(e,n,{get:t[n],enumerable:!0})}function H(e){return function(e,t,n){if(t&&"object"===r(t)||"function"==typeof t){var a,o=q(J(t));try{for(o.s();!(a=o.n()).done;)!function(){var r=a.value;Y.call(e,r)||"default"===r||W(e,r,{get:function(){return t[r]},enumerable:!(n=X(t,r))||n.enumerable})}()}catch(e){o.e(e)}finally{o.f()}}return e}((t=W(null!=e?G(K(e)):{},"default",e&&e.__esModule&&"default"in e?{get:function(){return e.default},enumerable:!0}:{value:e,enumerable:!0}),W(t,"__esModule",{value:!0})),e);var t}var G=Object.create,W=Object.defineProperty,K=Object.getPrototypeOf,Y=Object.prototype.hasOwnProperty,J=Object.getOwnPropertyNames,X=Object.getOwnPropertyDescriptor,Q=$((function(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isIdentStart=function(e){return"a"<=e&&e<="z"||"A"<=e&&e<="Z"||"-"===e||"_"===e},e.isIdent=function(e){return"a"<=e&&e<="z"||"A"<=e&&e<="Z"||"0"<=e&&e<="9"||"-"===e||"_"===e},e.isHex=function(e){return"a"<=e&&e<="f"||"A"<=e&&e<="F"||"0"<=e&&e<="9"},e.escapeIdentifier=function(t){for(var n=t.length,a="",r=0;r<n;){var o=t.charAt(r);if(e.identSpecialChars[o])a+="\\\\"+o;else if("_"===o||"-"===o||"A"<=o&&o<="Z"||"a"<=o&&o<="z"||0!==r&&"0"<=o&&o<="9")a+=o;else{if(55296==(63488&(o=o.charCodeAt(0)))){var u=t.charCodeAt(r++);if(55296!=(64512&o)||56320!=(64512&u))throw Error("UCS-2(decode): illegal sequence");o=((1023&o)<<10)+(1023&u)+65536}a+="\\\\"+o.toString(16)+" "}r++}return a},e.escapeStr=function(t){for(var n,a=t.length,r="",o=0;o<a;){var u=t.charAt(o);\'"\'===u?u=\'\\\\"\':"\\\\"===u?u="\\\\\\\\":void 0!==(n=e.strReplacementsRev[u])&&(u=n),r+=u,o++}return\'"\'+r+\'"\'},e.identSpecialChars={"!":!0,\'"\':!0,"#":!0,$:!0,"%":!0,"&":!0,"\'":!0,"(":!0,")":!0,"*":!0,"+":!0,",":!0,".":!0,"/":!0,";":!0,"<":!0,"=":!0,">":!0,"?":!0,"@":!0,"[":!0,"\\\\":!0,"]":!0,"^":!0,"`":!0,"{":!0,"|":!0,"}":!0,"~":!0},e.strReplacementsRev={"\\n":"\\\\n","\\r":"\\\\r","\\t":"\\\\t","\\f":"\\\\f","\\v":"\\\\v"},e.singleQuoteEscapeChars={n:"\\n",r:"\\r",t:"\\t",f:"\\f","\\\\":"\\\\","\'":"\'"},e.doubleQuotesEscapeChars={n:"\\n",r:"\\r",t:"\\t",f:"\\f","\\\\":"\\\\",\'"\':\'"\'}})),Z=$((function(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=Q();e.parseCssSelector=function(e,n,a,r,o,u){var i=e.length,l="";function s(a,r){var o="";for(n++,l=e.charAt(n);n<i;){if(l===a)return n++,o;var u;if("\\\\"===l)if(n++,(l=e.charAt(n))===a)o+=a;else if(void 0!==(u=r[l]))o+=u;else{if(t.isHex(l)){var s=l;for(n++,l=e.charAt(n);t.isHex(l);)s+=l,n++,l=e.charAt(n);" "===l&&(n++,l=e.charAt(n)),o+=String.fromCharCode(parseInt(s,16));continue}o+=l}else o+=l;n++,l=e.charAt(n)}return o}function c(){var a="";for(l=e.charAt(n);n<i;){if(!t.isIdent(l)){if("\\\\"!==l)return a;if(i<=++n)throw Error("Expected symbol but end of file reached.");if(l=e.charAt(n),!t.identSpecialChars[l]&&t.isHex(l)){var r=l;for(n++,l=e.charAt(n);t.isHex(l);)r+=l,n++,l=e.charAt(n);" "===l&&(n++,l=e.charAt(n)),a+=String.fromCharCode(parseInt(r,16));continue}}a+=l,n++,l=e.charAt(n)}return a}function d(){for(l=e.charAt(n);" "===l||"\\t"===l||"\\n"===l||"\\r"===l||"\\f"===l;)n++,l=e.charAt(n)}function p(){var t=D();if(!t)return null;var a=t;for(l=e.charAt(n);","===l;){if(n++,d(),"selectors"!==a.type&&(a={type:"selectors",selectors:[t]}),!(t=D()))throw Error(\'Rule expected after ",".\');a.selectors.push(t)}return a}function D(){d();var t={type:"ruleSet"},a=f();if(!a)return null;for(var r=t;a&&(a.type="rule",r.rule=a,r=a,d(),l=e.charAt(n),!(i<=n||","===l||")"===l));)if(o[l]){var u=l;if(n++,d(),!(a=f()))throw Error(\'Rule expected after "\'+u+\'".\');a.nestingOperator=u}else(a=f())&&(a.nestingOperator=null);return t}function f(){for(var o=null;n<i;)if("*"===(l=e.charAt(n)))n++,(o=o||{}).tagName="*";else if(t.isIdentStart(l)||"\\\\"===l)(o=o||{}).tagName=c();else if("."===l)n++,((o=o||{}).classNames=o.classNames||[]).push(c());else if("#"===l)n++,(o=o||{}).id=c();else if("["===l){n++,d();var D={name:c()};if(d(),"]"===l)n++;else{var f="";if(r[l]&&(f=l,n++,l=e.charAt(n)),i<=n)throw Error(\'Expected "=" but end of file reached.\');if("="!==l)throw Error(\'Expected "=" but "\'+l+\'" found.\');D.operator=f+"=",n++,d();var m="";if(D.valueType="string",\'"\'===l)m=s(\'"\',t.doubleQuotesEscapeChars);else if("\'"===l)m=s("\'",t.singleQuoteEscapeChars);else if(u&&"$"===l)n++,m=c(),D.valueType="substitute";else{for(;n<i&&"]"!==l;)m+=l,n++,l=e.charAt(n);m=m.trim()}if(d(),i<=n)throw Error(\'Expected "]" but end of file reached.\');if("]"!==l)throw Error(\'Expected "]" but "\'+l+\'" found.\');n++,D.value=m}((o=o||{}).attrs=o.attrs||[]).push(D)}else{if(":"!==l)break;if(n++,D={name:f=c()},"("===l){n++;var h="";if(d(),"selector"===a[f])D.valueType="selector",h=p();else{if(D.valueType=a[f]||"string",\'"\'===l)h=s(\'"\',t.doubleQuotesEscapeChars);else if("\'"===l)h=s("\'",t.singleQuoteEscapeChars);else if(u&&"$"===l)n++,h=c(),D.valueType="substitute";else{for(;n<i&&")"!==l;)h+=l,n++,l=e.charAt(n);h=h.trim()}d()}if(i<=n)throw Error(\'Expected ")" but end of file reached.\');if(")"!==l)throw Error(\'Expected ")" but "\'+l+\'" found.\');n++,D.value=h}((o=o||{}).pseudos=o.pseudos||[]).push(D)}return o}var m=p();if(n<i)throw Error(\'Rule expected but "\'+e.charAt(n)+\'" found.\');return m}})),ee=$((function(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=Q();e.renderEntity=function e(n){var a="";switch(n.type){case"ruleSet":for(var r=n.rule,o=[];r;)r.nestingOperator&&o.push(r.nestingOperator),o.push(e(r)),r=r.rule;a=o.join(" ");break;case"selectors":a=n.selectors.map(e).join(", ");break;case"rule":n.tagName&&(a="*"===n.tagName?"*":t.escapeIdentifier(n.tagName)),n.id&&(a+="#"+t.escapeIdentifier(n.id)),n.classNames&&(a+=n.classNames.map((function(e){return"."+t.escapeIdentifier(e)})).join("")),n.attrs&&(a+=n.attrs.map((function(e){return"operator"in e?"substitute"===e.valueType?"["+t.escapeIdentifier(e.name)+e.operator+"$"+e.value+"]":"["+t.escapeIdentifier(e.name)+e.operator+t.escapeStr(e.value)+"]":"["+t.escapeIdentifier(e.name)+"]"})).join("")),n.pseudos&&(a+=n.pseudos.map((function(n){return n.valueType?"selector"===n.valueType?":"+t.escapeIdentifier(n.name)+"("+e(n.value)+")":"substitute"===n.valueType?":"+t.escapeIdentifier(n.name)+"($"+n.value+")":"numeric"===n.valueType?":"+t.escapeIdentifier(n.name)+"("+n.value+")":":"+t.escapeIdentifier(n.name)+"("+t.escapeIdentifier(n.value)+")":":"+t.escapeIdentifier(n.name)})).join(""));break;default:throw Error(\'Unknown entity type: "\'+n.type+\'".\')}return a}})),te=$((function(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=Z(),n=ee();function a(){this.pseudos={},this.attrEqualityMods={},this.ruleNestingOperators={},this.substitutesEnabled=!1}a.prototype.registerSelectorPseudos=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=0,a=e;n<a.length;n++)this.pseudos[a[n]]="selector";return this},a.prototype.unregisterSelectorPseudos=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=0,a=e;n<a.length;n++)delete this.pseudos[a[n]];return this},a.prototype.registerNumericPseudos=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=0,a=e;n<a.length;n++)this.pseudos[a[n]]="numeric";return this},a.prototype.unregisterNumericPseudos=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=0,a=e;n<a.length;n++)delete this.pseudos[a[n]];return this},a.prototype.registerNestingOperators=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=0,a=e;n<a.length;n++)this.ruleNestingOperators[a[n]]=!0;return this},a.prototype.unregisterNestingOperators=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=0,a=e;n<a.length;n++)delete this.ruleNestingOperators[a[n]];return this},a.prototype.registerAttrEqualityMods=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=0,a=e;n<a.length;n++)this.attrEqualityMods[a[n]]=!0;return this},a.prototype.unregisterAttrEqualityMods=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=0,a=e;n<a.length;n++)delete this.attrEqualityMods[a[n]];return this},a.prototype.enableSubstitutes=function(){return this.substitutesEnabled=!0,this},a.prototype.disableSubstitutes=function(){return this.substitutesEnabled=!1,this},a.prototype.parse=function(e){return t.parseCssSelector(e,0,this.pseudos,this.attrEqualityMods,this.ruleNestingOperators,this.substitutesEnabled)},a.prototype.render=function(e){return n.renderEntity(e).trim()},e.CssSelectorParser=a})),ne=$((function(e,t){"use strict";t.exports=function(){}})),ae=$((function(e,t){"use strict";var n=ne()();t.exports=function(e){return e!==n&&null!==e}})),re=$((function(e,t){"use strict";var n=ae(),a=Array.prototype.forEach,r=Object.create;t.exports=function(e){var t=r(null);return a.call(arguments,(function(e){if(n(e)){var a,r=Object(e),o=t;for(a in r)o[a]=r[a]}})),t}})),oe=$((function(e,t){"use strict";t.exports=function(){var e=Math.sign;return"function"==typeof e&&1===e(10)&&-1===e(-20)}})),ue=$((function(e,t){"use strict";t.exports=function(e){return e=Number(e),isNaN(e)||0===e?e:0<e?1:-1}})),ie=$((function(e,t){"use strict";t.exports=oe()()?Math.sign:ue()})),le=$((function(e,t){"use strict";var n=ie(),a=Math.abs,r=Math.floor;t.exports=function(e){return isNaN(e)?0:0!==(e=Number(e))&&isFinite(e)?n(e)*r(a(e)):e}})),se=$((function(e,t){"use strict";var n=le(),a=Math.max;t.exports=function(e){return a(0,n(e))}})),ce=$((function(e,t){"use strict";var n=se();t.exports=function(e,t,a){return isNaN(e)?0<=t?a&&t?t-1:t:1:!1!==e&&n(e)}})),de=$((function(e,t){"use strict";t.exports=function(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return e}})),pe=$((function(e,t){"use strict";var n=ae();t.exports=function(e){if(n(e))return e;throw new TypeError("Cannot use null or undefined")}})),De=$((function(e,t){"use strict";var n=de(),a=pe(),r=Function.prototype.bind,o=Function.prototype.call,u=Object.keys,i=Object.prototype.propertyIsEnumerable;t.exports=function(e,t){return function(l,s){var c,d=arguments[2],p=arguments[3];return l=Object(a(l)),n(s),c=u(l),p&&c.sort("function"==typeof p?r.call(p,l):void 0),"function"!=typeof e&&(e=c[e]),o.call(e,c,(function(e,n){return i.call(l,e)?o.call(s,d,l[e],e,l,n):t}))}}})),fe=$((function(e,t){"use strict";t.exports=De()("forEach")})),me=$((function(){})),he=$((function(e,t){"use strict";t.exports=function(){var e=Object.assign;return"function"==typeof e&&(e(e={foo:"raz"},{bar:"dwa"},{trzy:"trzy"}),e.foo+e.bar+e.trzy==="razdwatrzy")}})),ge=$((function(e,t){"use strict";t.exports=function(){try{return Object.keys("primitive"),!0}catch(e){return!1}}})),be=$((function(e,t){"use strict";var n=ae(),a=Object.keys;t.exports=function(e){return a(n(e)?Object(e):e)}})),ye=$((function(e,t){"use strict";t.exports=ge()()?Object.keys:be()})),ve=$((function(e,t){"use strict";var n=ye(),a=pe(),r=Math.max;t.exports=function(e,t){var o,u,i,l=r(arguments.length,2);for(e=Object(a(e)),i=function(n){try{e[n]=t[n]}catch(n){o=o||n}},u=1;u<l;++u)n(t=arguments[u]).forEach(i);if(void 0!==o)throw o;return e}})),Fe=$((function(e,t){"use strict";t.exports=he()()?Object.assign:ve()})),we=$((function(e,t){"use strict";var n=ae(),a={function:!0,object:!0};t.exports=function(e){return n(e)&&a[r(e)]||!1}})),Ee=$((function(e,t){"use strict";var n=Fe(),a=we(),r=ae(),o=Error.captureStackTrace;t.exports=function(e){e=new Error(e);var u=arguments[1],i=arguments[2];return r(i)||a(u)&&(i=u,u=null),r(i)&&n(e,i),r(u)&&(e.code=u),o&&o(e,t.exports),e}})),Ce=$((function(e,t){"use strict";var n=pe(),a=Object.defineProperty,r=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,u=Object.getOwnPropertySymbols;t.exports=function(e,t){var i,l=Object(n(t));if(e=Object(n(e)),o(l).forEach((function(n){try{a(e,n,r(t,n))}catch(n){i=n}})),"function"==typeof u&&u(l).forEach((function(n){try{a(e,n,r(t,n))}catch(n){i=n}})),void 0!==i)throw i;return e}})),xe=$((function(e,t){"use strict";function n(e,t){return t}var a,r,o,u,i,l=se();try{Object.defineProperty(n,"length",{configurable:!0,writable:!1,enumerable:!1,value:1})}catch(e){}1===n.length?(a={configurable:!0,writable:!1,enumerable:!1},r=Object.defineProperty,t.exports=function(e,t){return t=l(t),e.length===t?e:(a.value=t,r(e,"length",a))}):(u=Ce(),i=[],o=function(e){var t,n=0;if(i[e])return i[e];for(t=[];e--;)t.push("a"+(++n).toString(36));return new Function("fn","return function ("+t.join(", ")+") { return fn.apply(this, arguments); };")},t.exports=function(e,t){if(t=l(t),e.length===t)return e;t=o(t)(e);try{u(t,e)}catch(e){}return t})})),Ae=$((function(e,t){"use strict";t.exports=function(e){return null!=e}})),ke=$((function(e,t){"use strict";var n=Ae(),a={object:!0,function:!0,undefined:!0};t.exports=function(e){return!!n(e)&&hasOwnProperty.call(a,r(e))}})),Be=$((function(e,t){"use strict";var n=ke();t.exports=function(e){if(!n(e))return!1;try{return!!e.constructor&&e.constructor.prototype===e}catch(e){return!1}}})),Re=$((function(e,t){"use strict";var n=Be();t.exports=function(e){if("function"!=typeof e)return!1;if(!hasOwnProperty.call(e,"length"))return!1;try{if("number"!=typeof e.length)return!1;if("function"!=typeof e.call)return!1;if("function"!=typeof e.apply)return!1}catch(e){return!1}return!n(e)}})),Ne=$((function(e,t){"use strict";var n=Re(),a=/^\\s*class[\\s{/}]/,r=Function.prototype.toString;t.exports=function(e){return!!n(e)&&!a.test(r.call(e))}})),Te=$((function(e,t){"use strict";var n="razdwatrzy";t.exports=function(){return"function"==typeof n.contains&&!0===n.contains("dwa")&&!1===n.contains("foo")}})),Oe=$((function(e,t){"use strict";var n=String.prototype.indexOf;t.exports=function(e){return-1<n.call(this,e,arguments[1])}})),_e=$((function(e,t){"use strict";t.exports=Te()()?String.prototype.contains:Oe()})),Se=$((function(e,t){"use strict";var n=Ae(),a=Ne(),r=Fe(),o=re(),u=_e();(t.exports=function(e,t){var a,i,l,s;return arguments.length<2||"string"!=typeof e?(s=t,t=e,e=null):s=arguments[2],n(e)?(a=u.call(e,"c"),i=u.call(e,"e"),l=u.call(e,"w")):i=!(a=l=!0),e={value:t,configurable:a,enumerable:i,writable:l},s?r(o(s),e):e}).gs=function(e,t,i){var l,s;return"string"!=typeof e?(s=i,i=t,t=e,e=null):s=arguments[3],n(t)?a(t)?n(i)?a(i)||(s=i,i=void 0):i=void 0:(s=t,t=i=void 0):t=void 0,e=n(e)?(l=u.call(e,"c"),u.call(e,"e")):!(l=!0),t={get:t,set:i,configurable:l,enumerable:e},s?r(o(s),t):t}})),Ie=$((function(e,t){"use strict";var n=Se(),a=de(),o=Function.prototype.apply,u=Function.prototype.call,i=Object.create,l=Object.defineProperty,s=Object.defineProperties,c=Object.prototype.hasOwnProperty,d={configurable:!0,enumerable:!1,writable:!0},p=function(e,t){var n;return a(t),c.call(this,"__ee__")?n=this.__ee__:(n=d.value=i(null),l(this,"__ee__",d),d.value=null),n[e]?"object"===r(n[e])?n[e].push(t):n[e]=[n[e],t]:n[e]=t,this},D=function(e,t){var n,r;return a(t),r=this,p.call(this,e,n=function(){f.call(r,e,n),o.call(t,this,arguments)}),n.__eeOnceListener__=t,this},f=function(e,t){var n,o,u,i;if(a(t),c.call(this,"__ee__")&&(n=this.__ee__)[e])if(o=n[e],"object"===r(o))for(i=0;u=o[i];++i)u!==t&&u.__eeOnceListener__!==t||(2===o.length?n[e]=o[i?0:1]:o.splice(i,1));else o!==t&&o.__eeOnceListener__!==t||delete n[e];return this},m=function(e){var t,n,a,i,l;if(c.call(this,"__ee__")&&(i=this.__ee__[e]))if("object"===r(i)){for(n=arguments.length,l=new Array(n-1),t=1;t<n;++t)l[t-1]=arguments[t];for(i=i.slice(),t=0;a=i[t];++t)o.call(a,this,l)}else switch(arguments.length){case 1:u.call(i,this);break;case 2:u.call(i,this,arguments[1]);break;case 3:u.call(i,this,arguments[1],arguments[2]);break;default:for(n=arguments.length,l=new Array(n-1),t=1;t<n;++t)l[t-1]=arguments[t];o.call(i,this,l)}},h={on:p,once:D,off:f,emit:m},g={on:n(p),once:n(D),off:n(f),emit:n(m)},b=s({},g);t.exports=e=function(e){return null==e?i(b):s(Object(e),g)},e.methods=h})),Pe=$((function(e,t){"use strict";t.exports=function(){var e,t=Array.from;return"function"==typeof t&&(e=t(t=["raz","dwa"]),Boolean(e&&e!==t&&"dwa"===e[1]))}})),Me=$((function(e,t){"use strict";t.exports=function(){return"object"===("undefined"==typeof globalThis?"undefined":r(globalThis))&&!!globalThis&&globalThis.Array===Array}})),Le=$((function(e,n){function a(){if("object"===("undefined"==typeof self?"undefined":r(self))&&self)return self;if("object"===(void 0===t?"undefined":r(t))&&t)return t;throw new Error("Unable to resolve global `this`")}n.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return a()}try{return __global__||a()}finally{delete Object.prototype.__global__}}()})),je=$((function(e,t){"use strict";t.exports=Me()()?globalThis:Le()})),qe=$((function(e,t){"use strict";var n=je(),a={object:!0,symbol:!0};t.exports=function(){var e,t=n.Symbol;if("function"!=typeof t)return!1;e=t("test symbol");try{String(e)}catch(e){return!1}return!!a[r(t.iterator)]&&!!a[r(t.toPrimitive)]&&!!a[r(t.toStringTag)]}})),Ve=$((function(e,t){"use strict";t.exports=function(e){return!!e&&("symbol"===r(e)||!!e.constructor&&"Symbol"===e.constructor.name&&"Symbol"===e[e.constructor.toStringTag])}})),ze=$((function(e,t){"use strict";var n=Ve();t.exports=function(e){if(n(e))return e;throw new TypeError(e+" is not a symbol")}})),$e=$((function(e,t){"use strict";var n=Se(),a=Object.create,r=Object.defineProperty,o=Object.prototype,u=a(null);t.exports=function(e){for(var t,a,i=0;u[e+(i||"")];)++i;return u[e+=i||""]=!0,r(o,t="@@"+e,n.gs(null,(function(e){a||(a=!0,r(this,t,n(e)),a=!1)}))),t}})),Ue=$((function(e,t){"use strict";var n=Se(),a=je().Symbol;t.exports=function(e){return Object.defineProperties(e,{hasInstance:n("",a&&a.hasInstance||e("hasInstance")),isConcatSpreadable:n("",a&&a.isConcatSpreadable||e("isConcatSpreadable")),iterator:n("",a&&a.iterator||e("iterator")),match:n("",a&&a.match||e("match")),replace:n("",a&&a.replace||e("replace")),search:n("",a&&a.search||e("search")),species:n("",a&&a.species||e("species")),split:n("",a&&a.split||e("split")),toPrimitive:n("",a&&a.toPrimitive||e("toPrimitive")),toStringTag:n("",a&&a.toStringTag||e("toStringTag")),unscopables:n("",a&&a.unscopables||e("unscopables"))})}})),He=$((function(e,t){"use strict";var n=Se(),a=ze(),r=Object.create(null);t.exports=function(e){return Object.defineProperties(e,{for:n((function(t){return r[t]||(r[t]=e(String(t)))})),keyFor:n((function(e){for(var t in a(e),r)if(r[t]===e)return t}))})}})),Ge=$((function(e,t){"use strict";var n,a,o,u=Se(),i=ze(),l=je().Symbol,s=$e(),c=Ue(),d=He(),p=Object.create,D=Object.defineProperties,f=Object.defineProperty;if("function"==typeof l)try{String(l()),o=!0}catch(e){}else l=null;a=function(e){if(this instanceof a)throw new TypeError("Symbol is not a constructor");return n(e)},t.exports=n=function e(t){var n;if(this instanceof e)throw new TypeError("Symbol is not a constructor");return o?l(t):(n=p(a.prototype),t=void 0===t?"":String(t),D(n,{__description__:u("",t),__name__:u("",s(t))}))},c(n),d(n),D(a.prototype,{constructor:u(n),toString:u("",(function(){return this.__name__}))}),D(n.prototype,{toString:u((function(){return"Symbol ("+i(this).__description__+")"})),valueOf:u((function(){return i(this)}))}),f(n.prototype,n.toPrimitive,u("",(function(){var e=i(this);return"symbol"===r(e)?e:e.toString()}))),f(n.prototype,n.toStringTag,u("c","Symbol")),f(a.prototype,n.toStringTag,u("c",n.prototype[n.toStringTag])),f(a.prototype,n.toPrimitive,u("c",n.prototype[n.toPrimitive]))})),We=$((function(e,t){"use strict";t.exports=qe()()?je().Symbol:Ge()})),Ke=$((function(e,t){"use strict";var n=Object.prototype.toString,a=n.call(function(){return arguments}());t.exports=function(e){return n.call(e)===a}})),Ye=$((function(e,t){"use strict";var n=Object.prototype.toString,a=RegExp.prototype.test.bind(/^[object [A-Za-z0-9]*Function]$/);t.exports=function(e){return"function"==typeof e&&a(n.call(e))}})),Je=$((function(e,t){"use strict";var n=Object.prototype.toString,a=n.call("");t.exports=function(e){return"string"==typeof e||e&&"object"===r(e)&&(e instanceof String||n.call(e)===a)||!1}})),Xe=$((function(e,t){"use strict";var n=We().iterator,a=Ke(),r=Ye(),o=se(),u=de(),i=pe(),l=ae(),s=Je(),c=Array.isArray,d=Function.prototype.call,p={configurable:!0,enumerable:!0,writable:!0,value:null},D=Object.defineProperty;t.exports=function(e){var t,f,m,h,g,b,y,v,F,w,E=arguments[1],C=arguments[2];if(e=Object(i(e)),l(E)&&u(E),this&&this!==Array&&r(this))t=this;else{if(!E){if(a(e))return 1!==(g=e.length)?Array.apply(null,e):((h=new Array(1))[0]=e[0],h);if(c(e)){for(h=new Array(g=e.length),f=0;f<g;++f)h[f]=e[f];return h}}h=[]}if(!c(e))if(void 0!==(F=e[n])){for(y=u(F).call(e),t&&(h=new t),v=y.next(),f=0;!v.done;)w=E?d.call(E,C,v.value,f):v.value,t?(p.value=w,D(h,f,p)):h[f]=w,v=y.next(),++f;g=f}else if(s(e)){for(g=e.length,t&&(h=new t),m=f=0;f<g;++f)w=e[f],f+1<g&&55296<=(b=w.charCodeAt(0))&&b<=56319&&(w+=e[++f]),w=E?d.call(E,C,w,m):w,t?(p.value=w,D(h,m,p)):h[m]=w,++m;g=m}if(void 0===g)for(g=o(e.length),t&&(h=new t(g)),f=0;f<g;++f)w=E?d.call(E,C,e[f],f):e[f],t?(p.value=w,D(h,f,p)):h[f]=w;return t&&(p.value=null,h.length=g),h}})),Qe=$((function(e,t){"use strict";t.exports=Pe()()?Array.from:Xe()})),Ze=$((function(e,t){"use strict";var n=Qe(),a=Array.isArray;t.exports=function(e){return a(e)?e:n(e)}})),et=$((function(e,t){"use strict";var n=Ze(),a=ae(),r=de(),o=Array.prototype.slice,u=function(e){return this.map((function(t,n){return t?t(e[n]):e[n]})).concat(o.call(e,this.length))};t.exports=function(e){return(e=n(e)).forEach((function(e){a(e)&&r(e)})),u.bind(e)}})),tt=$((function(e,t){"use strict";var n=de();t.exports=function(e){var t;return"function"==typeof e?{set:e,get:e}:(t={get:n(e.get)},void 0!==e.set?(t.set=n(e.set),e.delete&&(t.delete=n(e.delete)),e.clear&&(t.clear=n(e.clear))):t.set=t.get,t)}})),nt=$((function(e,t){"use strict";var n=Ee(),a=xe(),r=Se(),o=Ie().methods,u=et(),i=tt(),l=Function.prototype.apply,s=Function.prototype.call,c=Object.create,d=Object.defineProperties,p=o.on,D=o.emit;t.exports=function(e,t,o){var f,m,h,g,b,y,v,F,w,E,C,x=c(null),A=!1!==t?t:isNaN(e.length)?1:e.length;return o.normalizer&&(E=i(o.normalizer),m=E.get,h=E.set,g=E.delete,b=E.clear),null!=o.resolvers&&(C=u(o.resolvers)),E=m?a((function(t){var a,r,o=arguments;if(C&&(o=C(o)),null!==(a=m(o))&&hasOwnProperty.call(x,a))return v&&f.emit("get",a,o,this),x[a];if(r=1===o.length?s.call(e,this,o[0]):l.call(e,this,o),null===a){if(null!==(a=m(o)))throw n("Circular invocation","CIRCULAR_INVOCATION");a=h(o)}else if(hasOwnProperty.call(x,a))throw n("Circular invocation","CIRCULAR_INVOCATION");return x[a]=r,F&&f.emit("set",a,null,r),r}),A):0===t?function(){var t;if(hasOwnProperty.call(x,"data"))return v&&f.emit("get","data",arguments,this),x.data;if(t=arguments.length?l.call(e,this,arguments):s.call(e,this),hasOwnProperty.call(x,"data"))throw n("Circular invocation","CIRCULAR_INVOCATION");return x.data=t,F&&f.emit("set","data",null,t),t}:function(t){var a,r=arguments;if(C&&(r=C(arguments)),a=String(r[0]),hasOwnProperty.call(x,a))return v&&f.emit("get",a,r,this),x[a];if(r=1===r.length?s.call(e,this,r[0]):l.call(e,this,r),hasOwnProperty.call(x,a))throw n("Circular invocation","CIRCULAR_INVOCATION");return x[a]=r,F&&f.emit("set",a,null,r),r},f={original:e,memoized:E,profileName:o.profileName,get:function(e){return C&&(e=C(e)),m?m(e):String(e[0])},has:function(e){return hasOwnProperty.call(x,e)},delete:function(e){var t;hasOwnProperty.call(x,e)&&(g&&g(e),t=x[e],delete x[e],w)&&f.emit("delete",e,t)},clear:function(){var e=x;b&&b(),x=c(null),f.emit("clear",e)},on:function(e,t){return"get"===e?v=!0:"set"===e?F=!0:"delete"===e&&(w=!0),p.call(this,e,t)},emit:D,updateEnv:function(){e=f.original}},o=m?a((function(e){var t=arguments;C&&(t=C(t)),null!==(t=m(t))&&f.delete(t)}),A):0===t?function(){return f.delete("data")}:function(e){return C&&(e=C(arguments)[0]),f.delete(e)},A=a((function(){var e=arguments;return 0===t?x.data:(C&&(e=C(e)),e=m?m(e):String(e[0]),x[e])})),y=a((function(){var e=arguments;return 0===t?f.has("data"):(C&&(e=C(e)),null!==(e=m?m(e):String(e[0]))&&f.has(e))})),d(E,{__memoized__:r(!0),delete:r(o),clear:r(f.clear),_get:r(A),_has:r(y)}),f}})),at=$((function(e,t){"use strict";var n=de(),a=fe(),r=me(),o=nt(),u=ce();t.exports=function e(t){var i,l,s;if(n(t),(i=Object(arguments[1])).async&&i.promise)throw new Error("Options \'async\' and \'promise\' cannot be used together");return hasOwnProperty.call(t,"__memoized__")&&!i.force?t:(l=u(i.length,t.length,i.async&&r.async),s=o(t,l,i),a(r,(function(e,t){i[t]&&e(i[t],s,i)})),e.__profiler__&&e.__profiler__(s),s.updateEnv(),s.memoized)}})),rt=$((function(e,t){"use strict";t.exports=function(e){var t,n,a=e.length;if(!a)return"";for(t=String(e[n=0]);--a;)t+=""+e[++n];return t}})),ot=$((function(e,t){"use strict";t.exports=function(e){return e?function(t){for(var n=String(t[0]),a=0,r=e;--r;)n+=""+t[++a];return n}:function(){return""}}})),ut=$((function(e,t){"use strict";t.exports=function(){var e=Number.isNaN;return"function"==typeof e&&!e({})&&e(NaN)&&!e(34)}})),it=$((function(e,t){"use strict";t.exports=function(e){return e!=e}})),lt=$((function(e,t){"use strict";t.exports=ut()()?Number.isNaN:it()})),st=$((function(e,t){"use strict";var n=lt(),a=se(),r=pe(),o=Array.prototype.indexOf,u=Object.prototype.hasOwnProperty,i=Math.abs,l=Math.floor;t.exports=function(e){var t,s,c;if(!n(e))return o.apply(this,arguments);for(s=a(r(this).length),e=arguments[1],t=e=isNaN(e)?0:0<=e?l(e):a(this.length)-l(i(e));t<s;++t)if(u.call(this,t)&&(c=this[t],n(c)))return t;return-1}})),ct=$((function(e,t){"use strict";var n=st(),a=Object.create;t.exports=function(){var e=0,t=[],r=a(null);return{get:function(e){var a,r=0,o=t,u=e.length;if(0===u)return o[u]||null;if(o=o[u]){for(;r<u-1;){if(-1===(a=n.call(o[0],e[r])))return null;o=o[1][a],++r}return-1===(a=n.call(o[0],e[r]))?null:o[1][a]||null}return null},set:function(a){var o,u=0,i=t,l=a.length;if(0===l)i[l]=++e;else{for(i[l]||(i[l]=[[],[]]),i=i[l];u<l-1;)-1===(o=n.call(i[0],a[u]))&&(o=i[0].push(a[u])-1,i[1].push([[],[]])),i=i[1][o],++u;-1===(o=n.call(i[0],a[u]))&&(o=i[0].push(a[u])-1),i[1][o]=++e}return r[e]=a,e},delete:function(e){var a,o=0,u=t,i=r[e],l=i.length,s=[];if(0===l)delete u[l];else if(u=u[l]){for(;o<l-1;){if(-1===(a=n.call(u[0],i[o])))return;s.push(u,a),u=u[1][a],++o}if(-1===(a=n.call(u[0],i[o])))return;for(e=u[1][a],u[0].splice(a,1),u[1].splice(a,1);!u[0].length&&s.length;)a=s.pop(),(u=s.pop())[0].splice(a,1),u[1].splice(a,1)}delete r[e]},clear:function(){t=[],r=a(null)}}}})),dt=$((function(e,t){"use strict";var n=st();t.exports=function(){var e=0,t=[],a=[];return{get:function(e){return-1===(e=n.call(t,e[0]))?null:a[e]},set:function(n){return t.push(n[0]),a.push(++e),e},delete:function(e){-1!==(e=n.call(a,e))&&(t.splice(e,1),a.splice(e,1))},clear:function(){t=[],a=[]}}}})),pt=$((function(e,t){"use strict";var n=st(),a=Object.create;t.exports=function(e){var t=0,r=[[],[]],o=a(null);return{get:function(t){for(var a,o=0,u=r;o<e-1;){if(-1===(a=n.call(u[0],t[o])))return null;u=u[1][a],++o}return-1!==(a=n.call(u[0],t[o]))&&u[1][a]||null},set:function(a){for(var u,i=0,l=r;i<e-1;)-1===(u=n.call(l[0],a[i]))&&(u=l[0].push(a[i])-1,l[1].push([[],[]])),l=l[1][u],++i;return-1===(u=n.call(l[0],a[i]))&&(u=l[0].push(a[i])-1),l[1][u]=++t,o[t]=a,t},delete:function(t){for(var a,u=0,i=r,l=[],s=o[t];u<e-1;){if(-1===(a=n.call(i[0],s[u])))return;l.push(i,a),i=i[1][a],++u}if(-1!==(a=n.call(i[0],s[u]))){for(t=i[1][a],i[0].splice(a,1),i[1].splice(a,1);!i[0].length&&l.length;)a=l.pop(),(i=l.pop())[0].splice(a,1),i[1].splice(a,1);delete o[t]}},clear:function(){r=[[],[]],o=a(null)}}}})),Dt=$((function(e,t){"use strict";var n=de(),a=fe(),r=Function.prototype.call;t.exports=function(e,t){var o={},u=arguments[2];return n(t),a(e,(function(e,n,a,i){o[n]=r.call(t,u,e,n,a,i)})),o}})),ft=$((function(e,t){"use strict";function n(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return e}function o(e){var t,r,o=a.createTextNode(""),u=0;return new e((function(){var e;if(t)r&&(t=r.concat(t));else{if(!r)return;t=r}if(r=t,t=null,"function"==typeof r)e=r,r=null,e();else for(o.data=u=++u%2;r;)e=r.shift(),r.length||(r=null),e()})).observe(o,{characterData:!0}),function(e){n(e),t?"function"==typeof t?t=[t,e]:t.push(e):(t=e,o.data=u=++u%2)}}t.exports=function(){if("object"===("undefined"==typeof process?"undefined":r(process))&&process&&"function"==typeof process.nextTick)return process.nextTick;if("function"==typeof queueMicrotask)return function(e){queueMicrotask(n(e))};if("object"===(void 0===a?"undefined":r(a))&&a){if("function"==typeof MutationObserver)return o(MutationObserver);if("function"==typeof WebKitMutationObserver)return o(WebKitMutationObserver)}return"function"==typeof setImmediate?function(e){setImmediate(n(e))}:"function"==typeof setTimeout||"object"===("undefined"==typeof setTimeout?"undefined":r(setTimeout))?function(e){setTimeout(n(e),0)}:null}()})),mt=$((function(){"use strict";var e=Qe(),t=Dt(),n=Ce(),a=xe(),r=ft(),o=Array.prototype.slice,u=Function.prototype.apply,i=Object.create;me().async=function(l,s){var c,d,p,D=i(null),f=i(null),m=s.memoized,h=s.original;s.memoized=a((function(e){var t=arguments,n=t[t.length-1];return"function"==typeof n&&(c=n,t=o.call(t,0,-1)),m.apply(d=this,p=t)}),m);try{n(s.memoized,m)}catch(l){}s.on("get",(function(e){var t,n,a;c&&(D[e]?("function"==typeof D[e]?D[e]=[D[e],c]:D[e].push(c),c=null):(t=c,n=d,a=p,c=d=p=null,r((function(){var r;hasOwnProperty.call(f,e)?(r=f[e],s.emit("getasync",e,a,n),u.call(t,r.context,r.args)):(c=t,d=n,p=a,m.apply(n,a))}))))})),s.original=function(){var t,n,a,o;return c?(t=e(arguments),a=c,c=d=p=null,t.push(n=function t(n){var a,i,l=t.id;if(null==l)r(u.bind(t,this,arguments));else if(delete t.id,a=D[l],delete D[l],a)return i=e(arguments),s.has(l)&&(n?s.delete(l):(f[l]={context:this,args:i},s.emit("setasync",l,"function"==typeof a?1:a.length))),"function"==typeof a?o=u.call(a,this,i):a.forEach((function(e){o=u.call(e,this,i)}),this),o}),o=u.call(h,this,t),n.cb=a,c=n,o):u.call(h,this,arguments)},s.on("set",(function(e){c?(D[e]?"function"==typeof D[e]?D[e]=[D[e],c.cb]:D[e].push(c.cb):D[e]=c.cb,delete c.cb,c.id=e,c=null):s.delete(e)})),s.on("delete",(function(e){var t;hasOwnProperty.call(D,e)||f[e]&&(t=f[e],delete f[e],s.emit("deleteasync",e,o.call(t.args,1)))})),s.on("clear",(function(){var e=f;f=i(null),s.emit("clearasync",t(e,(function(e){return o.call(e.args,1)})))}))}})),ht=$((function(e,t){"use strict";var n=Array.prototype.forEach,a=Object.create;t.exports=function(e){var t=a(null);return n.call(arguments,(function(e){t[e]=!0})),t}})),gt=$((function(e,t){"use strict";t.exports=function(e){return"function"==typeof e}})),bt=$((function(e,t){"use strict";var n=gt();t.exports=function(e){try{return e&&n(e.toString)?e.toString():String(e)}catch(e){throw new TypeError("Passed argument cannot be stringifed")}}})),yt=$((function(e,t){"use strict";var n=pe(),a=bt();t.exports=function(e){return a(n(e))}})),vt=$((function(e,t){"use strict";var n=gt();t.exports=function(e){try{return e&&n(e.toString)?e.toString():String(e)}catch(e){return"<Non-coercible to string value>"}}})),Ft=$((function(e,t){"use strict";var n=vt(),a=/[\\n\\r\\u2028\\u2029]/g;t.exports=function(e){return(e=100<(e=n(e)).length?e.slice(0,99)+"…":e).replace(a,(function(e){return JSON.stringify(e).slice(1,-1)}))}})),wt=$((function(e,t){function n(e){return!!e&&("object"===r(e)||"function"==typeof e)&&"function"==typeof e.then}t.exports=n,t.exports.default=n})),Et=$((function(){"use strict";var e=Dt(),t=ht(),n=yt(),a=Ft(),r=wt(),o=ft(),u=Object.create,i=t("then","then:finally","done","done:finally");me().promise=function(t,l){var s=u(null),c=u(null),d=u(null);if(!0===t)t=null;else if(t=n(t),!i[t])throw new TypeError("\'"+a(t)+"\' is not valid promise mode");l.on("set",(function(e,n,a){var u=!1;if(r(a)){s[e]=1,d[e]=a;var i=function(t){var n=s[e];if(u)throw new Error("Memoizee error: Detected unordered then|done & finally resolution, which in turn makes proper detection of success/failure impossible (when in \'done:finally\' mode)\\nConsider to rely on \'then\' or \'done\' mode instead.");n&&(delete s[e],c[e]=t,l.emit("setasync",e,n))},p=function(){u=!0,s[e]&&(delete s[e],delete d[e],l.delete(e))},D=t;if("then"===(D=D||"then")){var f=function(){o(p)};"function"==typeof(a=a.then((function(e){o(i.bind(this,e))}),f)).finally&&a.finally(f)}else if("done"===D){if("function"!=typeof a.done)throw new Error("Memoizee error: Retrieved promise does not implement \'done\' in \'done\' mode");a.done(i,p)}else if("done:finally"===D){if("function"!=typeof a.done)throw new Error("Memoizee error: Retrieved promise does not implement \'done\' in \'done:finally\' mode");if("function"!=typeof a.finally)throw new Error("Memoizee error: Retrieved promise does not implement \'finally\' in \'done:finally\' mode");a.done(i),a.finally(p)}}else c[e]=a,l.emit("setasync",e,1)})),l.on("get",(function(e,t,n){var a,u;s[e]?++s[e]:(a=d[e],u=function(){l.emit("getasync",e,t,n)},r(a)?"function"==typeof a.done?a.done(u):a.then((function(){o(u)})):u())})),l.on("delete",(function(e){var t;delete d[e],s[e]?delete s[e]:hasOwnProperty.call(c,e)&&(t=c[e],delete c[e],l.emit("deleteasync",e,[t]))})),l.on("clear",(function(){var t=c;c=u(null),s=u(null),d=u(null),l.emit("clearasync",e(t,(function(e){return[e]})))}))}})),Ct=$((function(){"use strict";var e=de(),t=fe(),n=me(),a=Function.prototype.apply;n.dispose=function(r,o,u){var i;e(r),u.async&&n.async||u.promise&&n.promise?(o.on("deleteasync",i=function(e,t){a.call(r,null,t)}),o.on("clearasync",(function(e){t(e,(function(e,t){i(t,e)}))}))):(o.on("delete",i=function(e,t){r(t)}),o.on("clear",(function(e){t(e,(function(e,t){i(t,e)}))})))}})),xt=$((function(e,t){"use strict";t.exports=2147483647})),At=$((function(e,t){"use strict";var n=se(),a=xt();t.exports=function(e){if(e=n(e),a<e)throw new TypeError(e+" exceeds maximum possible timeout");return e}})),kt=$((function(){"use strict";var e=Qe(),t=fe(),n=ft(),a=wt(),r=At(),o=me(),u=Function.prototype,i=Math.max,l=Math.min,s=Object.create;o.maxAge=function(c,d,p){var D,f,m,h;(c=r(c))&&(D=s(null),f=p.async&&o.async||p.promise&&o.promise?"async":"",d.on("set"+f,(function(e){D[e]=setTimeout((function(){d.delete(e)}),c),"function"==typeof D[e].unref&&D[e].unref(),h&&(h[e]&&"nextTick"!==h[e]&&clearTimeout(h[e]),h[e]=setTimeout((function(){delete h[e]}),m),"function"==typeof h[e].unref)&&h[e].unref()})),d.on("delete"+f,(function(e){clearTimeout(D[e]),delete D[e],h&&("nextTick"!==h[e]&&clearTimeout(h[e]),delete h[e])})),p.preFetch&&(m=!0===p.preFetch||isNaN(p.preFetch)?.333:i(l(Number(p.preFetch),1),0))&&(h={},m=(1-m)*c,d.on("get"+f,(function(t,r,o){h[t]||(h[t]="nextTick",n((function(){var n;"nextTick"===h[t]&&(delete h[t],d.delete(t),p.async&&(r=e(r)).push(u),n=d.memoized.apply(o,r),p.promise)&&a(n)&&("function"==typeof n.done?n.done(u,u):n.then(u,u))})))}))),d.on("clear"+f,(function(){t(D,(function(e){clearTimeout(e)})),D={},h&&(t(h,(function(e){"nextTick"!==e&&clearTimeout(e)})),h={})})))}})),Bt=$((function(e,t){"use strict";var n=se(),a=Object.create,r=Object.prototype.hasOwnProperty;t.exports=function(e){var t,o=0,u=1,i=a(null),l=a(null),s=0;return e=n(e),{hit:function(n){var a=l[n],c=++s;if(i[c]=n,l[n]=c,!a)return++o<=e?void 0:(n=i[u],t(n),n);if(delete i[a],u===a)for(;!r.call(i,++u););},delete:t=function(e){var t=l[e];if(t&&(delete i[t],delete l[e],--o,u===t))if(o)for(;!r.call(i,++u););else s=0,u=1},clear:function(){o=0,u=1,i=a(null),l=a(null),s=0}}}})),Rt=$((function(){"use strict";var e=se(),t=Bt(),n=me();n.max=function(a,r,o){var u;(a=e(a))&&(u=t(a),a=o.async&&n.async||o.promise&&n.promise?"async":"",r.on("set"+a,o=function(e){void 0!==(e=u.hit(e))&&r.delete(e)}),r.on("get"+a,o),r.on("delete"+a,u.delete),r.on("clear"+a,u.clear))}})),Nt=$((function(){"use strict";var e=Se(),t=me(),n=Object.create,a=Object.defineProperties;t.refCounter=function(r,o,u){var i=n(null);u=u.async&&t.async||u.promise&&t.promise?"async":"";o.on("set"+u,(function(e,t){i[e]=t||1})),o.on("get"+u,(function(e){++i[e]})),o.on("delete"+u,(function(e){delete i[e]})),o.on("clear"+u,(function(){i={}})),a(o.memoized,{deleteRef:e((function(){var e=o.get(arguments);return null!==e&&i[e]?!--i[e]&&(o.delete(e),!0):null})),getRefCount:e((function(){var e=o.get(arguments);return null!==e&&i[e]||0}))})}})),Tt=$((function(e,t){"use strict";var n=re(),a=ce(),r=at();t.exports=function(e){var t,o=n(arguments[1]);return o.normalizer||0!==(t=o.length=a(o.length,e.length,o.async))&&(o.primitive?!1===t?o.normalizer=rt():1<t&&(o.normalizer=ot()(t)):o.normalizer=!1===t?ct()():1===t?dt()():pt()(t)),o.async&&mt(),o.promise&&Et(),o.dispose&&Ct(),o.maxAge&&kt(),o.max&&Rt(),o.refCounter&&Nt(),r(e,o)}})),Ot=$((function(e,a){!function(){"use strict";var e={name:"doT",version:"1.1.1",templateSettings:{evaluate:/\\{\\{([\\s\\S]+?(\\}?)+)\\}\\}/g,interpolate:/\\{\\{=([\\s\\S]+?)\\}\\}/g,encode:/\\{\\{!([\\s\\S]+?)\\}\\}/g,use:/\\{\\{#([\\s\\S]+?)\\}\\}/g,useParams:/(^|[^\\w$])def(?:\\.|\\[[\\\'\\"])([\\w$\\.]+)(?:[\\\'\\"]\\])?\\s*\\:\\s*([\\w$\\.]+|\\"[^\\"]+\\"|\\\'[^\\\']+\\\'|\\{[^\\}]+\\})/g,define:/\\{\\{##\\s*([\\w\\.$]+)\\s*(\\:|=)([\\s\\S]+?)#\\}\\}/g,defineParams:/^\\s*([\\w$]+):([\\s\\S]+)/,conditional:/\\{\\{\\?(\\?)?\\s*([\\s\\S]*?)\\s*\\}\\}/g,iterate:/\\{\\{~\\s*(?:\\}\\}|([\\s\\S]+?)\\s*\\:\\s*([\\w$]+)\\s*(?:\\:\\s*([\\w$]+))?\\s*\\}\\})/g,varname:"it",strip:!0,append:!0,selfcontained:!1,doNotSkipEncoded:!1},template:void 0,compile:void 0,log:!0};if("object"!==("undefined"==typeof globalThis?"undefined":r(globalThis)))try{Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__}catch(e){t.globalThis=function(){if("undefined"!=typeof self)return self;if(void 0!==t)return t;if(void 0!==n)return n;if(void 0!==this)return this;throw new Error("Unable to locate global `this`")}()}e.encodeHTMLSource=function(e){var t={"&":"&#38;","<":"&#60;",">":"&#62;",\'"\':"&#34;","\'":"&#39;","/":"&#47;"},n=e?/[&<>"\'\\/]/g:/&(?!#?\\w+;)|<|>|"|\'|\\//g;return function(e){return e?e.toString().replace(n,(function(e){return t[e]||e})):""}},void 0!==a&&a.exports?a.exports=e:"function"==typeof define&&define.amd?define((function(){return e})):globalThis.doT=e;var o={append:{start:"\'+(",end:")+\'",startencode:"\'+encodeHTML("},split:{start:"\';out+=(",end:");out+=\'",startencode:"\';out+=encodeHTML("}},u=/$^/;function i(e){return e.replace(/\\\\(\'|\\\\)/g,"$1").replace(/[\\r\\t\\n]/g," ")}e.template=function(t,n,a){var r,l,s=(n=n||e.templateSettings).append?o.append:o.split,c=0;a=n.use||n.define?function e(t,n,a){return("string"==typeof n?n:n.toString()).replace(t.define||u,(function(e,n,r,o){return(n=0===n.indexOf("def.")?n.substring(4):n)in a||(":"===r?(t.defineParams&&o.replace(t.defineParams,(function(e,t,r){a[n]={arg:t,text:r}})),n in a||(a[n]=o)):new Function("def","def[\'"+n+"\']="+o)(a)),""})).replace(t.use||u,(function(n,r){return t.useParams&&(r=r.replace(t.useParams,(function(e,t,n,r){var o;if(a[n]&&a[n].arg&&r)return o=(n+":"+r).replace(/\'|\\\\/g,"_"),a.__exp=a.__exp||{},a.__exp[o]=a[n].text.replace(new RegExp("(^|[^\\\\w$])"+a[n].arg+"([^\\\\w$])","g"),"$1"+r+"$2"),t+"def.__exp[\'"+o+"\']"}))),(r=new Function("def","return "+r)(a))&&e(t,r,a)}))}(n,t,a||{}):t,a=("var out=\'"+(n.strip?a.replace(/(^|\\r|\\n)\\t* +| +\\t*(\\r|\\n|$)/g," ").replace(/\\r|\\n|\\t|\\/\\*[\\s\\S]*?\\*\\//g,""):a).replace(/\'|\\\\/g,"\\\\$&").replace(n.interpolate||u,(function(e,t){return s.start+i(t)+s.end})).replace(n.encode||u,(function(e,t){return r=!0,s.startencode+i(t)+s.end})).replace(n.conditional||u,(function(e,t,n){return t?n?"\';}else if("+i(n)+"){out+=\'":"\';}else{out+=\'":n?"\';if("+i(n)+"){out+=\'":"\';}out+=\'"})).replace(n.iterate||u,(function(e,t,n,a){return t?(c+=1,l=a||"i"+c,t=i(t),"\';var arr"+c+"="+t+";if(arr"+c+"){var "+n+","+l+"=-1,l"+c+"=arr"+c+".length-1;while("+l+"<l"+c+"){"+n+"=arr"+c+"["+l+"+=1];out+=\'"):"\';} } out+=\'"})).replace(n.evaluate||u,(function(e,t){return"\';"+i(t)+"out+=\'"}))+"\';return out;").replace(/\\n/g,"\\\\n").replace(/\\t/g,"\\\\t").replace(/\\r/g,"\\\\r").replace(/(\\s|;|\\}|^|\\{)out\\+=\'\';/g,"$1").replace(/\\+\'\'/g,"");r&&(n.selfcontained||!globalThis||globalThis._encodeHTML||(globalThis._encodeHTML=e.encodeHTMLSource(n.doNotSkipEncoded)),a="var encodeHTML = typeof _encodeHTML !== \'undefined\' ? _encodeHTML : ("+e.encodeHTMLSource.toString()+"("+(n.doNotSkipEncoded||"")+"));"+a);try{return new Function(n.varname,a)}catch(t){throw"undefined"!=typeof console&&console.log("Could not create a template function: "+a),t}},e.compile=function(t,n){return e.template(t,null,n)}}()})),_t=$((function(e,o){var u;u=function(){"use strict";function e(e){return"function"==typeof e}var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},u=0,i=void 0,l=void 0,s=function(e,t){m[u]=e,m[u+1]=t,2===(u+=2)&&(l?l(h):v())},c=void 0!==t?t:void 0,d=(d=c||{}).MutationObserver||d.WebKitMutationObserver,p="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),D="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function f(){var e=setTimeout;return function(){return e(h,1)}}var m=new Array(1e3);function h(){for(var e=0;e<u;e+=2)(0,m[e])(m[e+1]),m[e]=void 0,m[e+1]=void 0;u=0}var g,b,y,v=void 0;function F(e,t){var n,a=this,r=new this.constructor(C),o=(void 0===r[E]&&I(r),a._state);return o?(n=arguments[o-1],s((function(){return _(o,r,n,a._result)}))):T(a,r,e,t),r}function w(e){var t;return e&&"object"===r(e)&&e.constructor===this?e:(k(t=new this(C),e),t)}v=p?function(){return process.nextTick(h)}:d?(b=0,p=new d(h),y=a.createTextNode(""),p.observe(y,{characterData:!0}),function(){y.data=b=++b%2}):D?((g=new MessageChannel).port1.onmessage=h,function(){return g.port2.postMessage(0)}):(void 0===c?function(){try{var e=Function("return this")().require("vertx");return void 0!==(i=e.runOnLoop||e.runOnContext)?function(){i(h)}:f()}catch(e){return f()}}:f)();var E=Math.random().toString(36).substring(2);function C(){}var x=void 0;function A(t,n,a){var r,o;n.constructor===t.constructor&&a===F&&n.constructor.resolve===w?(r=t,1===(o=n)._state?R(r,o._result):2===o._state?N(r,o._result):T(o,void 0,(function(e){return k(r,e)}),(function(e){return N(r,e)}))):void 0!==a&&e(a)?function(e,t,n){s((function(e){var a=!1,r=function(e,t,n,a){try{e.call(t,n,a)}catch(e){return e}}(n,t,(function(n){a||(a=!0,(t!==n?k:R)(e,n))}),(function(t){a||(a=!0,N(e,t))}),e._label);!a&&r&&(a=!0,N(e,r))}),e)}(t,n,a):R(t,n)}function k(e,t){if(e===t)N(e,new TypeError("You cannot resolve a promise with itself"));else if(a=r(n=t),null===n||"object"!==a&&"function"!==a)R(e,t);else{n=void 0;try{n=t.then}catch(t){return void N(e,t)}A(e,t,n)}var n,a}function B(e){e._onerror&&e._onerror(e._result),O(e)}function R(e,t){e._state===x&&(e._result=t,e._state=1,0!==e._subscribers.length)&&s(O,e)}function N(e,t){e._state===x&&(e._state=2,e._result=t,s(B,e))}function T(e,t,n,a){var r=e._subscribers,o=r.length;e._onerror=null,r[o]=t,r[o+1]=n,r[o+2]=a,0===o&&e._state&&s(O,e)}function O(e){var t=e._subscribers,n=e._state;if(0!==t.length){for(var a,r=void 0,o=e._result,u=0;u<t.length;u+=3)a=t[u],r=t[u+n],a?_(n,a,r,o):r(o);e._subscribers.length=0}}function _(t,n,a,r){var o=e(a),u=void 0,i=void 0,l=!0;if(o){try{u=a(r)}catch(t){l=!1,i=t}if(n===u)return void N(n,new TypeError("A promises callback cannot return that same promise."))}else u=r;n._state===x&&(o&&l?k(n,u):!1===l?N(n,i):1===t?R(n,u):2===t&&N(n,u))}var S=0;function I(e){e[E]=S++,e._state=void 0,e._result=void 0,e._subscribers=[]}M.prototype._enumerate=function(e){for(var t=0;this._state===x&&t<e.length;t++)this._eachEntry(e[t],t)},M.prototype._eachEntry=function(e,t){var n=this._instanceConstructor,a=n.resolve;if(a===w){var r,o=void 0,u=void 0,i=!1;try{o=e.then}catch(t){i=!0,u=t}o===F&&e._state!==x?this._settledAt(e._state,t,e._result):"function"!=typeof o?(this._remaining--,this._result[t]=e):n===L?(r=new n(C),i?N(r,u):A(r,e,o),this._willSettleAt(r,t)):this._willSettleAt(new n((function(t){return t(e)})),t)}else this._willSettleAt(a(e),t)},M.prototype._settledAt=function(e,t,n){var a=this.promise;a._state===x&&(this._remaining--,2===e?N(a,n):this._result[t]=n),0===this._remaining&&R(a,this._result)},M.prototype._willSettleAt=function(e,t){var n=this;T(e,void 0,(function(e){return n._settledAt(1,t,e)}),(function(e){return n._settledAt(2,t,e)}))};var P=M;function M(e,t){this._instanceConstructor=e,this.promise=new e(C),this.promise[E]||I(this.promise),o(t)?(this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0!==this.length&&(this.length=this.length||0,this._enumerate(t),0!==this._remaining)||R(this.promise,this._result)):N(this.promise,new Error("Array Methods must be provided an Array"))}j.prototype.catch=function(e){return this.then(null,e)},j.prototype.finally=function(t){var n=this.constructor;return e(t)?this.then((function(e){return n.resolve(t()).then((function(){return e}))}),(function(e){return n.resolve(t()).then((function(){throw e}))})):this.then(t,t)};var L=j;function j(e){if(this[E]=S++,this._result=this._state=void 0,this._subscribers=[],C!==e){if("function"!=typeof e)throw new TypeError("You must pass a resolver function as the first argument to the promise constructor");if(!(this instanceof j))throw new TypeError("Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.");var t=this;try{e((function(e){k(t,e)}),(function(e){N(t,e)}))}catch(e){N(t,e)}}}return L.prototype.then=F,L.all=function(e){return new P(this,e).promise},L.race=function(e){var t=this;return o(e)?new t((function(n,a){for(var r=e.length,o=0;o<r;o++)t.resolve(e[o]).then(n,a)})):new t((function(e,t){return t(new TypeError("You must pass an array to race."))}))},L.resolve=w,L.reject=function(e){var t=new this(C);return N(t,e),t},L._setScheduler=function(e){l=e},L._setAsap=function(e){s=e},L._asap=s,L.polyfill=function(){var e=void 0;if(void 0!==n)e=n;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var t=e.Promise;if(t){var a=null;try{a=Object.prototype.toString.call(t.resolve())}catch(e){}if("[object Promise]"===a&&!t.cast)return}e.Promise=L},L.Promise=L},"object"===r(e=e)&&void 0!==o?o.exports=u():"function"==typeof define&&define.amd?define(u):e.ES6Promise=u()})),St=$((function(e){var t,n,a=(t=Object.prototype.toString,n=Object.prototype.hasOwnProperty,{Class:function(e){return t.call(e).replace(/^\\[object *|\\]$/g,"")},HasProperty:function(e,t){return t in e},HasOwnProperty:function(e,t){return n.call(e,t)},IsCallable:function(e){return"function"==typeof e},ToInt32:function(e){return e>>0},ToUint32:function(e){return e>>>0}}),o=Math.LN2,u=Math.abs,i=Math.floor,l=Math.log,s=Math.min,c=Math.pow,d=Math.round;function p(e,t,n){return e<t?t:n<e?n:e}var D,f,m,h,g,b,y,v,F,w,E,C=Object.getOwnPropertyNames||function(e){if(e!==Object(e))throw new TypeError("Object.getOwnPropertyNames called on non-object");var t,n=[];for(t in e)a.HasOwnProperty(e,t)&&n.push(t);return n};function x(e){if(C&&D)for(var t=C(e),n=0;n<t.length;n+=1)D(e,t[n],{value:e[t[n]],writable:!1,enumerable:!1,configurable:!1})}function A(e){if(D){if(e.length>1e5)throw new RangeError("Array too large for polyfill");for(var t=0;t<e.length;t+=1)!function(t){D(e,t,{get:function(){return e._getter(t)},set:function(n){e._setter(t,n)},enumerable:!0,configurable:!1})}(t)}}function k(e,t){return e<<(t=32-t)>>t}function B(e,t){return e<<(t=32-t)>>>t}function R(e){return B(e[0],8)}function N(e,t,n){var a,r,d,p,D,f,m,h=(1<<t-1)-1;function g(e){var t=i(e);return(e=e-t)<.5||!(.5<e||t%2)?t:t+1}for(e!=e?(r=(1<<t)-1,d=c(2,n-1),a=0):e===1/0||e===-1/0?(r=(1<<t)-1,a=e<(d=0)?1:0):0===e?a=1/e==-1/(d=r=0)?1:0:(a=e<0,(e=u(e))>=c(2,1-h)?(r=s(i(l(e)/o),1023),2<=(d=g(e/c(2,r)*c(2,n)))/c(2,n)&&(r+=1,d=1),h<r?(r=(1<<t)-1,d=0):(r+=h,d-=c(2,n))):(r=0,d=g(e/c(2,1-h-n)))),D=[],p=n;p;--p)D.push(d%2?1:0),d=i(d/2);for(p=t;p;--p)D.push(r%2?1:0),r=i(r/2);for(D.push(a?1:0),D.reverse(),f=D.join(""),m=[];f.length;)m.push(parseInt(f.substring(0,8),2)),f=f.substring(8);return m}function T(e,t,n){for(var a,r,o,u,i,l,s=[],d=e.length;d;--d)for(r=e[d-1],a=8;a;--a)s.push(r%2?1:0),r>>=1;return s.reverse(),l=s.join(""),o=(1<<t-1)-1,u=parseInt(l.substring(0,1),2)?-1:1,i=parseInt(l.substring(1,1+t),2),l=parseInt(l.substring(1+t),2),i===(1<<t)-1?0===l?1/0*u:NaN:0<i?u*c(2,i-o)*(1+l/c(2,n)):0!==l?u*c(2,-(o-1))*(l/c(2,n)):u<0?-0:0}function O(e){if((e=a.ToInt32(e))<0)throw new RangeError("ArrayBuffer size is not a small enough positive integer");var t;for(this.byteLength=e,this._bytes=[],this._bytes.length=e,t=0;t<this.byteLength;t+=1)this._bytes[t]=0;x(this)}function _(){}function S(e,t,n){var o=function(e,t,n){var u,i,l,s;if(arguments.length&&"number"!=typeof e)if("object"===r(e)&&e.constructor===o)for(this.length=(u=e).length,this.byteLength=this.length*this.BYTES_PER_ELEMENT,this.buffer=new O(this.byteLength),l=this.byteOffset=0;l<this.length;l+=1)this._setter(l,u._getter(l));else if("object"!==r(e)||e instanceof O||"ArrayBuffer"===a.Class(e)){if("object"!==r(e)||!(e instanceof O||"ArrayBuffer"===a.Class(e)))throw new TypeError("Unexpected argument type(s)");if(this.buffer=e,this.byteOffset=a.ToUint32(t),this.byteOffset>this.buffer.byteLength)throw new RangeError("byteOffset out of range");if(this.byteOffset%this.BYTES_PER_ELEMENT)throw new RangeError("ArrayBuffer length minus the byteOffset is not a multiple of the element size.");if(arguments.length<3){if(this.byteLength=this.buffer.byteLength-this.byteOffset,this.byteLength%this.BYTES_PER_ELEMENT)throw new RangeError("length of buffer minus byteOffset not a multiple of the element size");this.length=this.byteLength/this.BYTES_PER_ELEMENT}else this.length=a.ToUint32(n),this.byteLength=this.length*this.BYTES_PER_ELEMENT;if(this.byteOffset+this.byteLength>this.buffer.byteLength)throw new RangeError("byteOffset and length reference an area beyond the end of the buffer")}else for(this.length=a.ToUint32((i=e).length),this.byteLength=this.length*this.BYTES_PER_ELEMENT,this.buffer=new O(this.byteLength),l=this.byteOffset=0;l<this.length;l+=1)s=i[l],this._setter(l,Number(s));else{if(this.length=a.ToInt32(e),n<0)throw new RangeError("ArrayBufferView size is not a small enough positive integer");this.byteLength=this.length*this.BYTES_PER_ELEMENT,this.buffer=new O(this.byteLength),this.byteOffset=0}this.constructor=o,x(this),A(this)};return(o.prototype=new _).BYTES_PER_ELEMENT=e,o.prototype._pack=t,o.prototype._unpack=n,o.BYTES_PER_ELEMENT=e,o.prototype.get=o.prototype._getter=function(e){if(arguments.length<1)throw new SyntaxError("Not enough arguments");if(!((e=a.ToUint32(e))>=this.length)){for(var t=[],n=0,r=this.byteOffset+e*this.BYTES_PER_ELEMENT;n<this.BYTES_PER_ELEMENT;n+=1,r+=1)t.push(this.buffer._bytes[r]);return this._unpack(t)}},o.prototype._setter=function(e,t){if(arguments.length<2)throw new SyntaxError("Not enough arguments");if((e=a.ToUint32(e))<this.length)for(var n=this._pack(t),r=0,o=this.byteOffset+e*this.BYTES_PER_ELEMENT;r<this.BYTES_PER_ELEMENT;r+=1,o+=1)this.buffer._bytes[o]=n[r]},o.prototype.set=function(e,t){if(arguments.length<1)throw new SyntaxError("Not enough arguments");var n,o,u,i,l,s,c,d,p,D;if("object"===r(e)&&e.constructor===this.constructor){if(n=e,(u=a.ToUint32(t))+n.length>this.length)throw new RangeError("Offset plus length of array is out of range");if(d=this.byteOffset+u*this.BYTES_PER_ELEMENT,p=n.length*this.BYTES_PER_ELEMENT,n.buffer===this.buffer){for(D=[],l=0,s=n.byteOffset;l<p;l+=1,s+=1)D[l]=n.buffer._bytes[s];for(l=0,c=d;l<p;l+=1,c+=1)this.buffer._bytes[c]=D[l]}else for(l=0,s=n.byteOffset,c=d;l<p;l+=1,s+=1,c+=1)this.buffer._bytes[c]=n.buffer._bytes[s]}else{if("object"!==r(e)||void 0===e.length)throw new TypeError("Unexpected argument type(s)");if(i=a.ToUint32((o=e).length),(u=a.ToUint32(t))+i>this.length)throw new RangeError("Offset plus length of array is out of range");for(l=0;l<i;l+=1)s=o[l],this._setter(u+l,Number(s))}},o.prototype.subarray=function(e,t){e=a.ToInt32(e),t=a.ToInt32(t),arguments.length<1&&(e=0),arguments.length<2&&(t=this.length),e<0&&(e=this.length+e),t<0&&(t=this.length+t),e=p(e,0,this.length);var n=(t=p(t,0,this.length))-e;return new this.constructor(this.buffer,this.byteOffset+e*this.BYTES_PER_ELEMENT,n=n<0?0:n)},o}function I(e,t){return a.IsCallable(e.get)?e.get(t):e[t]}function P(t,n,r){if(0===arguments.length)t=new e.ArrayBuffer(0);else if(!(t instanceof e.ArrayBuffer||"ArrayBuffer"===a.Class(t)))throw new TypeError("TypeError");if(this.buffer=t||new e.ArrayBuffer(0),this.byteOffset=a.ToUint32(n),this.byteOffset>this.buffer.byteLength)throw new RangeError("byteOffset out of range");if(this.byteLength=arguments.length<3?this.buffer.byteLength-this.byteOffset:a.ToUint32(r),this.byteOffset+this.byteLength>this.buffer.byteLength)throw new RangeError("byteOffset and length reference an area beyond the end of the buffer");x(this)}function M(t){return function(n,r){if((n=a.ToUint32(n))+t.BYTES_PER_ELEMENT>this.byteLength)throw new RangeError("Array index out of range");n+=this.byteOffset;for(var o=new e.Uint8Array(this.buffer,n,t.BYTES_PER_ELEMENT),u=[],i=0;i<t.BYTES_PER_ELEMENT;i+=1)u.push(I(o,i));return Boolean(r)===Boolean(E)&&u.reverse(),I(new t(new e.Uint8Array(u).buffer),0)}}function L(t){return function(n,r,o){if((n=a.ToUint32(n))+t.BYTES_PER_ELEMENT>this.byteLength)throw new RangeError("Array index out of range");r=new t([r]);for(var u=new e.Uint8Array(r.buffer),i=[],l=0;l<t.BYTES_PER_ELEMENT;l+=1)i.push(I(u,l));Boolean(o)===Boolean(E)&&i.reverse(),new e.Uint8Array(this.buffer,n,t.BYTES_PER_ELEMENT).set(i)}}D=Object.defineProperty&&function(){try{return Object.defineProperty({},"x",{}),1}catch(e){}}()?Object.defineProperty:function(e,t,n){if(!e===Object(e))throw new TypeError("Object.defineProperty called on non-object");return a.HasProperty(n,"get")&&Object.prototype.__defineGetter__&&Object.prototype.__defineGetter__.call(e,t,n.get),a.HasProperty(n,"set")&&Object.prototype.__defineSetter__&&Object.prototype.__defineSetter__.call(e,t,n.set),a.HasProperty(n,"value")&&(e[t]=n.value),e},e.ArrayBuffer=e.ArrayBuffer||O,w=S(1,(function(e){return[255&e]}),(function(e){return k(e[0],8)})),f=S(1,(function(e){return[255&e]}),R),m=S(1,(function(e){return[(e=d(Number(e)))<0?0:255<e?255:255&e]}),R),h=S(2,(function(e){return[e>>8&255,255&e]}),(function(e){return k(e[0]<<8|e[1],16)})),g=S(2,(function(e){return[e>>8&255,255&e]}),(function(e){return B(e[0]<<8|e[1],16)})),b=S(4,(function(e){return[e>>24&255,e>>16&255,e>>8&255,255&e]}),(function(e){return k(e[0]<<24|e[1]<<16|e[2]<<8|e[3],32)})),y=S(4,(function(e){return[e>>24&255,e>>16&255,e>>8&255,255&e]}),(function(e){return B(e[0]<<24|e[1]<<16|e[2]<<8|e[3],32)})),v=S(4,(function(e){return N(e,8,23)}),(function(e){return T(e,8,23)})),F=S(8,(function(e){return N(e,11,52)}),(function(e){return T(e,11,52)})),e.Int8Array=e.Int8Array||w,e.Uint8Array=e.Uint8Array||f,e.Uint8ClampedArray=e.Uint8ClampedArray||m,e.Int16Array=e.Int16Array||h,e.Uint16Array=e.Uint16Array||g,e.Int32Array=e.Int32Array||b,e.Uint32Array=e.Uint32Array||y,e.Float32Array=e.Float32Array||v,e.Float64Array=e.Float64Array||F,w=new e.Uint16Array([4660]),E=18===I(new e.Uint8Array(w.buffer),0),P.prototype.getUint8=M(e.Uint8Array),P.prototype.getInt8=M(e.Int8Array),P.prototype.getUint16=M(e.Uint16Array),P.prototype.getInt16=M(e.Int16Array),P.prototype.getUint32=M(e.Uint32Array),P.prototype.getInt32=M(e.Int32Array),P.prototype.getFloat32=M(e.Float32Array),P.prototype.getFloat64=M(e.Float64Array),P.prototype.setUint8=L(e.Uint8Array),P.prototype.setInt8=L(e.Int8Array),P.prototype.setUint16=L(e.Uint16Array),P.prototype.setInt16=L(e.Int16Array),P.prototype.setUint32=L(e.Uint32Array),P.prototype.setInt32=L(e.Int32Array),P.prototype.setFloat32=L(e.Float32Array),P.prototype.setFloat64=L(e.Float64Array),e.DataView=e.DataView||P})),It=$((function(e){!function(e){"use strict";var t,n,a;function o(){if(void 0===this)throw new TypeError("Constructor WeakMap requires \'new\'");if(a(this,"_id","_WeakMap_"+i()+"."+i()),0<arguments.length)throw new TypeError("WeakMap iterable is not supported")}function u(e,n){if(!l(e)||!t.call(e,"_id"))throw new TypeError(n+" method called on incompatible receiver "+r(e))}function i(){return Math.random().toString().substring(2)}function l(e){return Object(e)===e}e.WeakMap||(t=Object.prototype.hasOwnProperty,n=Object.defineProperty&&function(){try{return 1===Object.defineProperty({},"x",{value:1}).x}catch(e){}}(),e.WeakMap=((a=function(e,t,a){n?Object.defineProperty(e,t,{configurable:!0,writable:!0,value:a}):e[t]=a})(o.prototype,"delete",(function(e){var t;return u(this,"delete"),!!l(e)&&!(!(t=e[this._id])||t[0]!==e||(delete e[this._id],0))})),a(o.prototype,"get",(function(e){var t;return u(this,"get"),l(e)&&(t=e[this._id])&&t[0]===e?t[1]:void 0})),a(o.prototype,"has",(function(e){var t;return u(this,"has"),!!l(e)&&!(!(t=e[this._id])||t[0]!==e)})),a(o.prototype,"set",(function(e,t){var n;if(u(this,"set"),l(e))return(n=e[this._id])&&n[0]===e?n[1]=t:a(e,this._id,[e,t]),this;throw new TypeError("Invalid value used as weak map key")})),a(o,"_polyfill",!0),o))}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:void 0!==t?t:void 0!==n?n:e)})),Pt={helpUrlBase:"https://dequeuniversity.com/rules/",gridSize:200,results:[],resultGroups:[],resultGroupMap:{},impact:Object.freeze(["minor","moderate","serious","critical"]),preload:Object.freeze({assets:["cssom","media"],timeout:1e4}),allOrigins:"<unsafe_all_origins>",sameOrigin:"<same_origin>"},Mt=([{name:"NA",value:"inapplicable",priority:0,group:"inapplicable"},{name:"PASS",value:"passed",priority:1,group:"passes"},{name:"CANTTELL",value:"cantTell",priority:2,group:"incomplete"},{name:"FAIL",value:"failed",priority:3,group:"violations"}].forEach((function(e){var t=e.name,n=e.value,a=e.priority;e=e.group;Pt[t]=n,Pt[t+"_PRIO"]=a,Pt[t+"_GROUP"]=e,Pt.results[a]=n,Pt.resultGroups[a]=e,Pt.resultGroupMap[n]=e})),Object.freeze(Pt.results),Object.freeze(Pt.resultGroups),Object.freeze(Pt.resultGroupMap),Object.freeze(Pt),Pt),Lt=function(){"object"===("undefined"==typeof console?"undefined":r(console))&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},jt=/[\\t\\r\\n\\f]/g;function qt(){P(this,qt),this.parent=void 0}L(qt,[{key:"props",get:function(){throw new Error(\'VirtualNode class must have a "props" object consisting of "nodeType" and "nodeName" properties\')}},{key:"attrNames",get:function(){throw new Error(\'VirtualNode class must have an "attrNames" property\')}},{key:"attr",value:function(){throw new Error(\'VirtualNode class must have an "attr" function\')}},{key:"hasAttr",value:function(){throw new Error(\'VirtualNode class must have a "hasAttr" function\')}},{key:"hasClass",value:function(e){var t=this.attr("class");return!!t&&(e=" "+e+" ",0<=(" "+t+" ").replace(jt," ").indexOf(e))}}]);var Vt=qt,zt={},$t=(U(zt,{DqElement:function(){return _n},aggregate:function(){return $t},aggregateChecks:function(){return Yt},aggregateNodeResults:function(){return Xt},aggregateResult:function(){return Zt},areStylesSet:function(){return en},assert:function(){return tn},checkHelper:function(){return Sn},clone:function(){return In},closest:function(){return Hn},collectResultsFromFrames:function(){return Pa},contains:function(){return Ma},convertSelector:function(){return zn},cssParser:function(){return Pn},deepMerge:function(){return La},escapeSelector:function(){return an},extendMetaData:function(){return ja},filterHtmlAttrs:function(){return Yl},finalizeRuleResult:function(){return Jt},findBy:function(){return _a},getAllChecks:function(){return Oa},getAncestry:function(){return kn},getBaseLang:function(){return Li},getCheckMessage:function(){return Gi},getCheckOption:function(){return Wi},getEnvironmentData:function(){return Ki},getFlattenedTree:function(){return Mi},getFrameContexts:function(){return ul},getFriendlyUriEnd:function(){return sn},getNodeAttributes:function(){return cn},getNodeFromTree:function(){return Tn},getPreloadConfig:function(){return zl},getRootNode:function(){return $a},getRule:function(){return il},getScroll:function(){return ll},getScrollState:function(){return cl},getSelector:function(){return xn},getSelectorData:function(){return Fn},getShadowSelector:function(){return Dn},getStandards:function(){return dl},getStyleSheetFactory:function(){return Dl},getXpath:function(){return Bn},injectStyle:function(){return fl},isHidden:function(){return ml},isHtmlElement:function(){return hl},isNodeInContext:function(){return gl},isShadowRoot:function(){return Va},isValidLang:function(){return os},isXHTML:function(){return pn},matchAncestry:function(){return Fl},matches:function(){return Un},matchesExpression:function(){return $n},matchesSelector:function(){return dn},memoize:function(){return Ya},mergeResults:function(){return Ia},nodeSorter:function(){return wl},parseCrossOriginStylesheet:function(){return xl},parseSameOriginStylesheet:function(){return El},parseStylesheet:function(){return Cl},performanceTimer:function(){return Rl},pollyfillElementsFromPoint:function(){return Nl},preload:function(){return $l},preloadCssom:function(){return Ml},preloadMedia:function(){return ql},processMessage:function(){return Hi},publishMetaData:function(){return Hl},querySelectorAll:function(){return Gl},querySelectorAllFilter:function(){return Pl},queue:function(){return Xn},respondable:function(){return ka},ruleShouldRun:function(){return Kl},select:function(){return Xl},sendCommandToFrame:function(){return Ra},setScrollState:function(){return Ql},shadowSelect:function(){return Zl},shadowSelectAll:function(){return es},shouldPreload:function(){return Vl},toArray:function(){return nn},tokenList:function(){return Bi},uniqueArray:function(){return _l},uuid:function(){return ca},validInputTypes:function(){return ts},validLangs:function(){return as}}),function(e,t,n){return t=t.slice(),n&&t.push(n),n=t.map((function(t){return e.indexOf(t)})).sort(),e[n.pop()]}),Ut=Mt.CANTTELL_PRIO,Ht=Mt.FAIL_PRIO,Gt=[],Wt=(Gt[Mt.PASS_PRIO]=!0,Gt[Mt.CANTTELL_PRIO]=null,Gt[Mt.FAIL_PRIO]=!1,["any","all","none"]);function Kt(e,t){Wt.reduce((function(n,a){return n[a]=(e[a]||[]).map((function(e){return t(e,a)})),n}),{})}var Yt=function(e){var t=Object.assign({},e),n=(Kt(t,(function(e,t){var n=void 0===e.result?-1:Gt.indexOf(e.result);e.priority=-1!==n?n:Mt.CANTTELL_PRIO,"none"===t&&(e.priority===Mt.PASS_PRIO?e.priority=Mt.FAIL_PRIO:e.priority===Mt.FAIL_PRIO&&(e.priority=Mt.PASS_PRIO))})),{all:t.all.reduce((function(e,t){return Math.max(e,t.priority)}),0),none:t.none.reduce((function(e,t){return Math.max(e,t.priority)}),0),any:t.any.reduce((function(e,t){return Math.min(e,t.priority)}),4)%4}),a=(t.priority=Math.max(n.all,n.none,n.any),[]);return Wt.forEach((function(e){t[e]=t[e].filter((function(a){return a.priority===t.priority&&a.priority===n[e]})),t[e].forEach((function(e){return a.push(e.impact)}))})),[Ut,Ht].includes(t.priority)?t.impact=$t(Mt.impact,a):t.impact=null,Kt(t,(function(e){delete e.result,delete e.priority})),t.result=Mt.results[t.priority],delete t.priority,t},Jt=function(e){var t=o._audit.rules.find((function(t){return t.id===e.id}));return t&&t.impact&&e.nodes.forEach((function(e){["any","all","none"].forEach((function(n){(e[n]||[]).forEach((function(e){e.impact=t.impact}))}))})),Object.assign(e,Xt(e.nodes)),delete e.nodes,e},Xt=function(e){var t={},n=((e=e.map((function(e){if(e.any&&e.all&&e.none)return Yt(e);if(Array.isArray(e.node))return Jt(e);throw new TypeError("Invalid Result type")})))&&e.length?(n=e.map((function(e){return e.result})),t.result=$t(Mt.results,n,t.result)):t.result="inapplicable",Mt.resultGroups.forEach((function(e){return t[e]=[]})),e.forEach((function(e){var n=Mt.resultGroupMap[e.result];t[n].push(e)})),Mt.FAIL_GROUP);return 0===t[n].length&&(n=Mt.CANTTELL_GROUP),0<t[n].length?(e=t[n].map((function(e){return e.impact})),t.impact=$t(Mt.impact,e)||null):t.impact=null,t};function Qt(e,t,n){var a=Object.assign({},t);a.nodes=(a[n]||[]).concat(),Mt.resultGroups.forEach((function(e){delete a[e]})),e[n].push(a)}var Zt=function(e){var t={};return Mt.resultGroups.forEach((function(e){return t[e]=[]})),e.forEach((function(e){e.error?Qt(t,e,Mt.CANTTELL_GROUP):e.result===Mt.NA?Qt(t,e,Mt.NA_GROUP):Mt.resultGroups.forEach((function(n){Array.isArray(e[n])&&0<e[n].length&&Qt(t,e,n)}))})),t},en=function e(n,a,r){var o=t.getComputedStyle(n,null);if(!o)return!1;for(var u=0;u<a.length;++u){var i=a[u];if(o.getPropertyValue(i.property)===i.value)return!0}return!(!n.parentNode||n.nodeName.toUpperCase()===r.toUpperCase())&&e(n.parentNode,a,r)},tn=function(e,t){if(!e)throw new Error(t)},nn=function(e){return Array.prototype.slice.call(e)},an=function(e){for(var t,n=String(e),a=n.length,r=-1,o="",u=n.charCodeAt(0);++r<a;)0==(t=n.charCodeAt(r))?o+="�":o+=1<=t&&t<=31||127==t||0==r&&48<=t&&t<=57||1==r&&48<=t&&t<=57&&45==u?"\\\\"+t.toString(16)+" ":0==r&&1==a&&45==t||!(128<=t||45==t||95==t||48<=t&&t<=57||65<=t&&t<=90||97<=t&&t<=122)?"\\\\"+n.charAt(r):n.charAt(r);return o};function rn(e,t){return[e.substring(0,t),e.substring(t)]}function on(e){return e.replace(/\\s+$/,"")}var un,ln,sn=function(){var e,t,n,a,r,o,u,i,l=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"",s=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};if(!(l.length<=1||"data:"===l.substr(0,5)||"javascript:"===l.substr(0,11)||l.includes("?")))return e=s.currentDomain,s=void 0===(s=s.maxLength)?25:s,u=o=i=r=a="",(n=l=l).includes("#")&&(l=(t=_(rn(l,l.indexOf("#")),2))[0],u=t[1]),l.includes("?")&&(l=(t=_(rn(l,l.indexOf("?")),2))[0],o=t[1]),l.includes("://")?(a=(t=_(l.split("://"),2))[0],r=(t=_(rn(l=t[1],l.indexOf("/")),2))[0],l=t[1]):"//"===l.substr(0,2)&&(r=(t=_(rn(l=l.substr(2),l.indexOf("/")),2))[0],l=t[1]),(r="www."===r.substr(0,4)?r.substr(4):r)&&r.includes(":")&&(r=(t=_(rn(r,r.indexOf(":")),2))[0],i=t[1]),n=(t={original:n,protocol:a,domain:r,port:i,path:l,query:o,hash:u}).domain,a=t.hash,i=(r=t.path).substr(r.substr(0,r.length-2).lastIndexOf("/")+1),a?i&&(i+a).length<=s?on(i+a):i.length<2&&2<a.length&&a.length<=s?on(a):void 0:n&&n.length<s&&r.length<=1||r==="/"+i&&n&&e&&n!==e&&(n+r).length<=s?on(n+r):(-1===(l=i.lastIndexOf("."))||1<l)&&(-1!==l||2<i.length)&&i.length<=s&&!i.match(/index(\\.[a-zA-Z]{2-4})?/)&&!function(e){var t=0<arguments.length&&void 0!==e?e:"";return 0!==t.length&&(t.match(/[0-9]/g)||"").length>=t.length/2}(i)?on(i):void 0},cn=function(e){return(e.attributes instanceof t.NamedNodeMap?e:e.cloneNode(!1)).attributes},dn=function(e,t){return!!e[un=un&&e[un]?un:function(e){for(var t,n=["matches","matchesSelector","mozMatchesSelector","webkitMatchesSelector","msMatchesSelector"],a=n.length,r=0;r<a;r++)if(e[t=n[r]])return t}(e)]&&e[un](t)},pn=function(e){return!!e.createElement&&"A"===e.createElement("A").localName},Dn=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};if(!t)return"";var r=t.getRootNode&&t.getRootNode()||a;if(11!==r.nodeType)return e(t,n,r);for(var o=[];11===r.nodeType;){if(!r.host)return"";o.unshift({elm:t,doc:r}),r=(t=r.host).getRootNode()}return o.unshift({elm:t,doc:r}),o.map((function(t){var a=t.elm;t=t.doc;return e(a,n,t)}))},fn=["class","style","id","selected","checked","disabled","tabindex","aria-checked","aria-selected","aria-invalid","aria-activedescendant","aria-busy","aria-disabled","aria-expanded","aria-grabbed","aria-pressed","aria-valuenow"],mn=/([\\\\"])/g,hn=/(\\r\\n|\\r|\\n)/g;function gn(e){return e.replace(mn,"\\\\$1").replace(hn,"\\\\a ")}function bn(e,t){var n,a=t.name;return-1!==a.indexOf("href")||-1!==a.indexOf("src")?(n=sn(e.getAttribute(a)))?an(t.name)+\'$="\'+gn(n)+\'"\':an(t.name)+\'="\'+gn(e.getAttribute(a))+\'"\':an(a)+\'="\'+gn(t.value)+\'"\'}function yn(e,t){return e.count<t.count?-1:e.count===t.count?0:1}function vn(e){return!fn.includes(e.name)&&-1===e.name.indexOf(":")&&(!e.value||e.value.length<31)}function Fn(e){for(var t={classes:{},tags:{},attributes:{}},n=(e=Array.isArray(e)?e:[e]).slice(),a=[];n.length;)!function(){var e,r=n.pop(),o=r.actualNode;for(o.querySelectorAll&&(e=o.nodeName,t.tags[e]?t.tags[e]++:t.tags[e]=1,o.classList&&Array.from(o.classList).forEach((function(e){e=an(e),t.classes[e]?t.classes[e]++:t.classes[e]=1})),o.hasAttributes())&&Array.from(cn(o)).filter(vn).forEach((function(e){(e=bn(o,e))&&(t.attributes[e]?t.attributes[e]++:t.attributes[e]=1)})),r.children.length&&(a.push(n),n=r.children.slice());!n.length&&a.length;)n=a.pop()}();return t}function wn(e){return void 0===ln&&(ln=pn(a)),an(ln?e.localName:e.nodeName.toLowerCase())}function En(e,t){var n,a,r,o,u,i,l,s,c,d="",p=(a=e,r=[],o=t.classes,u=t.tags,a.classList&&Array.from(a.classList).forEach((function(e){e=an(e),o[e]<u[a.nodeName]&&r.push({name:e,count:o[e],species:"class"})})),r.sort(yn));i=e,l=[],s=t.attributes,c=t.tags,i.hasAttributes()&&Array.from(cn(i)).filter(vn).forEach((function(e){(e=bn(i,e))&&s[e]<c[i.nodeName]&&l.push({name:e,count:s[e],species:"attribute"})})),t=l.sort(yn);return p.length&&1===p[0].count?n=[p[0]]:t.length&&1===t[0].count?(n=[t[0]],d=wn(e)):((n=p.concat(t)).sort(yn),(n=n.slice(0,3)).some((function(e){return"class"===e.species}))?n.sort((function(e,t){return e.species!==t.species&&"class"===e.species?-1:e.species===t.species?0:1})):d=wn(e)),d+n.reduce((function(e,t){switch(t.species){case"class":return e+"."+t.name;case"attribute":return e+"["+t.name+"]"}return e}),"")}function Cn(e,t,n){if(!o._selectorData)throw new Error("Expect axe._selectorData to be set up");var r,u,i=void 0!==(t=t.toRoot)&&t;do{var l=function(e){var t;if(e.getAttribute("id"))return t=e.getRootNode&&e.getRootNode()||a,(e="#"+an(e.getAttribute("id")||"")).match(/player_uid_/)||1!==t.querySelectorAll(e).length?void 0:e}(e);l||(l=En(e,o._selectorData),l+=function(e,t){var n=e.parentNode&&Array.from(e.parentNode.children||"")||[];return n.find((function(n){return n!==e&&dn(n,t)}))?":nth-child("+(1+n.indexOf(e))+")":""}(e,l)),r=r?l+" > "+r:l,u=u?u.filter((function(e){return dn(e,r)})):Array.from(n.querySelectorAll(r)),e=e.parentElement}while((1<u.length||i)&&e&&11!==e.nodeType);return 1===u.length?r:-1!==r.indexOf(" > ")?":root"+r.substring(r.indexOf(" > ")):":root"}function xn(e,t){return Dn(Cn,e,t)}function An(e){var t,n=e.nodeName.toLowerCase(),a=e.parentElement;return a?(t="","head"!==n&&"body"!==n&&1<a.children.length&&(e=Array.prototype.indexOf.call(a.children,e)+1,t=":nth-child(".concat(e,")")),An(a)+" > "+n+t):n}function kn(e,t){return Dn(An,e,t)}var Bn=function(e){return function e(t,n){var a,r,o,u;if(!t)return[];if(!n&&9===t.nodeType)return[{str:"html"}];if(n=n||[],t.parentNode&&t.parentNode!==t&&(n=e(t.parentNode,n)),t.previousSibling){for(r=1,a=t.previousSibling;1===a.nodeType&&a.nodeName===t.nodeName&&r++,a=a.previousSibling;);1===r&&(r=null)}else if(t.nextSibling)for(a=t.nextSibling;a=1===a.nodeType&&a.nodeName===t.nodeName?(r=1,null):(r=null,a.previousSibling););return 1===t.nodeType&&((o={}).str=t.nodeName.toLowerCase(),(u=t.getAttribute&&an(t.getAttribute("id")))&&1===t.ownerDocument.querySelectorAll("#"+u).length&&(o.id=t.getAttribute("id")),1<r&&(o.count=r),n.push(o)),n}(e).reduce((function(e,t){return t.id?"/".concat(t.str,"[@id=\'").concat(t.id,"\']"):e+"/".concat(t.str)+(0<t.count?"[".concat(t.count,"]"):"")}),"")},Rn={},Nn={set:function(e,t){var n;tn("string"==typeof(n=e),"key must be a string, "+r(n)+" given"),tn(""!==n,"key must not be empty"),Rn[e]=t},get:function(e,t){var n;return tn("function"==typeof(n=t)||void 0===n,"creator must be a function or undefined, "+r(n)+" given"),e in Rn?Rn[e]:"function"==typeof t?(n=t(),tn(void 0!==n,"Cache creator function should not return undefined"),this.set(e,n),Rn[e]):void 0},clear:function(){Rn={}}},Tn=function(e,t){return t=t||e,Nn.get("nodeMap")?Nn.get("nodeMap").get(t):null};function On(e){var n,a,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};this.spec=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},e instanceof Vt?(this._virtualNode=e,this._element=e.actualNode):(this._element=e,this._virtualNode=Tn(e)),this.fromFrame=1<(null==(n=this.spec.selector)?void 0:n.length),r.absolutePaths&&(this._options={toRoot:!0}),this.nodeIndexes=[],Array.isArray(this.spec.nodeIndexes)?this.nodeIndexes=this.spec.nodeIndexes:"number"==typeof(null==(n=this._virtualNode)?void 0:n.nodeIndex)&&(this.nodeIndexes=[this._virtualNode.nodeIndex]),this.source=null,o._audit.noHtml||(this.source=null!=(r=this.spec.source)?r:null!=(n=this._element)&&n.outerHTML?((r=n.outerHTML)||"function"!=typeof t.XMLSerializer||(r=(new t.XMLSerializer).serializeToString(n)),(n=r||"").length>(a=a||300)&&(a=n.indexOf(">"),n=n.substring(0,a+1)),n):"")}On.prototype={get selector(){return this.spec.selector||[xn(this.element,this._options)]},get ancestry(){return this.spec.ancestry||[kn(this.element)]},get xpath(){return this.spec.xpath||[Bn(this.element)]},get element(){return this._element},toJSON:function(){return{selector:this.selector,source:this.source,xpath:this.xpath,ancestry:this.ancestry,nodeIndexes:this.nodeIndexes}}},On.fromFrame=function(e,t,n){return e=On.mergeSpecs(e,n),new On(n.element,t,e)},On.mergeSpecs=function(e,t){return O({},e,{selector:[].concat(N(t.selector),N(e.selector)),ancestry:[].concat(N(t.ancestry),N(e.ancestry)),xpath:[].concat(N(t.xpath),N(e.xpath)),nodeIndexes:[].concat(N(t.nodeIndexes),N(e.nodeIndexes))})};var _n=On,Sn=function(e,n,a,r){return{isAsync:!1,async:function(){return this.isAsync=!0,function(t){t instanceof Error==0?(e.result=t,a(e)):r(t)}},data:function(t){e.data=t},relatedNodes:function(a){t.Node&&(a=a instanceof t.Node?[a]:nn(a)).every((function(e){return e instanceof t.Node||e.actualNode}))&&(e.relatedNodes=a.map((function(e){return new _n(e,n)})))}}},In=function e(n){var a,o,u,i=n;if(null!=(a=t)&&a.Node&&n instanceof t.Node||null!=(a=t)&&a.HTMLCollection&&n instanceof t.HTMLCollection)return n;if(null!==n&&"object"===r(n))if(Array.isArray(n))for(i=[],o=0,u=n.length;o<u;o++)i[o]=e(n[o]);else for(o in i={},n)i[o]=e(n[o]);return i},Pn=((oo=new(H(te()).CssSelectorParser)).registerSelectorPseudos("not"),oo.registerSelectorPseudos("is"),oo.registerNestingOperators(">"),oo.registerAttrEqualityMods("^","$","*","~"),oo);function Mn(e,t){return u=t,1===(o=e).props.nodeType&&("*"===u.tag||o.props.nodeName===u.tag)&&(r=e,!(o=t).classes||o.classes.every((function(e){return r.hasClass(e.value)})))&&(a=e,!(u=t).attributes||u.attributes.every((function(e){var t=a.attr(e.key);return null!==t&&e.test(t)})))&&(o=e,!(u=t).id||o.props.id===u.id)&&(n=e,!((o=t).pseudos&&!o.pseudos.every((function(e){if("not"===e.name)return!e.expressions.some((function(e){return $n(n,e)}));if("is"===e.name)return e.expressions.some((function(e){return $n(n,e)}));throw new Error("the pseudo selector "+e.name+" has not yet been implemented")}))));var n,a,r,o,u}Ln=/(?=[\\-\\[\\]{}()*+?.\\\\\\^$|,#\\s])/g;var Ln,jn=function(e){return e.replace(Ln,"\\\\")},qn=/\\\\/g;function Vn(e){return e.map((function(e){for(var t=[],n=e.rule;n;)t.push({tag:n.tagName?n.tagName.toLowerCase():"*",combinator:n.nestingOperator||" ",id:n.id,attributes:function(e){if(e)return e.map((function(e){var t,n,a=e.name.replace(qn,""),r=(e.value||"").replace(qn,"");switch(e.operator){case"^=":n=new RegExp("^"+jn(r));break;case"$=":n=new RegExp(jn(r)+"$");break;case"~=":n=new RegExp("(^|\\\\s)"+jn(r)+"(\\\\s|$)");break;case"|=":n=new RegExp("^"+jn(r)+"(-|$)");break;case"=":t=function(e){return r===e};break;case"*=":t=function(e){return e&&e.includes(r)};break;case"!=":t=function(e){return r!==e};break;default:t=function(e){return null!==e}}return""===r&&/^[*$^]=$/.test(e.operator)&&(t=function(){return!1}),{key:a,value:r,type:void 0===e.value?"attrExist":"attrValue",test:t=t||function(e){return e&&n.test(e)}}}))}(n.attrs),classes:function(e){if(e)return e.map((function(e){return{value:e=e.replace(qn,""),regexp:new RegExp("(^|\\\\s)"+jn(e)+"(\\\\s|$)")}}))}(n.classNames),pseudos:function(e){if(e)return e.map((function(e){var t;return["is","not"].includes(e.name)&&(t=Vn(t=(t=e.value).selectors||[t])),{name:e.name,expressions:t,value:e.value}}))}(n.pseudos)}),n=n.rule;return t}))}function zn(e){return Vn((e=Pn.parse(e)).selectors||[e])}function $n(e,t,n){return function e(t,n,a,r){if(!t)return!1;for(var o=Array.isArray(n)?n[a]:n,u=Mn(t,o);!u&&r&&t.parent;)u=Mn(t=t.parent,o);if(0<a){if(!1===[" ",">"].includes(o.combinator))throw new Error("axe.utils.matchesExpression does not support the combinator: "+o.combinator);u=u&&e(t.parent,n,a-1," "===o.combinator)}return u}(e,t,t.length-1,n)}var Un=function(e,t){return zn(t).some((function(t){return $n(e,t)}))},Hn=function(e,t){for(;e;){if(Un(e,t))return e;if(void 0===e.parent)throw new TypeError("Cannot resolve parent for non-DOM nodes");e=e.parent}return null};function Gn(){}function Wn(e){if("function"!=typeof e)throw new TypeError("Queue methods require functions as arguments")}for(var Kn,Yn,Jn,Xn=function(){function e(e){t=e,setTimeout((function(){null!=t&&Lt("Uncaught error (of queue)",t)}),1)}var t,n=[],a=0,o=0,u=Gn,i=!1,l=e;function s(e){return u=Gn,l(e),n}function c(){for(var e=n.length;a<e;a++){var t=n[a];try{t.call(null,function(e){return function(t){n[e]=t,--o||u===Gn||(i=!0,u(n))}}(a),s)}catch(e){s(e)}}}var d={defer:function(e){var a;if("object"===r(e)&&e.then&&e.catch&&(a=e,e=function(e,t){a.then(e).catch(t)}),Wn(e),void 0===t){if(i)throw new Error("Queue already completed");return n.push(e),++o,c(),d}},then:function(e){if(Wn(e),u!==Gn)throw new Error("queue `then` already set");return t||(u=e,o)||(i=!0,u(n)),d},catch:function(n){if(Wn(n),l!==e)throw new Error("queue `catch` already set");return t?(n(t),t=null):l=n,d},abort:s};return d},Qn=t.crypto||t.msCrypto,Zn=(!Kn&&Qn&&Qn.getRandomValues&&(Yn=new Uint8Array(16),Kn=function(){return Qn.getRandomValues(Yn),Yn}),Kn||(Jn=new Array(16),Kn=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),Jn[t]=e>>>((3&t)<<3)&255;return Jn}),"function"==typeof t.Buffer?t.Buffer:Array),ea=[],ta={},na=0;na<256;na++)ea[na]=(na+256).toString(16).substr(1),ta[ea[na]]=na;function aa(e,t){return t=t||0,ea[e[t++]]+ea[e[t++]]+ea[e[t++]]+ea[e[t++]]+"-"+ea[e[t++]]+ea[e[t++]]+"-"+ea[e[t++]]+ea[e[t++]]+"-"+ea[e[t++]]+ea[e[t++]]+"-"+ea[e[t++]]+ea[e[t++]]+ea[e[t++]]+ea[e[t++]]+ea[e[t++]]+ea[e[+t]]}var ra=[1|(oo=Kn())[0],oo[1],oo[2],oo[3],oo[4],oo[5]],oa=16383&(oo[6]<<8|oo[7]),ua=0,ia=0;function la(e,t,n){var a=t&&n||0,r=t||[],o=(n=null!=(e=e||{}).clockseq?e.clockseq:oa,null!=e.msecs?e.msecs:(new Date).getTime()),u=null!=e.nsecs?e.nsecs:ia+1;if((i=o-ua+(u-ia)/1e4)<0&&null==e.clockseq&&(n=n+1&16383),1e4<=(u=(i<0||ua<o)&&null==e.nsecs?0:u))throw new Error("uuid.v1(): Can\'t create more than 10M uuids/sec");ua=o,oa=n;for(var i=(1e4*(268435455&(o+=122192928e5))+(ia=u))%4294967296,l=(u=(r[a++]=i>>>24&255,r[a++]=i>>>16&255,r[a++]=i>>>8&255,r[a++]=255&i,o/4294967296*1e4&268435455),r[a++]=u>>>8&255,r[a++]=255&u,r[a++]=u>>>24&15|16,r[a++]=u>>>16&255,r[a++]=n>>>8|128,r[a++]=255&n,e.node||ra),s=0;s<6;s++)r[a+s]=l[s];return t||aa(r)}function sa(e,t,n){var a=t&&n||0,r=("string"==typeof e&&(t="binary"==e?new Zn(16):null,e=null),(e=e||{}).random||(e.rng||Kn)());if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t)for(var o=0;o<16;o++)t[a+o]=r[o];return t||aa(r)}(oo=sa).v1=la,oo.v4=sa,oo.parse=function(e,t,n){var a=t&&n||0,r=0;for(t=t||[],e.toLowerCase().replace(/[0-9a-f]{2}/g,(function(e){r<16&&(t[a+r++]=ta[e])}));r<16;)t[a+r++]=0;return t},oo.unparse=aa,oo.BufferClass=Zn,o._uuid=la();var ca=sa,da=Object.freeze(["EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);function pa(){var e="axeAPI",t="";return(e=void 0!==o&&o._audit&&o._audit.application?o._audit.application:e)+"."+(void 0!==o?o.version:t)}function Da(e){ma(e),tn(t.parent===e,"Source of the response must be the parent window.")}function fa(e){ma(e),tn(e.parent===t,"Respondable target must be a frame in the current window")}function ma(e){tn(t!==e,"Messages can not be sent to the same window.")}var ha={},ga=[];function ba(){var e="".concat(sa(),":").concat(sa());return ga.includes(e)?ba():(ga.push(e),e)}function ya(e,t,n,a){var r,u;return"function"==typeof a&&function(e,t,n){var a=!(2<arguments.length&&void 0!==n)||n;tn(!ha[e],"A replyHandler already exists for this message channel."),ha[e]={replyHandler:t,sendToParent:a}}(t.channelId,a,n),(n?Da:fa)(e),t.message instanceof Error&&!n?(o.log(t.message),!1):(n=(a=O({messageId:ba()},t)).topic,t=a.channelId,u=a.message,t={channelId:t,topic:n,messageId:a.messageId,keepalive:!!a.keepalive,source:pa()},u instanceof Error?t.error={name:u.name,message:u.message,stack:u.stack}:t.payload=u,r=JSON.stringify(t),!(!(n=o._audit.allowedOrigins)||!n.length||(n.forEach((function(t){try{e.postMessage(r,t)}catch(n){if(n instanceof e.DOMException)throw new Error(\'allowedOrigins value "\'.concat(t,\'" is not a valid origin\'));throw n}})),0)))}function va(e,t,n){var a=!(2<arguments.length&&void 0!==n)||n;return function(n,r,o){ya(e,{channelId:t,message:n,keepalive:r},a,o)}}function Fa(e,n){var a,u,i,l=e.origin,s=e.data;e=e.source;try{var c=function(e){var n,a,o,u;try{n=JSON.parse(e)}catch(e){return}if(null!==(e=n)&&"object"===r(e)&&"string"==typeof e.channelId&&e.source===pa())return a=(e=n).topic,o=e.channelId,u=e.messageId,e=e.keepalive,{topic:a,message:"object"===r(n.error)?function(e){var n=e.message||"Unknown error occurred",a=da.includes(e.name)?e.name:"Error";return a=t[a]||Error,e.stack&&(n+="\\n"+e.stack.replace(e.message,"")),new a(n)}(n.error):n.payload,messageId:u,channelId:o,keepalive:!!e}}(s)||{},d=c.channelId,p=c.message,D=c.messageId;if(u=l,((i=o._audit.allowedOrigins)&&i.includes("*")||i.includes(u))&&(a=D,!ga.includes(a))&&(ga.push(a),1))if(p instanceof Error&&e.parent!==t)o.log(p);else try{if(c.topic){var f=va(e,d);Da(e),n(c,f)}else{var m=e,h=(b=c).channelId,g=b.message,b=b.keepalive,y=(v=function(e){return ha[e]}(h)||{}).replyHandler,v=v.sendToParent;if(y){(v?Da:fa)(m),m=va(m,h,v),!b&&h&&function(e){delete ha[e]}(h);try{y(g,b,m)}catch(n){o.log(n),m(n,b)}}}}catch(n){var F=e,w=n,E=d;if(!F.parent!==t)o.log(w);else try{ya(F,{topic:null,channelId:E,message:w,messageId:ba(),keepalive:!0},!0)}catch(n){return void o.log(n)}}}catch(n){o.log(n)}}var wa,Ea,Ca={open:function(e){var n;if("function"==typeof t.addEventListener)return t.addEventListener("message",n=function(t){Fa(t,e)},!1),function(){t.removeEventListener("message",n,!1)}},post:function(e,n,a){return"function"==typeof t.addEventListener&&ya(e,n,!1,a)}};function xa(e){e.updateMessenger(Ca)}var Aa={};function ka(e,t,n,a,r){return t={topic:t,message:n,channelId:"".concat(sa(),":").concat(sa()),keepalive:a},Ea(e,t,r)}function Ba(e,t){var n=e.topic,a=e.message;e=e.keepalive;if(n=Aa[n])try{n(a,e,t)}catch(n){o.log(n),t(n,e)}}function Ra(e,t,n,a){var r,o=e.contentWindow,u=null!=(u=null==(u=t.options)?void 0:u.pingWaitTime)?u:500;o?0===u?Na(e,t,n,a):(r=setTimeout((function(){r=setTimeout((function(){t.debug?a(Ta("No response from frame",e)):n(null)}),0)}),u),ka(o,"axe.ping",null,void 0,(function(){clearTimeout(r),Na(e,t,n,a)}))):(Lt("Frame does not have a content window",e),n(null))}function Na(e,t,n,a){var r=null!=(r=null==(r=t.options)?void 0:r.frameWaitTime)?r:6e4,o=e.contentWindow,u=setTimeout((function(){a(Ta("Axe in frame timed out",e))}),r);ka(o,"axe.start",t,void 0,(function(e){clearTimeout(u),(e instanceof Error==0?n:a)(e)}))}function Ta(e,t){var n;return o._tree&&(n=xn(t)),new Error(e+": "+(n||t))}ka.updateMessenger=function(e){var t=e.open;e=e.post,tn("function"==typeof t,"open callback must be a function"),tn("function"==typeof e,"post callback must be a function"),wa&&wa(),t=t(Ba);wa=t?(tn("function"==typeof t,"open callback must return a cleanup function"),t):null,Ea=e},ka.subscribe=function(e,t){tn("function"==typeof t,"Subscriber callback must be a function"),tn(!Aa[e],"Topic ".concat(e," is already registered to.")),Aa[e]=t},ka.isInFrame=function(){return!!(0<arguments.length&&void 0!==arguments[0]?arguments[0]:t).frameElement},xa(ka);var Oa=function(e){return[].concat(e.any||[]).concat(e.all||[]).concat(e.none||[])},_a=function(e,t,n){if(Array.isArray(e))return e.find((function(e){return"object"===r(e)&&e[t]===n}))};function Sa(e,t){for(var n=0<arguments.length&&void 0!==e?e:[],a=1<arguments.length&&void 0!==t?t:[],r=Math.max(null==n?void 0:n.length,null==a?void 0:a.length),o=0;o<r;o++){var u=null==n?void 0:n[o],i=null==a?void 0:a[o];if("number"!=typeof u||isNaN(u))return 0===o?1:-1;if("number"!=typeof i||isNaN(i))return 0===o?-1:1;if(u!==i)return u-i}return 0}var Ia=function(e,t){var n=[];return e.forEach((function(e){var a,r=(r=e)&&r.results?Array.isArray(r.results)?r.results.length?r.results:null:[r.results]:null;r&&r.length&&(a=function(e,t){return e.frameElement?new _n(e.frameElement,t):e.frameSpec?e.frameSpec:null}(e,t),r.forEach((function(e){e.nodes&&a&&(u=e.nodes,r=t,o=a,u.forEach((function(e){e.node=_n.fromFrame(e.node,r,o),Oa(e).forEach((function(e){e.relatedNodes=e.relatedNodes.map((function(e){return _n.fromFrame(e,r,o)}))}))})));var r,o,u=_a(n,"id",e.id);if(u){if(e.nodes.length){for(var i=u.nodes,l=e.nodes,s=l[0].node,c=0;c<i.length;c++){var d=i[c].node,p=Sa(d.nodeIndexes,s.nodeIndexes);if(0<p||0===p&&s.selector.length<d.selector.length)return void i.splice.apply(i,[c,0].concat(N(l)))}i.push.apply(i,N(l))}}else n.push(e)})))})),n.forEach((function(e){e.nodes&&e.nodes.sort((function(e,t){return Sa(e.node.nodeIndexes,t.node.nodeIndexes)}))})),n};function Pa(e,t,n,a,r,o){var u=Xn();e.frames.forEach((function(e){var r=e.node,o=R(e,i);u.defer((function(e,u){Ra(r,{options:t,command:n,parameter:a,context:o},(function(t){return e(t?{results:t,frameElement:r}:null)}),u)}))})),u.then((function(e){r(Ia(e,t))})).catch(o)}function Ma(e,t){if(!e.shadowId&&!t.shadowId&&e.actualNode&&"function"==typeof e.actualNode.contains)return e.actualNode.contains(t.actualNode);do{if(e===t)return!0;if(t.nodeIndex<e.nodeIndex)return!1}while(t=t.parent);return!1}var La=function e(){for(var t={},n=arguments.length,a=new Array(n),o=0;o<n;o++)a[o]=arguments[o];return a.forEach((function(n){if(n&&"object"===r(n)&&!Array.isArray(n))for(var a=0,o=Object.keys(n);a<o.length;a++){var u=o[a];!t.hasOwnProperty(u)||"object"!==r(n[u])||Array.isArray(t[u])?t[u]=n[u]:t[u]=e(t[u],n[u])}})),t},ja=function(e,t){Object.assign(e,t),Object.keys(t).filter((function(e){return"function"==typeof t[e]})).forEach((function(n){e[n]=null;try{e[n]=t[n](e)}catch(n){}}))},qa=["article","aside","blockquote","body","div","footer","h1","h2","h3","h4","h5","h6","header","main","nav","p","section","span"],Va=function(e){return!!(e.shadowRoot&&(e=e.nodeName.toLowerCase(),qa.includes(e)||/^[a-z][a-z0-9_.-]*-[a-z0-9_.-]*$/.test(e)))},za={},$a=(U(za,{createGrid:function(){return Ar},findElmsInContext:function(){return Ha},findNearbyElms:function(){return Tr},findUp:function(){return Wa},findUpVirtual:function(){return Ga},focusDisabled:function(){return Sr},getComposedParent:function(){return hr},getElementByReference:function(){return Lr},getElementCoordinates:function(){return br},getElementStack:function(){return Jr},getOverflowHiddenAncestors:function(){return Qa},getRootNode:function(){return Ua},getScrollOffset:function(){return gr},getTabbableElements:function(){return Xr},getTextElementStack:function(){return Lu},getViewportSize:function(){return yr},getVisibleChildTextRects:function(){return Mu},hasContent:function(){return Uu},hasContentVirtual:function(){return $u},hasLangText:function(){return Hu},idrefs:function(){return Zr},insertedIntoFocusOrder:function(){return Gu},isCurrentPageLink:function(){return Mr},isFocusable:function(){return Eo},isHTML5:function(){return Ju},isHiddenForEveryone:function(){return Dr},isHiddenWithCSS:function(){return Yu},isInTabOrder:function(){return Xu},isInTextBlock:function(){return ti},isModalOpen:function(){return ni},isMultiline:function(){return ai},isNativelyFocusable:function(){return wo},isNode:function(){return ri},isOffscreen:function(){return vr},isOpaque:function(){return ci},isSkipLink:function(){return di},isVisible:function(){return mi},isVisibleOnScreen:function(){return wr},isVisibleToScreenReaders:function(){return uu},isVisualContent:function(){return qu},reduceToElementsBelowFloating:function(){return hi},shadowElementsFromPoint:function(){return Fi},urlPropsFromAttribute:function(){return wi},visuallyContains:function(){return gi},visuallyOverlaps:function(){return Ei},visuallySort:function(){return jr}}),function(e){var t=e.getRootNode&&e.getRootNode()||a;return t===e?a:t}),Ua=$a,Ha=function(e){var t=e.context,n=e.value,a=e.attr;e=void 0===(e=e.elm)?"":e,n=an(n),t=9===t.nodeType||11===t.nodeType?t:Ua(t);return Array.from(t.querySelectorAll(e+"["+a+"="+n+"]"))},Ga=function(e,t){var n=e.actualNode;if(!e.shadowId&&"function"==typeof e.actualNode.closest)return e.actualNode.closest(t)||null;for(;(n=(n=n.assignedSlot||n.parentNode)&&11===n.nodeType?n.host:n)&&!dn(n,t)&&n!==a.documentElement;);return n&&dn(n,t)?n:null},Wa=function(e,t){return Ga(Tn(e),t)},Ka=H(Tt()),Ya=(o._memoizedFns=[],function(e){return e=(0,Ka.default)(e),o._memoizedFns.push(e),e});function Ja(e,t){return(0|e.left)<(0|t.right)&&(0|e.right)>(0|t.left)&&(0|e.top)<(0|t.bottom)&&(0|e.bottom)>(0|t.top)}var Xa=Ya((function(e){var t=[];return e?("hidden"===e.getComputedStylePropertyValue("overflow")&&t.push(e),t.concat(Xa(e.parent))):t})),Qa=Xa,Za=/rect\\s*\\(([0-9]+)px,?\\s*([0-9]+)px,?\\s*([0-9]+)px,?\\s*([0-9]+)px\\s*\\)/,er=/(\\w+)\\((\\d+)/;function tr(e){return["style","script","noscript","template"].includes(e.props.nodeName)}function nr(e){return"area"!==e.props.nodeName&&"none"===e.getComputedStylePropertyValue("display")}function ar(e){return!(1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).isAncestor&&["hidden","collapse"].includes(e.getComputedStylePropertyValue("visibility"))}function rr(e){return!!(1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).isAncestor&&"hidden"===e.getComputedStylePropertyValue("content-visibility")}function or(e){return"true"===e.attr("aria-hidden")}function ur(e){return"0"===e.getComputedStylePropertyValue("opacity")}function ir(e){var t=ll(e.actualNode),n=parseInt(e.getComputedStylePropertyValue("height"));e=parseInt(e.getComputedStylePropertyValue("width"));return!!t&&(0===n||0===e)}function lr(e){var t,n;return!(1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).isAncestor&&(t=e.boundingClientRect,!!(n=Qa(e)).length)&&n.some((function(e){return(e=e.boundingClientRect).width<2||e.height<2||!Ja(t,e)}))}function sr(e){var t=e.getComputedStylePropertyValue("clip").match(Za),n=e.getComputedStylePropertyValue("clip-path").match(er);if(t&&5===t.length&&(e=e.getComputedStylePropertyValue("position"),["fixed","absolute"].includes(e)))return t[3]-t[1]<=0&&t[2]-t[4]<=0;if(n){e=n[1];var a=parseInt(n[2],10);switch(e){case"inset":return 50<=a;case"circle":return 0===a}}return!1}function cr(e,t){var n,a=Hn(e,"map");return!a||!((a=a.attr("name"))&&(e=$a(e.actualNode))&&9===e.nodeType&&(n=Gl(o._tree,\'img[usemap="#\'.concat(an(a),\'"]\')))&&n.length)||n.some((function(e){return!t(e)}))}function dr(e){var t;return"details"===(null==(t=e.parent)?void 0:t.props.nodeName)&&(("summary"!==e.props.nodeName||e.parent.children.find((function(e){return"summary"===e.props.nodeName}))!==e)&&!e.parent.hasAttr("open"))}var pr=[nr,ar,rr,dr];function Dr(e){var t=(n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).skipAncestors,n=void 0!==(n=n.isAncestor)&&n;return e=e instanceof Vt?e:Tn(e),(t?fr:mr)(e,n)}var fr=Ya((function(e,t){return!!tr(e)||!(!e.actualNode||!pr.some((function(n){return n(e,{isAncestor:t})}))&&e.actualNode.isConnected)})),mr=Ya((function(e,t){return!!fr(e,t)||!!e.parent&&mr(e.parent,!0)})),hr=function e(t){if(t.assignedSlot)return e(t.assignedSlot);if(t.parentNode){if(1===(t=t.parentNode).nodeType)return t;if(t.host)return t.host}return null},gr=function(e){var t,n;return 9===(e=!e.nodeType&&e.document?e.document:e).nodeType?(t=e.documentElement,n=e.body,{left:t&&t.scrollLeft||n&&n.scrollLeft||0,top:t&&t.scrollTop||n&&n.scrollTop||0}):{left:e.scrollLeft,top:e.scrollTop}},br=function(e){var t=(n=gr(a)).left,n=n.top;return{top:(e=e.getBoundingClientRect()).top+n,right:e.right+t,bottom:e.bottom+n,left:e.left+t,width:e.right-e.left,height:e.bottom-e.top}},yr=function(e){var t=e.document,n=t.documentElement;return e.innerWidth?{width:e.innerWidth,height:e.innerHeight}:n?{width:n.clientWidth,height:n.clientHeight}:{width:(e=t.body).clientWidth,height:e.clientHeight}},vr=function(e){if((1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).isAncestor)return!1;if(e=e instanceof Vt?e.actualNode:e){var n=a.documentElement,r=t.getComputedStyle(e),o=t.getComputedStyle(a.body||n).getPropertyValue("direction"),u=br(e);if(u.bottom<0&&(function(e,t){for(e=hr(e);e&&"html"!==e.nodeName.toLowerCase();){if(e.scrollTop&&0<=(t+=e.scrollTop))return;e=hr(e)}return 1}(e,u.bottom)||"absolute"===r.position))return!0;if(0!==u.left||0!==u.right)if("ltr"===o){if(u.right<=0)return!0}else if(r=Math.max(n.scrollWidth,yr(t).width),u.left>=r)return!0;return!1}},Fr=[ur,ir,lr,sr,vr];function wr(e){return e=e instanceof Vt?e:Tn(e),Er(e)}var Er=Ya((function(e,t){return e.actualNode&&"area"===e.props.nodeName?!cr(e,Er):!(Dr(e,{skipAncestors:!0,isAncestor:t})||e.actualNode&&Fr.some((function(n){return n(e,{isAncestor:t})})))&&(!e.parent||Er(e.parent,!0))}));function Cr(e,n){var a=Math.min(e.top,n.top),r=Math.max(e.right,n.right),o=Math.max(e.bottom,n.bottom);e=Math.min(e.left,n.left);return new t.DOMRect(e,a,r-e,o-a)}function xr(e,t){var n=e.x,a=(e=e.y,t.top),r=t.right,o=t.bottom;t=t.left;return a<=e&&n<=r&&e<=o&&t<=n}function Ar(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:a.body,n=1<arguments.length?arguments[1]:void 0,r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Nn.get("gridCreated")||r){Nn.set("gridCreated",!0),r||((i=(i=Tn(a.documentElement))||new ki(a.documentElement))._stackingOrder=[0],kr(n=null!=n?n:new Br,i),ll(i.actualNode)&&(u=new Br(i),i._subGrid=u));for(var u,i,l=a.createTreeWalker(e,t.NodeFilter.SHOW_ELEMENT,null,!1),s=r?l.nextNode():l.currentNode;s;){var c=Tn(s),d=(d=(c&&c.parent?r=c.parent:s.assignedSlot?r=Tn(s.assignedSlot):s.parentElement?r=Tn(s.parentElement):s.parentNode&&Tn(s.parentNode)&&(r=Tn(s.parentNode)),(c=c||new o.VirtualNode(s,r))._stackingOrder=function(e,t){var n=t._stackingOrder.slice(),a=e.getComputedStylePropertyValue("z-index"),r="static"!==e.getComputedStylePropertyValue("position"),o="none"!==e.getComputedStylePropertyValue("float");if(r&&!["auto","0"].includes(a)){for(;n.find((function(e){return e%1!=0}));){var u=n.findIndex((function(e){return e%1!=0}));n.splice(u,1)}n[n.length-1]=parseInt(a)}return!function(e,t){var n=e.getComputedStylePropertyValue("position"),a=e.getComputedStylePropertyValue("z-index");return"fixed"===n||"sticky"===n||"auto"!==a&&"static"!==n||"1"!==e.getComputedStylePropertyValue("opacity")||"none"!==(e.getComputedStylePropertyValue("-webkit-transform")||e.getComputedStylePropertyValue("-ms-transform")||e.getComputedStylePropertyValue("transform")||"none")||(n=e.getComputedStylePropertyValue("mix-blend-mode"))&&"normal"!==n||(n=e.getComputedStylePropertyValue("filter"))&&"none"!==n||(n=e.getComputedStylePropertyValue("perspective"))&&"none"!==n||(n=e.getComputedStylePropertyValue("clip-path"))&&"none"!==n||"none"!==(e.getComputedStylePropertyValue("-webkit-mask")||e.getComputedStylePropertyValue("mask")||"none")||"none"!==(e.getComputedStylePropertyValue("-webkit-mask-image")||e.getComputedStylePropertyValue("mask-image")||"none")||"none"!==(e.getComputedStylePropertyValue("-webkit-mask-border")||e.getComputedStylePropertyValue("mask-border")||"none")||"isolate"===e.getComputedStylePropertyValue("isolation")||"transform"===(n=e.getComputedStylePropertyValue("will-change"))||"opacity"===n||"touch"===e.getComputedStylePropertyValue("-webkit-overflow-scrolling")?1:(n=e.getComputedStylePropertyValue("contain"),["layout","paint","strict","content"].includes(n)||"auto"!==a&&t&&(e=t.getComputedStylePropertyValue("display"),["flex","inline-flex","inline flex","grid","inline-grid","inline grid"].includes(e))?1:void 0)}(e,t)?r?n.push(.5):o&&n.push(.25):n.push(0),n}(c,r),function(e,t){for(var n=null,a=[e];t;){if(ll(t.actualNode)){n=t;break}if(t._scrollRegionParent){n=t._scrollRegionParent;break}a.push(t),t=Tn(t.actualNode.parentElement||t.actualNode.parentNode)}return a.forEach((function(e){return e._scrollRegionParent=n})),n}(c,r)))?d._subGrid:n,p=(ll(c.actualNode)&&(p=new Br(c),c._subGrid=p),c.boundingClientRect);0!==p.width&&0!==p.height&&wr(s)&&kr(d,c),Va(s)&&Ar(s.shadowRoot,d,c),s=l.nextNode()}}return Mt.gridSize}function kr(e,t){t.clientRects.forEach((function(n){null==t._grid&&(t._grid=e),n=e.getGridPositionOfRect(n),e.loopGridPosition(n,(function(e){e.includes(t)||e.push(t)}))}))}L(Rr,[{key:"toGridIndex",value:function(e){return Math.floor(e/Mt.gridSize)}},{key:"getCellFromPoint",value:function(e){var t=e.x;e=e.y,tn(this.boundaries,"Grid does not have cells added"),e=this.toGridIndex(e),t=this.toGridIndex(t);return null!=(t=(e=(tn(xr({y:e,x:t},this.boundaries),"Element midpoint exceeds the grid bounds"),null!=(e=this.cells[e-this.cells._negativeIndex])?e:[]))[t-e._negativeIndex])?t:[]}},{key:"loopGridPosition",value:function(e,t){var n=(o=e).left,a=o.right,r=o.top,o=o.bottom;this.boundaries&&(e=Cr(this.boundaries,e)),this.boundaries=e,Nr(this.cells,r,o,(function(e,r){Nr(e,n,a,(function(e,n){t(e,{row:r,col:n})}))}))}},{key:"getGridPositionOfRect",value:function(e){var n=e.top,a=e.right,r=e.bottom,o=e.left,u=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;n=this.toGridIndex(n-u),a=this.toGridIndex(a+u-1),r=this.toGridIndex(r+u-1),o=this.toGridIndex(o-u);return new t.DOMRect(o,n,a-o,r-n)}}]);var Br=Rr;function Rr(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null;P(this,Rr),this.container=e,this.cells=[]}function Nr(e,t,n,a){if(null!=e._negativeIndex||(e._negativeIndex=0),t<e._negativeIndex){for(var r=0;r<e._negativeIndex-t;r++)e.splice(0,0,[]);e._negativeIndex=t}for(var o,u=t-e._negativeIndex,i=n-e._negativeIndex,l=u;l<=i;l++)null==e[o=l]&&(e[o]=[]),a(e[l],l+e._negativeIndex)}function Tr(e){var t,n,a,r,o=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return Ar(),null!=(a=e._grid)&&null!=(a=a.cells)&&a.length?(a=e.boundingClientRect,t=e._grid,n=Or(e),a=t.getGridPositionOfRect(a,o),r=[],t.loopGridPosition(a,(function(t){var a,o=q(t);try{for(o.s();!(a=o.n()).done;){var u=a.value;u&&u!==e&&!r.includes(u)&&n===Or(u)&&r.push(u)}}catch(t){o.e(t)}finally{o.f()}})),r):[]}var Or=Ya((function(e){return!!e&&("fixed"===e.getComputedStylePropertyValue("position")||Or(e.parent))})),_r=["button","command","fieldset","keygen","optgroup","option","select","textarea","input"],Sr=function(e){var t=e instanceof Vt?e:Tn(e);if(e=t.props.nodeName,_r.includes(e)&&t.hasAttr("disabled"))return!0;for(var n=t.parent,a=[],r=!1;n&&n.shadowId===t.shadowId&&!r&&(a.push(n),"legend"!==n.props.nodeName);){if(void 0!==n._inDisabledFieldset){r=n._inDisabledFieldset;break}"fieldset"===n.props.nodeName&&n.hasAttr("disabled")&&(r=!0),n=n.parent}return a.forEach((function(e){return e._inDisabledFieldset=r})),!!r||"area"!==t.props.nodeName&&!!t.actualNode&&Dr(t)},Ir=/^\\/\\#/,Pr=/^#[!/]/;function Mr(e){var n,a,r,o,u=e.getAttribute("href");return!(!u||"#"===u)&&(!!Ir.test(u)||(o=e.hash,n=e.protocol,a=e.hostname,r=e.port,e=e.pathname,!Pr.test(o)&&("#"===u.charAt(0)||("string"!=typeof(null==(o=t.location)?void 0:o.origin)||-1===t.location.origin.indexOf("://")?null:(u=t.location.origin+t.location.pathname,o=a?"".concat(n,"//").concat(a).concat(r?":".concat(r):""):t.location.origin,(o+=e?("/"!==e[0]?"/":"")+e:t.location.pathname)===u)))))}var Lr=function(e,t){var n=e.getAttribute(t);return n&&("href"!==t||Mr(e))?(-1!==n.indexOf("#")&&(n=decodeURIComponent(n.substr(n.indexOf("#")+1))),(t=a.getElementById(n))||((t=a.getElementsByName(n)).length?t[0]:null)):null};function jr(e,n){Ar();for(var a=Math.max(e._stackingOrder.length,n._stackingOrder.length),r=0;r<a;r++){if(void 0===n._stackingOrder[r])return-1;if(void 0===e._stackingOrder[r])return 1;if(n._stackingOrder[r]>e._stackingOrder[r])return 1;if(n._stackingOrder[r]<e._stackingOrder[r])return-1}var o=e.actualNode,u=n.actualNode;if(o.getRootNode&&o.getRootNode()!==u.getRootNode()){for(var i=[];o;)i.push({root:o.getRootNode(),node:o}),o=o.getRootNode().host;for(;u&&!i.find((function(e){return e.root===u.getRootNode()}));)u=u.getRootNode().host;if((o=i.find((function(e){return e.root===u.getRootNode()})).node)===u)return e.actualNode.getRootNode()!==o.getRootNode()?-1:1}var l,s=(d=t.Node).DOCUMENT_POSITION_FOLLOWING,c=d.DOCUMENT_POSITION_CONTAINS,d=d.DOCUMENT_POSITION_CONTAINED_BY;s=(l=o.compareDocumentPosition(u))&s?1:-1,c=l&c||l&d;return(l=qr(e))===(d=qr(n))||c?s:d-l}function qr(e){return-1!==e.getComputedStylePropertyValue("display").indexOf("inline")?2:function e(t){if(!t)return!1;if(void 0!==t._isFloated)return t._isFloated;var n=t.getComputedStylePropertyValue("float");return"none"!==n?t._isFloated=!0:(n=e(t.parent),t._isFloated=n,n)}(e)?1:0}var Vr={};function zr(e,n){var a=Math.max(e.left,n.left),r=Math.min(e.right,n.right),o=Math.max(e.top,n.top);e=Math.min(e.bottom,n.bottom);return r<=a||e<=o?null:new t.DOMRect(a,o,r-a,e-o)}function $r(e,t){e=e.boundingClientRect,t=t.boundingClientRect;var n,a,r,o=(n=e,a=t,r={},[["x","left","right","width"],["y","top","bottom","height"]].forEach((function(e){var t,o=(e=_(e,4))[0],u=e[1],i=e[2];e=e[3];a[u]<n[u]&&a[i]>n[i]?r[o]=n[u]+n[e]/2:(e=a[u]+a[e]/2,t=Math.abs(e-n[u]),e=Math.abs(e-n[i]),r[o]=e<=t?n[u]:n[i])})),r);e=function(e,t,n){var a=e.x;if(function(e,t){var n=e.x;return(e=e.y)>=t.top&&n<=t.right&&e<=t.bottom&&n>=t.left}({x:a,y:e=e.y},n)){if(null!==(i=function(e,t,n){var a,r,o=e.x;e=e.y;return o===t.left&&t.right<n.right?a=t.right:o===t.right&&t.left>n.left&&(a=t.left),e===t.top&&t.bottom<n.bottom?r=t.bottom:e===t.bottom&&t.top>n.top&&(r=t.top),a||r?r?a&&Math.abs(o-a)<Math.abs(e-r)?{x:a,y:e}:{x:o,y:r}:{x:a,y:e}:null}({x:a,y:e},t,n)))return i;n=t}t=(i=n).top,n=i.right;var r=i.bottom,o=(i=i.left)<=a&&a<=n,u=t<=e&&e<=r,i=Math.abs(i-a)<Math.abs(n-a)?i:n;n=Math.abs(t-e)<Math.abs(r-e)?t:r;return!o&&u?{x:i,y:e}:o&&!u?{x:a,y:n}:o||u?Math.abs(a-i)<Math.abs(e-n)?{x:i,y:e}:{x:a,y:n}:{x:i,y:n}}(o,e,t);return t=o,o=e,e=Math.abs(t.x-o.x),t=Math.abs(t.y-o.y),e&&t?Math.sqrt(Math.pow(e,2)+Math.pow(t,2)):e||t}function Ur(e){var n=e.left,a=e.top,r=e.width;e=e.height;return new t.DOMPoint(n+r/2,a+e/2)}function Hr(e,t){var n=e.boundingClientRect,a=t.boundingClientRect;return!(n.left>=a.right||n.right<=a.left||n.top>=a.bottom||n.bottom<=a.top)&&0<jr(e,t)}function Gr(e,t){var n,a=[e],r=q(t);try{function o(){var e=n.value;a=a.reduce((function(t,n){return t.concat(function(e,t){var n=e.top,a=e.left,r=e.bottom,o=e.right,u=n<t.bottom&&r>t.top,i=a<t.right&&o>t.left,l=[];return Wr(t.top,n,r)&&i&&l.push({top:n,left:a,bottom:t.top,right:o}),Wr(t.right,a,o)&&u&&l.push({top:n,left:t.right,bottom:r,right:o}),Wr(t.bottom,n,r)&&i&&l.push({top:t.bottom,right:o,bottom:r,left:a}),Wr(t.left,a,o)&&u&&l.push({top:n,left:a,bottom:r,right:t.left}),0===l.length&&l.push(e),l.map(Kr)}(n,e))}),[])}for(r.s();!(n=r.n()).done;)o()}catch(e){r.e(e)}finally{r.f()}return a}U(Vr,{getBoundingRect:function(){return Cr},getIntersectionRect:function(){return zr},getOffset:function(){return $r},getRectCenter:function(){return Ur},hasVisualOverlap:function(){return Hr},isPointInRect:function(){return xr},rectsOverlap:function(){return Ja},splitRects:function(){return Gr}});var Wr=function(e,t,n){return t<e&&e<n};function Kr(e){return O({},e,{x:e.left,y:e.top,height:e.bottom-e.top,width:e.right-e.left})}function Yr(e,t,n){var r=2<arguments.length&&void 0!==n&&n,o=Ur(t),u=e.getCellFromPoint(o)||[],i=Math.floor(o.x),l=Math.floor(o.y);o=u.filter((function(e){return e.clientRects.some((function(e){var t=e.left,n=e.top;return i<Math.floor(t+e.width)&&i>=Math.floor(t)&&l<Math.floor(n+e.height)&&l>=Math.floor(n)}))}));return(u=e.container)&&(o=Yr(u._grid,u.boundingClientRect,!0).concat(o)),r?o:o.sort(jr).map((function(e){return e.actualNode})).concat(a.documentElement).filter((function(e,t,n){return n.indexOf(e)===t}))}var Jr=function(e){Ar();var t=(e=Tn(e))._grid;return t?Yr(t,e.boundingClientRect):[]},Xr=function(e){return Gl(e,"*").filter((function(e){var t=e.isFocusable;return(e=(e=e.actualNode.getAttribute("tabindex"))&&!isNaN(parseInt(e,10))?parseInt(e):null)?t&&0<=e:t}))},Qr={},Zr=(U(Qr,{accessibleText:function(){return eo},accessibleTextVirtual:function(){return Au},autocomplete:function(){return Ru},formControlValue:function(){return vu},formControlValueMethods:function(){return bu},hasUnicode:function(){return wu},isHumanInterpretable:function(){return Bu},isIconLigature:function(){return Eu},isValidAutocomplete:function(){return Nu},label:function(){return Su},labelText:function(){return Zo},labelVirtual:function(){return _u},nativeElementType:function(){return Iu},nativeTextAlternative:function(){return ru},nativeTextMethods:function(){return au},removeUnicode:function(){return ku},sanitize:function(){return Fo},subtreeText:function(){return Qo},titleText:function(){return Ko},unsupported:function(){return ou},visible:function(){return Ou},visibleTextNodes:function(){return Pu},visibleVirtual:function(){return lu}}),function(e,t){e=e.actualNode||e;try{var n=Ua(e),a=[];if(r=e.getAttribute(t))for(var r=Bi(r),o=0;o<r.length;o++)a.push(n.getElementById(r[o]));return a}catch(e){throw new TypeError("Cannot resolve id references for non-DOM nodes")}}),eo=function(e,t){return e=Tn(e),Au(e,t)},to=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};if(!(e instanceof Vt)){if(1!==e.nodeType)return"";e=Tn(e)}return 1!==e.props.nodeType||t.inLabelledByContext||t.inControlContext||!e.attr("aria-labelledby")?"":Zr(e,"aria-labelledby").filter((function(e){return e})).reduce((function(n,a){return a=eo(a,O({inLabelledByContext:!0,startNode:t.startNode||e},t)),n?"".concat(n," ").concat(a):a}),"")},no=function(e){if(!(e instanceof Vt)){if(1!==e.nodeType)return"";e=Tn(e)}return e.attr("aria-label")||""},ao={"aria-activedescendant":{type:"idref",allowEmpty:!0},"aria-atomic":{type:"boolean",global:!0},"aria-autocomplete":{type:"nmtoken",values:["inline","list","both","none"]},"aria-busy":{type:"boolean",global:!0},"aria-checked":{type:"nmtoken",values:["false","mixed","true","undefined"]},"aria-colcount":{type:"int",minValue:-1},"aria-colindex":{type:"int",minValue:1},"aria-colspan":{type:"int",minValue:1},"aria-controls":{type:"idrefs",allowEmpty:!0,global:!0},"aria-current":{type:"nmtoken",allowEmpty:!0,values:["page","step","location","date","time","true","false"],global:!0},"aria-describedby":{type:"idrefs",allowEmpty:!0,global:!0},"aria-details":{type:"idref",allowEmpty:!0,global:!0},"aria-disabled":{type:"boolean",global:!0},"aria-dropeffect":{type:"nmtokens",values:["copy","execute","link","move","none","popup"],global:!0},"aria-errormessage":{type:"idref",allowEmpty:!0,global:!0},"aria-expanded":{type:"nmtoken",values:["true","false","undefined"]},"aria-flowto":{type:"idrefs",allowEmpty:!0,global:!0},"aria-grabbed":{type:"nmtoken",values:["true","false","undefined"],global:!0},"aria-haspopup":{type:"nmtoken",allowEmpty:!0,values:["true","false","menu","listbox","tree","grid","dialog"],global:!0},"aria-hidden":{type:"nmtoken",values:["true","false","undefined"],global:!0},"aria-invalid":{type:"nmtoken",values:["grammar","false","spelling","true"],global:!0},"aria-keyshortcuts":{type:"string",allowEmpty:!0,global:!0},"aria-label":{type:"string",allowEmpty:!0,global:!0},"aria-labelledby":{type:"idrefs",allowEmpty:!0,global:!0},"aria-level":{type:"int",minValue:1},"aria-live":{type:"nmtoken",values:["assertive","off","polite"],global:!0},"aria-modal":{type:"boolean"},"aria-multiline":{type:"boolean"},"aria-multiselectable":{type:"boolean"},"aria-orientation":{type:"nmtoken",values:["horizontal","undefined","vertical"]},"aria-owns":{type:"idrefs",allowEmpty:!0,global:!0},"aria-placeholder":{type:"string",allowEmpty:!0},"aria-posinset":{type:"int",minValue:1},"aria-pressed":{type:"nmtoken",values:["false","mixed","true","undefined"]},"aria-readonly":{type:"boolean"},"aria-relevant":{type:"nmtokens",values:["additions","all","removals","text"],global:!0},"aria-required":{type:"boolean"},"aria-roledescription":{type:"string",allowEmpty:!0,global:!0},"aria-rowcount":{type:"int",minValue:-1},"aria-rowindex":{type:"int",minValue:1},"aria-rowspan":{type:"int",minValue:0},"aria-selected":{type:"nmtoken",values:["false","true","undefined"]},"aria-setsize":{type:"int",minValue:-1},"aria-sort":{type:"nmtoken",values:["ascending","descending","none","other"]},"aria-valuemax":{type:"decimal"},"aria-valuemin":{type:"decimal"},"aria-valuenow":{type:"decimal"},"aria-valuetext":{type:"string"}},ro={alert:{type:"widget",allowedAttrs:["aria-expanded"],superclassRole:["section"]},alertdialog:{type:"widget",allowedAttrs:["aria-expanded","aria-modal"],superclassRole:["alert","dialog"],accessibleNameRequired:!0},application:{type:"landmark",allowedAttrs:["aria-activedescendant","aria-expanded"],superclassRole:["structure"],accessibleNameRequired:!0},article:{type:"structure",allowedAttrs:["aria-posinset","aria-setsize","aria-expanded"],superclassRole:["document"]},banner:{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},blockquote:{type:"structure",superclassRole:["section"]},button:{type:"widget",allowedAttrs:["aria-expanded","aria-pressed"],superclassRole:["command"],accessibleNameRequired:!0,nameFromContent:!0,childrenPresentational:!0},caption:{type:"structure",requiredContext:["figure","table","grid","treegrid"],superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},cell:{type:"structure",requiredContext:["row"],allowedAttrs:["aria-colindex","aria-colspan","aria-rowindex","aria-rowspan","aria-expanded"],superclassRole:["section"],nameFromContent:!0},checkbox:{type:"widget",requiredAttrs:["aria-checked"],allowedAttrs:["aria-readonly","aria-required"],superclassRole:["input"],accessibleNameRequired:!0,nameFromContent:!0,childrenPresentational:!0},code:{type:"structure",superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},columnheader:{type:"structure",requiredContext:["row"],allowedAttrs:["aria-sort","aria-colindex","aria-colspan","aria-expanded","aria-readonly","aria-required","aria-rowindex","aria-rowspan","aria-selected"],superclassRole:["cell","gridcell","sectionhead"],accessibleNameRequired:!1,nameFromContent:!0},combobox:{type:"widget",requiredAttrs:["aria-expanded","aria-controls"],allowedAttrs:["aria-owns","aria-autocomplete","aria-readonly","aria-required","aria-activedescendant","aria-orientation"],superclassRole:["select"],accessibleNameRequired:!0},command:{type:"abstract",superclassRole:["widget"]},complementary:{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},composite:{type:"abstract",superclassRole:["widget"]},contentinfo:{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},comment:{type:"structure",allowedAttrs:["aria-level","aria-posinset","aria-setsize"],superclassRole:["article"]},definition:{type:"structure",allowedAttrs:["aria-expanded"],superclassRole:["section"]},deletion:{type:"structure",superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},dialog:{type:"widget",allowedAttrs:["aria-expanded","aria-modal"],superclassRole:["window"],accessibleNameRequired:!0},directory:{type:"structure",allowedAttrs:["aria-expanded"],superclassRole:["list"],nameFromContent:!0},document:{type:"structure",allowedAttrs:["aria-expanded"],superclassRole:["structure"]},emphasis:{type:"structure",superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},feed:{type:"structure",requiredOwned:["article"],allowedAttrs:["aria-expanded"],superclassRole:["list"]},figure:{type:"structure",allowedAttrs:["aria-expanded"],superclassRole:["section"],nameFromContent:!0},form:{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},grid:{type:"composite",requiredOwned:["rowgroup","row"],allowedAttrs:["aria-level","aria-multiselectable","aria-readonly","aria-activedescendant","aria-colcount","aria-expanded","aria-rowcount"],superclassRole:["composite","table"],accessibleNameRequired:!1},gridcell:{type:"widget",requiredContext:["row"],allowedAttrs:["aria-readonly","aria-required","aria-selected","aria-colindex","aria-colspan","aria-expanded","aria-rowindex","aria-rowspan"],superclassRole:["cell","widget"],nameFromContent:!0},group:{type:"structure",allowedAttrs:["aria-activedescendant","aria-expanded"],superclassRole:["section"]},heading:{type:"structure",requiredAttrs:["aria-level"],allowedAttrs:["aria-expanded"],superclassRole:["sectionhead"],accessibleNameRequired:!1,nameFromContent:!0},img:{type:"structure",allowedAttrs:["aria-expanded"],superclassRole:["section"],accessibleNameRequired:!0,childrenPresentational:!0},input:{type:"abstract",superclassRole:["widget"]},insertion:{type:"structure",superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},landmark:{type:"abstract",superclassRole:["section"]},link:{type:"widget",allowedAttrs:["aria-expanded"],superclassRole:["command"],accessibleNameRequired:!0,nameFromContent:!0},list:{type:"structure",requiredOwned:["listitem"],allowedAttrs:["aria-expanded"],superclassRole:["section"]},listbox:{type:"widget",requiredOwned:["group","option"],allowedAttrs:["aria-multiselectable","aria-readonly","aria-required","aria-activedescendant","aria-expanded","aria-orientation"],superclassRole:["select"],accessibleNameRequired:!0},listitem:{type:"structure",requiredContext:["list"],allowedAttrs:["aria-level","aria-posinset","aria-setsize","aria-expanded"],superclassRole:["section"],nameFromContent:!0},log:{type:"widget",allowedAttrs:["aria-expanded"],superclassRole:["section"]},main:{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},marquee:{type:"widget",allowedAttrs:["aria-expanded"],superclassRole:["section"]},math:{type:"structure",allowedAttrs:["aria-expanded"],superclassRole:["section"],childrenPresentational:!0},menu:{type:"composite",requiredOwned:["group","menuitemradio","menuitem","menuitemcheckbox","menu","separator"],allowedAttrs:["aria-activedescendant","aria-expanded","aria-orientation"],superclassRole:["select"]},menubar:{type:"composite",requiredOwned:["group","menuitemradio","menuitem","menuitemcheckbox","menu","separator"],allowedAttrs:["aria-activedescendant","aria-expanded","aria-orientation"],superclassRole:["menu"]},menuitem:{type:"widget",requiredContext:["menu","menubar","group"],allowedAttrs:["aria-posinset","aria-setsize","aria-expanded"],superclassRole:["command"],accessibleNameRequired:!0,nameFromContent:!0},menuitemcheckbox:{type:"widget",requiredContext:["menu","menubar","group"],requiredAttrs:["aria-checked"],allowedAttrs:["aria-posinset","aria-readonly","aria-setsize"],superclassRole:["checkbox","menuitem"],accessibleNameRequired:!0,nameFromContent:!0,childrenPresentational:!0},menuitemradio:{type:"widget",requiredContext:["menu","menubar","group"],requiredAttrs:["aria-checked"],allowedAttrs:["aria-posinset","aria-readonly","aria-setsize"],superclassRole:["menuitemcheckbox","radio"],accessibleNameRequired:!0,nameFromContent:!0,childrenPresentational:!0},meter:{type:"structure",requiredAttrs:["aria-valuenow"],allowedAttrs:["aria-valuemax","aria-valuemin","aria-valuetext"],superclassRole:["range"],accessibleNameRequired:!0,childrenPresentational:!0},mark:{type:"structure",superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},navigation:{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},none:{type:"structure",superclassRole:["structure"],prohibitedAttrs:["aria-label","aria-labelledby"]},note:{type:"structure",allowedAttrs:["aria-expanded"],superclassRole:["section"]},option:{type:"widget",requiredContext:["group","listbox"],allowedAttrs:["aria-selected","aria-checked","aria-posinset","aria-setsize"],superclassRole:["input"],accessibleNameRequired:!0,nameFromContent:!0,childrenPresentational:!0},paragraph:{type:"structure",superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},presentation:{type:"structure",superclassRole:["structure"],prohibitedAttrs:["aria-label","aria-labelledby"]},progressbar:{type:"widget",allowedAttrs:["aria-expanded","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext"],superclassRole:["range"],accessibleNameRequired:!0,childrenPresentational:!0},radio:{type:"widget",requiredAttrs:["aria-checked"],allowedAttrs:["aria-posinset","aria-setsize","aria-required"],superclassRole:["input"],accessibleNameRequired:!0,nameFromContent:!0,childrenPresentational:!0},radiogroup:{type:"composite",allowedAttrs:["aria-readonly","aria-required","aria-activedescendant","aria-expanded","aria-orientation"],superclassRole:["select"],accessibleNameRequired:!1},range:{type:"abstract",superclassRole:["widget"]},region:{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"],accessibleNameRequired:!1},roletype:{type:"abstract",superclassRole:[]},row:{type:"structure",requiredContext:["grid","rowgroup","table","treegrid"],requiredOwned:["cell","columnheader","gridcell","rowheader"],allowedAttrs:["aria-colindex","aria-level","aria-rowindex","aria-selected","aria-activedescendant","aria-expanded","aria-posinset","aria-setsize"],superclassRole:["group","widget"],nameFromContent:!0},rowgroup:{type:"structure",requiredContext:["grid","table","treegrid"],requiredOwned:["row"],superclassRole:["structure"],nameFromContent:!0},rowheader:{type:"structure",requiredContext:["row"],allowedAttrs:["aria-sort","aria-colindex","aria-colspan","aria-expanded","aria-readonly","aria-required","aria-rowindex","aria-rowspan","aria-selected"],superclassRole:["cell","gridcell","sectionhead"],accessibleNameRequired:!1,nameFromContent:!0},scrollbar:{type:"widget",requiredAttrs:["aria-valuenow"],allowedAttrs:["aria-controls","aria-orientation","aria-valuemax","aria-valuemin","aria-valuetext"],superclassRole:["range"],childrenPresentational:!0},search:{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},searchbox:{type:"widget",allowedAttrs:["aria-activedescendant","aria-autocomplete","aria-multiline","aria-placeholder","aria-readonly","aria-required"],superclassRole:["textbox"],accessibleNameRequired:!0},section:{type:"abstract",superclassRole:["structure"],nameFromContent:!0},sectionhead:{type:"abstract",superclassRole:["structure"],nameFromContent:!0},select:{type:"abstract",superclassRole:["composite","group"]},separator:{type:"structure",requiredAttrs:["aria-valuenow"],allowedAttrs:["aria-valuemax","aria-valuemin","aria-orientation","aria-valuetext"],superclassRole:["structure","widget"],childrenPresentational:!0},slider:{type:"widget",requiredAttrs:["aria-valuenow"],allowedAttrs:["aria-valuemax","aria-valuemin","aria-orientation","aria-readonly","aria-valuetext"],superclassRole:["input","range"],accessibleNameRequired:!0,childrenPresentational:!0},spinbutton:{type:"widget",allowedAttrs:["aria-valuemax","aria-valuemin","aria-readonly","aria-required","aria-activedescendant","aria-valuetext","aria-valuenow"],superclassRole:["composite","input","range"],accessibleNameRequired:!0},status:{type:"widget",allowedAttrs:["aria-expanded"],superclassRole:["section"]},strong:{type:"structure",superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},structure:{type:"abstract",superclassRole:["roletype"]},subscript:{type:"structure",superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},superscript:{type:"structure",superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},switch:{type:"widget",requiredAttrs:["aria-checked"],allowedAttrs:["aria-readonly"],superclassRole:["checkbox"],accessibleNameRequired:!0,nameFromContent:!0,childrenPresentational:!0},suggestion:{type:"structure",requiredOwned:["insertion","deletion"],superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},tab:{type:"widget",requiredContext:["tablist"],allowedAttrs:["aria-posinset","aria-selected","aria-setsize","aria-expanded"],superclassRole:["sectionhead","widget"],nameFromContent:!0,childrenPresentational:!0},table:{type:"structure",requiredOwned:["rowgroup","row"],allowedAttrs:["aria-colcount","aria-rowcount","aria-expanded"],superclassRole:["section"],accessibleNameRequired:!1,nameFromContent:!0},tablist:{type:"composite",requiredOwned:["tab"],allowedAttrs:["aria-level","aria-multiselectable","aria-orientation","aria-activedescendant","aria-expanded"],superclassRole:["composite"]},tabpanel:{type:"widget",allowedAttrs:["aria-expanded"],superclassRole:["section"],accessibleNameRequired:!1},term:{type:"structure",allowedAttrs:["aria-expanded"],superclassRole:["section"],nameFromContent:!0},text:{type:"structure",superclassRole:["section"],nameFromContent:!0},textbox:{type:"widget",allowedAttrs:["aria-activedescendant","aria-autocomplete","aria-multiline","aria-placeholder","aria-readonly","aria-required"],superclassRole:["input"],accessibleNameRequired:!0},time:{type:"structure",superclassRole:["section"]},timer:{type:"widget",allowedAttrs:["aria-expanded"],superclassRole:["status"]},toolbar:{type:"structure",allowedAttrs:["aria-orientation","aria-activedescendant","aria-expanded"],superclassRole:["group"],accessibleNameRequired:!0},tooltip:{type:"structure",allowedAttrs:["aria-expanded"],superclassRole:["section"],nameFromContent:!0},tree:{type:"composite",requiredOwned:["group","treeitem"],allowedAttrs:["aria-multiselectable","aria-required","aria-activedescendant","aria-expanded","aria-orientation"],superclassRole:["select"],accessibleNameRequired:!1},treegrid:{type:"composite",requiredOwned:["rowgroup","row"],allowedAttrs:["aria-activedescendant","aria-colcount","aria-expanded","aria-level","aria-multiselectable","aria-orientation","aria-readonly","aria-required","aria-rowcount"],superclassRole:["grid","tree"],accessibleNameRequired:!1},treeitem:{type:"widget",requiredContext:["group","tree"],allowedAttrs:["aria-checked","aria-expanded","aria-level","aria-posinset","aria-selected","aria-setsize"],superclassRole:["listitem","option"],accessibleNameRequired:!0,nameFromContent:!0},widget:{type:"abstract",superclassRole:["roletype"]},window:{type:"abstract",superclassRole:["roletype"]}},oo={a:{variant:{href:{matches:"[href]",contentTypes:["interactive","phrasing","flow"],allowedRoles:["button","checkbox","menuitem","menuitemcheckbox","menuitemradio","option","radio","switch","tab","treeitem","doc-backlink","doc-biblioref","doc-glossref","doc-noteref"],namingMethods:["subtreeText"]},default:{contentTypes:["phrasing","flow"],allowedRoles:!0}}},abbr:{contentTypes:["phrasing","flow"],allowedRoles:!0},address:{contentTypes:["flow"],allowedRoles:!0},area:{variant:{href:{matches:"[href]",allowedRoles:!1},default:{allowedRoles:["button","link"]}},contentTypes:["phrasing","flow"],namingMethods:["altText"]},article:{contentTypes:["sectioning","flow"],allowedRoles:["feed","presentation","none","document","application","main","region"],shadowRoot:!0},aside:{contentTypes:["sectioning","flow"],allowedRoles:["feed","note","presentation","none","region","search","doc-dedication","doc-example","doc-footnote","doc-pullquote","doc-tip"]},audio:{variant:{controls:{matches:"[controls]",contentTypes:["interactive","embedded","phrasing","flow"]},default:{contentTypes:["embedded","phrasing","flow"]}},allowedRoles:["application"],chromiumRole:"Audio"},b:{contentTypes:["phrasing","flow"],allowedRoles:!0},base:{allowedRoles:!1,noAriaAttrs:!0},bdi:{contentTypes:["phrasing","flow"],allowedRoles:!0},bdo:{contentTypes:["phrasing","flow"],allowedRoles:!0},blockquote:{contentTypes:["flow"],allowedRoles:!0,shadowRoot:!0},body:{allowedRoles:!1,shadowRoot:!0},br:{contentTypes:["phrasing","flow"],allowedRoles:["presentation","none"],namingMethods:["titleText","singleSpace"]},button:{contentTypes:["interactive","phrasing","flow"],allowedRoles:["checkbox","combobox","link","menuitem","menuitemcheckbox","menuitemradio","option","radio","switch","tab"],namingMethods:["subtreeText"]},canvas:{allowedRoles:!0,contentTypes:["embedded","phrasing","flow"],chromiumRole:"Canvas"},caption:{allowedRoles:!1},cite:{contentTypes:["phrasing","flow"],allowedRoles:!0},code:{contentTypes:["phrasing","flow"],allowedRoles:!0},col:{allowedRoles:!1,noAriaAttrs:!0},colgroup:{allowedRoles:!1,noAriaAttrs:!0},data:{contentTypes:["phrasing","flow"],allowedRoles:!0},datalist:{contentTypes:["phrasing","flow"],allowedRoles:!1,implicitAttrs:{"aria-multiselectable":"false"}},dd:{allowedRoles:!1},del:{contentTypes:["phrasing","flow"],allowedRoles:!0},dfn:{contentTypes:["phrasing","flow"],allowedRoles:!0},details:{contentTypes:["interactive","flow"],allowedRoles:!1},dialog:{contentTypes:["flow"],allowedRoles:["alertdialog"]},div:{contentTypes:["flow"],allowedRoles:!0,shadowRoot:!0},dl:{contentTypes:["flow"],allowedRoles:["group","list","presentation","none"],chromiumRole:"DescriptionList"},dt:{allowedRoles:["listitem"]},em:{contentTypes:["phrasing","flow"],allowedRoles:!0},embed:{contentTypes:["interactive","embedded","phrasing","flow"],allowedRoles:["application","document","img","presentation","none"],chromiumRole:"EmbeddedObject"},fieldset:{contentTypes:["flow"],allowedRoles:["none","presentation","radiogroup"],namingMethods:["fieldsetLegendText"]},figcaption:{allowedRoles:["group","none","presentation"]},figure:{contentTypes:["flow"],allowedRoles:!0,namingMethods:["figureText","titleText"]},footer:{contentTypes:["flow"],allowedRoles:["group","none","presentation","doc-footnote"],shadowRoot:!0},form:{contentTypes:["flow"],allowedRoles:["search","none","presentation"]},h1:{contentTypes:["heading","flow"],allowedRoles:["none","presentation","tab","doc-subtitle"],shadowRoot:!0,implicitAttrs:{"aria-level":"1"}},h2:{contentTypes:["heading","flow"],allowedRoles:["none","presentation","tab","doc-subtitle"],shadowRoot:!0,implicitAttrs:{"aria-level":"2"}},h3:{contentTypes:["heading","flow"],allowedRoles:["none","presentation","tab","doc-subtitle"],shadowRoot:!0,implicitAttrs:{"aria-level":"3"}},h4:{contentTypes:["heading","flow"],allowedRoles:["none","presentation","tab","doc-subtitle"],shadowRoot:!0,implicitAttrs:{"aria-level":"4"}},h5:{contentTypes:["heading","flow"],allowedRoles:["none","presentation","tab","doc-subtitle"],shadowRoot:!0,implicitAttrs:{"aria-level":"5"}},h6:{contentTypes:["heading","flow"],allowedRoles:["none","presentation","tab","doc-subtitle"],shadowRoot:!0,implicitAttrs:{"aria-level":"6"}},head:{allowedRoles:!1,noAriaAttrs:!0},header:{contentTypes:["flow"],allowedRoles:["group","none","presentation","doc-footnote"],shadowRoot:!0},hgroup:{contentTypes:["heading","flow"],allowedRoles:!0},hr:{contentTypes:["flow"],allowedRoles:["none","presentation","doc-pagebreak"],namingMethods:["titleText","singleSpace"]},html:{allowedRoles:!1,noAriaAttrs:!0},i:{contentTypes:["phrasing","flow"],allowedRoles:!0},iframe:{contentTypes:["interactive","embedded","phrasing","flow"],allowedRoles:["application","document","img","none","presentation"],chromiumRole:"Iframe"},img:{variant:{nonEmptyAlt:{matches:[{attributes:{alt:"/.+/"}},{hasAccessibleName:!0}],allowedRoles:["button","checkbox","link","menuitem","menuitemcheckbox","menuitemradio","option","progressbar","radio","scrollbar","separator","slider","switch","tab","treeitem","doc-cover"]},usemap:{matches:"[usemap]",contentTypes:["interactive","embedded","flow"]},default:{allowedRoles:["presentation","none"],contentTypes:["embedded","flow"]}},namingMethods:["altText"]},input:{variant:{button:{matches:{properties:{type:"button"}},allowedRoles:["checkbox","combobox","link","menuitem","menuitemcheckbox","menuitemradio","option","radio","switch","tab"]},buttonType:{matches:{properties:{type:["button","submit","reset"]}},namingMethods:["valueText","titleText","buttonDefaultText"]},checkboxPressed:{matches:{properties:{type:"checkbox"},attributes:{"aria-pressed":"/.*/"}},allowedRoles:["button","menuitemcheckbox","option","switch"],implicitAttrs:{"aria-checked":"false"}},checkbox:{matches:{properties:{type:"checkbox"},attributes:{"aria-pressed":null}},allowedRoles:["menuitemcheckbox","option","switch"],implicitAttrs:{"aria-checked":"false"}},noRoles:{matches:{properties:{type:["color","date","datetime-local","file","month","number","password","range","reset","submit","time","week"]}},allowedRoles:!1},hidden:{matches:{properties:{type:"hidden"}},contentTypes:["flow"],allowedRoles:!1,noAriaAttrs:!0},image:{matches:{properties:{type:"image"}},allowedRoles:["link","menuitem","menuitemcheckbox","menuitemradio","radio","switch"],namingMethods:["altText","valueText","labelText","titleText","buttonDefaultText"]},radio:{matches:{properties:{type:"radio"}},allowedRoles:["menuitemradio"],implicitAttrs:{"aria-checked":"false"}},textWithList:{matches:{properties:{type:"text"},attributes:{list:"/.*/"}},allowedRoles:!1},default:{contentTypes:["interactive","flow"],allowedRoles:["combobox","searchbox","spinbutton"],implicitAttrs:{"aria-valuenow":""},namingMethods:["labelText","placeholderText"]}}},ins:{contentTypes:["phrasing","flow"],allowedRoles:!0},kbd:{contentTypes:["phrasing","flow"],allowedRoles:!0},label:{contentTypes:["interactive","phrasing","flow"],allowedRoles:!1,chromiumRole:"Label"},legend:{allowedRoles:!1},li:{allowedRoles:["menuitem","menuitemcheckbox","menuitemradio","option","none","presentation","radio","separator","tab","treeitem","doc-biblioentry","doc-endnote"],implicitAttrs:{"aria-setsize":"1","aria-posinset":"1"}},link:{contentTypes:["phrasing","flow"],allowedRoles:!1,noAriaAttrs:!0},main:{contentTypes:["flow"],allowedRoles:!1,shadowRoot:!0},map:{contentTypes:["phrasing","flow"],allowedRoles:!1,noAriaAttrs:!0},math:{contentTypes:["embedded","phrasing","flow"],allowedRoles:!1},mark:{contentTypes:["phrasing","flow"],allowedRoles:!0},menu:{contentTypes:["flow"],allowedRoles:["directory","group","listbox","menu","menubar","none","presentation","radiogroup","tablist","toolbar","tree"]},meta:{variant:{itemprop:{matches:"[itemprop]",contentTypes:["phrasing","flow"]}},allowedRoles:!1,noAriaAttrs:!0},meter:{contentTypes:["phrasing","flow"],allowedRoles:!1,chromiumRole:"progressbar"},nav:{contentTypes:["sectioning","flow"],allowedRoles:["doc-index","doc-pagelist","doc-toc","menu","menubar","none","presentation","tablist"],shadowRoot:!0},noscript:{contentTypes:["phrasing","flow"],allowedRoles:!1,noAriaAttrs:!0},object:{variant:{usemap:{matches:"[usemap]",contentTypes:["interactive","embedded","phrasing","flow"]},default:{contentTypes:["embedded","phrasing","flow"]}},allowedRoles:["application","document","img"],chromiumRole:"PluginObject"},ol:{contentTypes:["flow"],allowedRoles:["directory","group","listbox","menu","menubar","none","presentation","radiogroup","tablist","toolbar","tree"]},optgroup:{allowedRoles:!1},option:{allowedRoles:!1,implicitAttrs:{"aria-selected":"false"}},output:{contentTypes:["phrasing","flow"],allowedRoles:!0,namingMethods:["subtreeText"]},p:{contentTypes:["flow"],allowedRoles:!0,shadowRoot:!0},param:{allowedRoles:!1,noAriaAttrs:!0},picture:{contentTypes:["phrasing","flow"],allowedRoles:!1,noAriaAttrs:!0},pre:{contentTypes:["flow"],allowedRoles:!0},progress:{contentTypes:["phrasing","flow"],allowedRoles:!1,implicitAttrs:{"aria-valuemax":"100","aria-valuemin":"0","aria-valuenow":"0"}},q:{contentTypes:["phrasing","flow"],allowedRoles:!0},rp:{allowedRoles:!0},rt:{allowedRoles:!0},ruby:{contentTypes:["phrasing","flow"],allowedRoles:!0},s:{contentTypes:["phrasing","flow"],allowedRoles:!0},samp:{contentTypes:["phrasing","flow"],allowedRoles:!0},script:{contentTypes:["phrasing","flow"],allowedRoles:!1,noAriaAttrs:!0},section:{contentTypes:["sectioning","flow"],allowedRoles:["alert","alertdialog","application","banner","complementary","contentinfo","dialog","document","feed","group","log","main","marquee","navigation","none","note","presentation","search","status","tabpanel","doc-abstract","doc-acknowledgments","doc-afterword","doc-appendix","doc-bibliography","doc-chapter","doc-colophon","doc-conclusion","doc-credit","doc-credits","doc-dedication","doc-endnotes","doc-epigraph","doc-epilogue","doc-errata","doc-example","doc-foreword","doc-glossary","doc-index","doc-introduction","doc-notice","doc-pagelist","doc-part","doc-preface","doc-prologue","doc-pullquote","doc-qna","doc-toc"],shadowRoot:!0},select:{variant:{combobox:{matches:{attributes:{multiple:null,size:[null,"1"]}},allowedRoles:["menu"]},default:{allowedRoles:!1}},contentTypes:["interactive","phrasing","flow"],implicitAttrs:{"aria-valuenow":""},namingMethods:["labelText"]},slot:{contentTypes:["phrasing","flow"],allowedRoles:!1,noAriaAttrs:!0},small:{contentTypes:["phrasing","flow"],allowedRoles:!0},source:{allowedRoles:!1,noAriaAttrs:!0},span:{contentTypes:["phrasing","flow"],allowedRoles:!0,shadowRoot:!0},strong:{contentTypes:["phrasing","flow"],allowedRoles:!0},style:{allowedRoles:!1,noAriaAttrs:!0},svg:{contentTypes:["embedded","phrasing","flow"],allowedRoles:!0,chromiumRole:"SVGRoot",namingMethods:["svgTitleText"]},sub:{contentTypes:["phrasing","flow"],allowedRoles:!0},summary:{allowedRoles:!1,namingMethods:["subtreeText"]},sup:{contentTypes:["phrasing","flow"],allowedRoles:!0},table:{contentTypes:["flow"],allowedRoles:!0,namingMethods:["tableCaptionText","tableSummaryText"]},tbody:{allowedRoles:!0},template:{contentTypes:["phrasing","flow"],allowedRoles:!1,noAriaAttrs:!0},textarea:{contentTypes:["interactive","phrasing","flow"],allowedRoles:!1,implicitAttrs:{"aria-valuenow":"","aria-multiline":"true"},namingMethods:["labelText","placeholderText"]},tfoot:{allowedRoles:!0},thead:{allowedRoles:!0},time:{contentTypes:["phrasing","flow"],allowedRoles:!0},title:{allowedRoles:!1,noAriaAttrs:!0},td:{allowedRoles:!0},th:{allowedRoles:!0},tr:{allowedRoles:!0},track:{allowedRoles:!1,noAriaAttrs:!0},u:{contentTypes:["phrasing","flow"],allowedRoles:!0},ul:{contentTypes:["flow"],allowedRoles:["directory","group","listbox","menu","menubar","none","presentation","radiogroup","tablist","toolbar","tree"]},var:{contentTypes:["phrasing","flow"],allowedRoles:!0},video:{variant:{controls:{matches:"[controls]",contentTypes:["interactive","embedded","phrasing","flow"]},default:{contentTypes:["embedded","phrasing","flow"]}},allowedRoles:["application"],chromiumRole:"video"},wbr:{contentTypes:["phrasing","flow"],allowedRoles:["presentation","none"]}},uo={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},io={ariaAttrs:ao,ariaRoles:O({},ro,{"doc-abstract":{type:"section",allowedAttrs:["aria-expanded"],superclassRole:["section"]},"doc-acknowledgments":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-afterword":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-appendix":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-backlink":{type:"link",allowedAttrs:["aria-expanded"],nameFromContent:!0,superclassRole:["link"]},"doc-biblioentry":{type:"listitem",allowedAttrs:["aria-expanded","aria-level","aria-posinset","aria-setsize"],superclassRole:["listitem"],deprecated:!0},"doc-bibliography":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-biblioref":{type:"link",allowedAttrs:["aria-expanded"],nameFromContent:!0,superclassRole:["link"]},"doc-chapter":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-colophon":{type:"section",allowedAttrs:["aria-expanded"],superclassRole:["section"]},"doc-conclusion":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-cover":{type:"img",allowedAttrs:["aria-expanded"],superclassRole:["img"]},"doc-credit":{type:"section",allowedAttrs:["aria-expanded"],superclassRole:["section"]},"doc-credits":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-dedication":{type:"section",allowedAttrs:["aria-expanded"],superclassRole:["section"]},"doc-endnote":{type:"listitem",allowedAttrs:["aria-expanded","aria-level","aria-posinset","aria-setsize"],superclassRole:["listitem"],deprecated:!0},"doc-endnotes":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-epigraph":{type:"section",allowedAttrs:["aria-expanded"],superclassRole:["section"]},"doc-epilogue":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-errata":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-example":{type:"section",allowedAttrs:["aria-expanded"],superclassRole:["section"]},"doc-footnote":{type:"section",allowedAttrs:["aria-expanded"],superclassRole:["section"]},"doc-foreword":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-glossary":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-glossref":{type:"link",allowedAttrs:["aria-expanded"],nameFromContent:!0,superclassRole:["link"]},"doc-index":{type:"navigation",allowedAttrs:["aria-expanded"],superclassRole:["navigation"]},"doc-introduction":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-noteref":{type:"link",allowedAttrs:["aria-expanded"],nameFromContent:!0,superclassRole:["link"]},"doc-notice":{type:"note",allowedAttrs:["aria-expanded"],superclassRole:["note"]},"doc-pagebreak":{type:"separator",allowedAttrs:["aria-expanded","aria-orientation"],superclassRole:["separator"],childrenPresentational:!0},"doc-pagelist":{type:"navigation",allowedAttrs:["aria-expanded"],superclassRole:["navigation"]},"doc-part":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-preface":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-prologue":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-pullquote":{type:"none",superclassRole:["none"]},"doc-qna":{type:"section",allowedAttrs:["aria-expanded"],superclassRole:["section"]},"doc-subtitle":{type:"sectionhead",allowedAttrs:["aria-expanded"],superclassRole:["sectionhead"]},"doc-tip":{type:"note",allowedAttrs:["aria-expanded"],superclassRole:["note"]},"doc-toc":{type:"navigation",allowedAttrs:["aria-expanded"],superclassRole:["navigation"]}},{"graphics-document":{type:"structure",superclassRole:["document"],accessibleNameRequired:!0},"graphics-object":{type:"structure",superclassRole:["group"],nameFromContent:!0},"graphics-symbol":{type:"structure",superclassRole:["img"],accessibleNameRequired:!0,childrenPresentational:!0}}),htmlElms:oo,cssColors:uo},lo=O({},io),so=lo,co=function(e){return!!(e=so.ariaRoles[e])&&!!e.unsupported},po=function(e){var t=(n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).allowAbstract,n=void 0!==(n=n.flagUnsupported)&&n,a=so.ariaRoles[e],r=co(e);return!(!a||n&&r||!t&&"abstract"===a.type)},Do=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=t.fallback,a=t.abstracts,r=t.dpub;return 1===(e=e instanceof Vt?e:Tn(e)).props.nodeType&&(t=(e.attr("role")||"").trim().toLowerCase(),(n?Bi(t):[t]).find((function(e){return!(!r&&"doc-"===e.substr(0,4))&&po(e,{allowAbstract:a})})))||null},fo=function(e){return Object.keys(so.htmlElms).filter((function(t){return(t=so.htmlElms[t]).contentTypes?t.contentTypes.includes(e):!!t.variant&&!(!t.variant.default||!t.variant.default.contentTypes)&&t.variant.default.contentTypes.includes(e)}))},mo=function(){return Nn.get("globalAriaAttrs",(function(){return Object.keys(so.ariaAttrs).filter((function(e){return so.ariaAttrs[e].global}))}))},ho=Ya((function(e){for(var t=[],n=e.rows,a=0,r=n.length;a<r;a++)for(var o=n[a].cells,u=(t[a]=t[a]||[],0),i=0,l=o.length;i<l;i++)for(var s=0;s<o[i].colSpan;s++){for(var c=o[i].getAttribute("rowspan"),d=0===parseInt(c)||0===o[i].rowspan?n.length:o[i].rowSpan,p=0;p<d;p++){for(t[a+p]=t[a+p]||[];t[a+p][u];)u++;t[a+p][u]=o[i]}u++}return t})),go=Ya((function(e,t){var n,a;for(t=t||ho(Wa(e,"table")),n=0;n<t.length;n++)if(t[n]&&-1!==(a=t[n].indexOf(e)))return{x:a,y:n}})),bo=function(e){var t,n=e instanceof Vt?e:Tn(e),a=(e=n.actualNode,n.attr("scope")),r=n.attr("role");if(["td","th"].includes(n.props.nodeName))return"columnheader"===r?"col":"rowheader"===r?"row":"col"===a||"row"===a?a:"th"===n.props.nodeName&&(n.actualNode?(r=ho(Wa(e,"table")))[(t=go(e,r)).y].reduce((function(e,t){return e&&"TH"===t.nodeName.toUpperCase()}),!0)?"col":r.map((function(e){return e[t.x]})).reduce((function(e,t){return e&&t&&"TH"===t.nodeName.toUpperCase()}),!0)?"row":"auto":"auto");throw new TypeError("Expected TD or TH element")},yo=function(e){return-1!==["col","auto"].indexOf(bo(e))},vo=function(e){return["row","auto"].includes(bo(e))},Fo=function(e){return e?e.replace(/\\r\\n/g,"\\n").replace(/\\u00A0/g," ").replace(/[\\s]{2,}/g," ").trim():""},wo=function(e){var t=e instanceof Vt?e:Tn(e);if(t&&!Sr(t))switch(t.props.nodeName){case"a":case"area":if(t.hasAttr("href"))return!0;break;case"input":return"hidden"!==t.props.type;case"textarea":case"select":case"summary":case"button":return!0;case"details":return!Gl(t,"summary").length}return!1};function Eo(e){return 1===(e=e instanceof Vt?e:Tn(e)).props.nodeType&&!(Sr(e)||!wo(e)&&(!(e=e.attr("tabindex"))||isNaN(parseInt(e,10))))}var Co=fo("sectioning").map((function(e){return"".concat(e,":not([role])")})).join(", ")+" , main:not([role]), [role=article], [role=complementary], [role=main], [role=navigation], [role=region]";function xo(e){var t=Fo(to(e));e=Fo(no(e));return t||e}var Ao={a:function(e){return e.hasAttr("href")?"link":null},area:function(e){return e.hasAttr("href")?"link":null},article:"article",aside:"complementary",body:"document",button:"button",datalist:"listbox",dd:"definition",dfn:"term",details:"group",dialog:"dialog",dt:"term",fieldset:"group",figure:"figure",footer:function(e){return Hn(e,Co)?null:"contentinfo"},form:function(e){return xo(e)?"form":null},h1:"heading",h2:"heading",h3:"heading",h4:"heading",h5:"heading",h6:"heading",header:function(e){return Hn(e,Co)?null:"banner"},hr:"separator",img:function(e){var t=e.hasAttr("alt")&&!e.attr("alt"),n=mo().find((function(t){return e.hasAttr(t)}));return!t||n||Eo(e)?"img":"presentation"},input:function(e){var t,n;switch(e.hasAttr("list")&&(n=(t=Zr(e.actualNode,"list").filter((function(e){return!!e}))[0])&&"datalist"===t.nodeName.toLowerCase()),e.props.type){case"checkbox":return"checkbox";case"number":return"spinbutton";case"radio":return"radio";case"range":return"slider";case"search":return n?"combobox":"searchbox";case"button":case"image":case"reset":case"submit":return"button";case"text":case"tel":case"url":case"email":case"":return n?"combobox":"textbox";default:return"textbox"}},li:"listitem",main:"main",math:"math",menu:"list",nav:"navigation",ol:"list",optgroup:"group",option:"option",output:"status",progress:"progressbar",section:function(e){return xo(e)?"region":null},select:function(e){return e.hasAttr("multiple")||1<parseInt(e.attr("size"))?"listbox":"combobox"},summary:"button",table:"table",tbody:"rowgroup",td:function(e){return e=Hn(e,"table"),e=Do(e),["grid","treegrid"].includes(e)?"gridcell":"cell"},textarea:"textbox",tfoot:"rowgroup",th:function(e){return yo(e)?"columnheader":vo(e)?"rowheader":void 0},thead:"rowgroup",tr:"row",ul:"list"},ko=function(e,t){var n=r(t);if(Array.isArray(t)&&void 0!==e)return t.includes(e);if("function"===n)return!!t(e);if(null!=e){if(t instanceof RegExp)return t.test(e);if(/^\\/.*\\/$/.test(t))return n=t.substring(1,t.length-1),new RegExp(n).test(e)}return t===e};function Bo(e,t){return ko(!!Au(e),t)}var Ro=function(e,t){if("object"!==r(t)||Array.isArray(t)||t instanceof RegExp)throw new Error("Expect matcher to be an object");return Object.keys(t).every((function(n){return ko(e(n),t[n])}))};function No(e,t){return e instanceof Vt||(e=Tn(e)),Ro((function(t){return e.attr(t)}),t)}function To(e,t){return!!t(e)}function Oo(e,t){return ko(Do(e),t)}function _o(e,t){return ko(zo(e),t)}function So(e,t){return e instanceof Vt||(e=Tn(e)),ko(e.props.nodeName,t)}function Io(e,t){return e instanceof Vt||(e=Tn(e)),Ro((function(t){return e.props[t]}),t)}function Po(e,t){return ko(Go(e),t)}var Mo={hasAccessibleName:Bo,attributes:No,condition:To,explicitRole:Oo,implicitRole:_o,nodeName:So,properties:Io,semanticRole:Po},Lo=function e(t,n){return t instanceof Vt||(t=Tn(t)),Array.isArray(n)?n.some((function(n){return e(t,n)})):"string"==typeof n?Un(t,n):Object.keys(n).every((function(e){var a;if(Mo[e])return a=n[e],(0,Mo[e])(t,a);throw new Error(\'Unknown matcher type "\'.concat(e,\'"\'))}))},jo=function(e,t){return Lo(e,t)},qo=(jo.hasAccessibleName=Bo,jo.attributes=No,jo.condition=To,jo.explicitRole=Oo,jo.fromDefinition=Lo,jo.fromFunction=Ro,jo.fromPrimative=ko,jo.implicitRole=_o,jo.nodeName=So,jo.properties=Io,jo.semanticRole=Po,jo),Vo=function(e){var t=(1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).noMatchAccessibleName,n=void 0!==t&&t,a=so.htmlElms[e.props.nodeName];if(!a)return{};if(!a.variant)return a;var r,o,u=a.variant,i=R(a,l);for(r in u)if(u.hasOwnProperty(r)&&"default"!==r){for(var c=u[r],d=c.matches,p=R(c,s),D=Array.isArray(d)?d:[d],f=0;f<D.length&&n;f++)if(D[f].hasOwnProperty("hasAccessibleName"))return a;if(qo(e,d))for(var m in p)p.hasOwnProperty(m)&&(i[m]=p[m])}for(o in u.default)u.default.hasOwnProperty(o)&&void 0===i[o]&&(i[o]=u.default[o]);return i},zo=function(e){var t,n=(1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).chromium,a=e instanceof Vt?e:Tn(e);if(e=a.actualNode,a)return t=a.props.nodeName,!(t=Ao[t])&&n?Vo(a).chromiumRole||null:"function"==typeof t?t(a):t||null;throw new ReferenceError("Cannot get implicit role of a node outside the current scope.")},$o={td:["tr"],th:["tr"],tr:["thead","tbody","tfoot","table"],thead:["table"],tbody:["table"],tfoot:["table"],li:["ol","ul"],dt:["dl","div"],dd:["dl","div"],div:["dl"]};function Uo(e,t){var n=t.chromium;t=R(t,c);return(n=zo(e,{chromium:n}))?function e(t,n){var a=$o[t.props.nodeName];if(a){if(t.parent)return a.includes(t.parent.props.nodeName)?(a=Do(t.parent,n),["none","presentation"].includes(a)&&!Ho(t.parent)?a:a?null:e(t.parent,n)):null;if(t.actualNode)throw new ReferenceError("Cannot determine role presentational inheritance of a required parent outside the current scope.")}return null}(e,t)||n:null}function Ho(e){return mo().some((function(t){return e.hasAttr(t)}))||Eo(e)}var Go=function(e){var t=(n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).noPresentational,n=function(e,t){var n,a=(r=1<arguments.length&&void 0!==t?t:{}).noImplicit,r=R(r,d),o=e instanceof Vt?e:Tn(e);return 1!==o.props.nodeType?null:!(n=Do(o,r))||["presentation","none"].includes(n)&&Ho(o)?a?null:Uo(o,r):n}(e,R(n,p));return t&&["presentation","none"].includes(n)?null:n},Wo=["iframe"],Ko=function(e){var t=e instanceof Vt?e:Tn(e);return 1!==t.props.nodeType||!e.hasAttr("title")||!jo(t,Wo)&&["none","presentation"].includes(Go(t))?"":t.attr("title")},Yo=function(e){var t,n,a=(1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).strict;return 1===(e=e instanceof Vt?e:Tn(e)).props.nodeType&&(t=Go(e),!(!(n=so.ariaRoles[t])||!n.nameFromContent)||!a&&(!n||["presentation","none"].includes(t)))},Jo=function(e){var t=e.actualNode,n=e.children;if(n)return e.hasAttr("aria-owns")?(e=Zr(t,"aria-owns").filter((function(e){return!!e})).map((function(e){return o.utils.getNodeFromTree(e)})),[].concat(N(n),N(e))):N(n);throw new Error("getOwnedVirtual requires a virtual node")},Xo=fo("phrasing").concat(["#text"]),Qo=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=Au.alreadyProcessed;t.startNode=t.startNode||e;var a=(o=t).strict,r=o.inControlContext,o=o.inLabelledByContext,u=Vo(e,{noMatchAccessibleName:!0}).contentTypes;return n(e,t)||1!==e.props.nodeType||null!=u&&u.includes("embedded")||!Yo(e,{strict:a})&&!t.subtreeDescendant?"":(a||(t=O({subtreeDescendant:!r&&!o},t)),Jo(e).reduce((function(e,n){var a=t,r=n.props.nodeName;return(n=Au(n,a))?(Xo.includes(r)||(" "!==n[0]&&(n+=" "),e&&" "!==e[e.length-1]&&(n=" "+n)),e+n):e}),""))},Zo=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=Au.alreadyProcessed;if(t.inControlContext||t.inLabelledByContext||n(e,t))return"";t.startNode||(t.startNode=e);var a,r=O({inControlContext:!0},t);n=function(e){if(!e.attr("id"))return[];if(e.actualNode)return Ha({elm:"label",attr:"for",value:e.attr("id"),context:e.actualNode});throw new TypeError("Cannot resolve explicit label reference for non-DOM nodes")}(e);return(t=Hn(e,"label"))?(a=[].concat(N(n),[t.actualNode])).sort(wl):a=n,a.map((function(e){return eo(e,r)})).filter((function(e){return""!==e})).join(" ")},eu={submit:"Submit",image:"Submit",reset:"Reset",button:""};function tu(e,t){return t.attr(e)||""}function nu(e,t,n){t=t.actualNode;var a=[e=e.toLowerCase(),t.nodeName.toLowerCase()].join(",");return(t=t.querySelector(a))&&t.nodeName.toLowerCase()===e?eo(t,n):""}var au={valueText:function(e){return e.actualNode.value||""},buttonDefaultText:function(e){return e=e.actualNode,eu[e.type]||""},tableCaptionText:nu.bind(null,"caption"),figureText:nu.bind(null,"figcaption"),svgTitleText:nu.bind(null,"title"),fieldsetLegendText:nu.bind(null,"legend"),altText:tu.bind(null,"alt"),tableSummaryText:tu.bind(null,"summary"),titleText:Ko,subtreeText:Qo,labelText:Zo,singleSpace:function(){return" "},placeholderText:tu.bind(null,"placeholder")},ru=function(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},a=e.actualNode;return 1!==e.props.nodeType||["presentation","none"].includes(Go(e))?"":(t=(Vo(e,{noMatchAccessibleName:!0}).namingMethods||[]).map((function(e){return au[e]})).reduce((function(t,a){return t||a(e,n)}),""),n.debug&&o.log(t||"{empty-value}",a,n),t)},ou={accessibleNameFromFieldValue:["combobox","listbox","progressbar"]};function uu(e){return e=e instanceof Vt?e:Tn(e),iu(e)}var iu=Ya((function(e,t){return!or(e)&&(e.actualNode&&"area"===e.props.nodeName?!cr(e,iu):!Dr(e,{skipAncestors:!0,isAncestor:t})&&(!e.parent||iu(e.parent,!0)))})),lu=function e(t,n,a){var r=t instanceof Vt?t:Tn(t),o=n?uu:wr,u=!t.actualNode||t.actualNode&&o(t);o=r.children.map((function(t){var r=(o=t.props).nodeType,o=o.nodeValue;if(3===r){if(o&&u)return o}else if(!a)return e(t,n)})).join("");return Fo(o)},su=["button","checkbox","color","file","hidden","image","password","radio","reset","submit"],cu=function(e){var t=(e=e instanceof Vt?e:Tn(e)).props.nodeName;return"textarea"===t||"input"===t&&!su.includes((e.attr("type")||"").toLowerCase())},du=function(e){return"select"===(e=e instanceof Vt?e:Tn(e)).props.nodeName},pu=function(e){return"textbox"===Do(e)},Du=function(e){return"listbox"===Do(e)},fu=function(e){return"combobox"===Do(e)},mu=["progressbar","scrollbar","slider","spinbutton"],hu=function(e){return e=Do(e),mu.includes(e)},gu=["textbox","progressbar","scrollbar","slider","spinbutton","combobox","listbox"],bu={nativeTextboxValue:function(e){return e=e instanceof Vt?e:Tn(e),cu(e)&&e.props.value||""},nativeSelectValue:function(e){if(e=e instanceof Vt?e:Tn(e),!du(e))return"";var t=(e=Gl(e,"option")).filter((function(e){return e.props.selected}));return t.length||t.push(e[0]),t.map((function(e){return lu(e)})).join(" ")||""},ariaTextboxValue:function(e){var t=(e=e instanceof Vt?e:Tn(e)).actualNode;return pu(e)?t&&Dr(t)?t.textContent:lu(e,!0):""},ariaListboxValue:yu,ariaComboboxValue:function(e,t){e=e instanceof Vt?e:Tn(e);return fu(e)&&(e=Jo(e).filter((function(e){return"listbox"===Go(e)}))[0])?yu(e,t):""},ariaRangeValue:function(e){e=e instanceof Vt?e:Tn(e);return hu(e)&&e.hasAttr("aria-valuenow")?(e=+e.attr("aria-valuenow"),isNaN(e)?"0":String(e)):""}};function yu(e,t){e=e instanceof Vt?e:Tn(e);return Du(e)&&0!==(e=Jo(e).filter((function(e){return"option"===Go(e)&&"true"===e.attr("aria-selected")}))).length?Au(e[0],t):""}var vu=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=e.actualNode,a=ou.accessibleNameFromFieldValue||[],r=Go(e);return t.startNode===e||!gu.includes(r)||a.includes(r)?"":(a=Object.keys(bu).map((function(e){return bu[e]})).reduce((function(n,a){return n||a(e,t)}),""),t.debug&&Lt(a||"{empty-value}",n,t),a)};function Fu(){return/[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26F9(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC3\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC08\\uDC26](?:\\u200D\\u2B1B)?|[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC6F(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDD75(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE88\\uDE90-\\uDEBD\\uDEBF-\\uDEC2\\uDECE-\\uDEDB\\uDEE0-\\uDEE8]|\\uDD3C(?:\\u200D[\\u2640\\u2642]\\uFE0F?|\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g}var wu=function(e,t){var n=t.emoji,a=t.nonBmp;t=t.punctuations;return n?/[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26F9(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC3\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC08\\uDC26](?:\\u200D\\u2B1B)?|[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC6F(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDD75(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE88\\uDE90-\\uDEBD\\uDEBF-\\uDEC2\\uDECE-\\uDEDB\\uDEE0-\\uDEE8]|\\uDD3C(?:\\u200D[\\u2640\\u2642]\\uFE0F?|\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g.test(e):a?/[\\u1D00-\\u1D7F\\u1D80-\\u1DBF\\u1DC0-\\u1DFF\\u20A0-\\u20CF\\u20D0-\\u20FF\\u2100-\\u214F\\u2150-\\u218F\\u2190-\\u21FF\\u2200-\\u22FF\\u2300-\\u23FF\\u2400-\\u243F\\u2440-\\u245F\\u2460-\\u24FF\\u2500-\\u257F\\u2580-\\u259F\\u25A0-\\u25FF\\u2600-\\u26FF\\u2700-\\u27BF\\uE000-\\uF8FF]/g.test(e)||/[\\uDB80-\\uDBBF][\\uDC00-\\uDFFF]/g.test(e):!!t&&/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\\'!"#$%&\\xa3\\xa2\\xa5\\xa7\\u20ac()*+,\\-.\\/:;<=>?@\\[\\]^_`{|}~\\xb1]/g.test(e)},Eu=function(e){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:.15,r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:3,o=e.actualNode.nodeValue.trim();if(!Fo(o)||wu(o,{emoji:!0,nonBmp:!0}))return!1;var u=Nn.get("canvasContext",(function(){return a.createElement("canvas").getContext("2d")})),i=u.canvas,l=(Nn.get("fonts")||Nn.set("fonts",{}),Nn.get("fonts"));if(l[f=t.getComputedStyle(e.parent.actualNode).getPropertyValue("font-family")]||(l[f]={occurrences:0,numLigatures:0}),(l=l[f]).occurrences>=r){if(l.numLigatures/l.occurrences==1)return!0;if(0===l.numLigatures)return!1}l.occurrences++;var s="".concat(r=30,"px ").concat(f),c=(u.font=s,o.charAt(0)),d=u.measureText(c).width,p=(d<30&&(d*=p=30/d,s="".concat(r*=p,"px ").concat(f)),i.width=d,i.height=r,u.font=s,u.textAlign="left",u.textBaseline="top",u.fillText(c,0,0),new Uint32Array(u.getImageData(0,0,d,r).data.buffer));if(!p.some((function(e){return e})))return l.numLigatures++,!0;u.clearRect(0,0,d,r),u.fillText(o,0,0);var D=new Uint32Array(u.getImageData(0,0,d,r).data.buffer),f=p.reduce((function(e,t,n){return 0===t&&0===D[n]||0!==t&&0!==D[n]?e:++e}),0);i=o.split("").reduce((function(e,t){return e+u.measureText(t).width}),0),s=u.measureText(o).width;return n<=f/p.length&&n<=1-s/i&&(l.numLigatures++,!0)};function Cu(e){var t,n,a,r,u,i=function(e,t){return t.startNode||(t=O({startNode:e},t)),1===e.props.nodeType&&t.inLabelledByContext&&void 0===t.includeHidden&&(t=O({includeHidden:!uu(e)},t)),t}(e,1<arguments.length&&void 0!==arguments[1]?arguments[1]:{});return function(e,t){if(e&&1===e.props.nodeType&&!t.includeHidden)return!uu(e)}(e,i)||(t=e,n=(u=i).ignoreIconLigature,a=u.pixelThreshold,r=null!=(r=u.occurrenceThreshold)?r:u.occuranceThreshold,3===t.props.nodeType&&n&&Eu(t,a,r))?"":(u=[to,no,ru,vu,Qo,xu,Ko].reduce((function(t,n){return""!==(t=i.startNode===e?Fo(t):t)?t:n(e,i)}),""),i.debug&&o.log(u||"{empty-value}",e.actualNode,i),u)}function xu(e){return 3!==e.props.nodeType?"":e.props.nodeValue}Cu.alreadyProcessed=function(e,t){return t.processed=t.processed||[],!!t.processed.includes(e)||(t.processed.push(e),!1)};var Au=Cu,ku=function(e,t){var n=t.emoji,a=t.nonBmp;t=t.punctuations;return n&&(e=e.replace(/[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26F9(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC3\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC08\\uDC26](?:\\u200D\\u2B1B)?|[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC6F(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDD75(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE88\\uDE90-\\uDEBD\\uDEBF-\\uDEC2\\uDECE-\\uDEDB\\uDEE0-\\uDEE8]|\\uDD3C(?:\\u200D[\\u2640\\u2642]\\uFE0F?|\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g,"")),a&&(e=(e=e.replace(/[\\u1D00-\\u1D7F\\u1D80-\\u1DBF\\u1DC0-\\u1DFF\\u20A0-\\u20CF\\u20D0-\\u20FF\\u2100-\\u214F\\u2150-\\u218F\\u2190-\\u21FF\\u2200-\\u22FF\\u2300-\\u23FF\\u2400-\\u243F\\u2440-\\u245F\\u2460-\\u24FF\\u2500-\\u257F\\u2580-\\u259F\\u25A0-\\u25FF\\u2600-\\u26FF\\u2700-\\u27BF\\uE000-\\uF8FF]/g,"")).replace(/[\\uDB80-\\uDBBF][\\uDC00-\\uDFFF]/g,"")),t?e.replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\\'!"#$%&\\xa3\\xa2\\xa5\\xa7\\u20ac()*+,\\-.\\/:;<=>?@\\[\\]^_`{|}~\\xb1]/g,""):e},Bu=function(e){return e.length&&!["x","i"].includes(e)&&(e=ku(e,{emoji:!0,nonBmp:!0,punctuations:!0}),Fo(e))?1:0},Ru={stateTerms:["on","off"],standaloneTerms:["name","honorific-prefix","given-name","additional-name","family-name","honorific-suffix","nickname","username","new-password","current-password","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","one-time-code"],qualifiers:["home","work","mobile","fax","pager"],qualifiedTerms:["tel","tel-country-code","tel-national","tel-area-code","tel-local","tel-local-prefix","tel-local-suffix","tel-extension","email","impp"],locations:["billing","shipping"]},Nu=function(e){var t=void 0!==(t=(u=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).looseTyped)&&t,n=void 0===(n=u.stateTerms)?[]:n,a=void 0===(a=u.locations)?[]:a,r=void 0===(r=u.qualifiers)?[]:r,o=void 0===(o=u.standaloneTerms)?[]:o,u=void 0===(u=u.qualifiedTerms)?[]:u;return e=e.toLowerCase().trim(),!(!(n=n.concat(Ru.stateTerms)).includes(e)&&""!==e)||(r=r.concat(Ru.qualifiers),a=a.concat(Ru.locations),o=o.concat(Ru.standaloneTerms),u=u.concat(Ru.qualifiedTerms),!("webauthn"===(n=e.split(/\\s+/g))[n.length-1]&&(n.pop(),0===n.length)||!t&&(8<n[0].length&&"section-"===n[0].substr(0,8)&&n.shift(),a.includes(n[0])&&n.shift(),r.includes(n[0])&&(n.shift(),o=[]),1!==n.length))&&(t=n[n.length-1],o.includes(t)||u.includes(t)))},Tu=function(e){var t;return e.attr("aria-labelledby")&&(t=Zr(e.actualNode,"aria-labelledby").map((function(e){return(e=Tn(e))?lu(e):""})).join(" ").trim())?t:(t=(t=e.attr("aria-label"))&&Fo(t))||null},Ou=function(e,t,n){return e=Tn(e),lu(e,t,n)},_u=function(e){if(t=Tu(e))return t;if(e.attr("id")){if(!e.actualNode)throw new TypeError("Cannot resolve explicit label reference for non-DOM nodes");var t,n=an(e.attr("id"));if(t=(n=Ua(e.actualNode).querySelector(\'label[for="\'+n+\'"]\'))&&Ou(n,!0))return t}return(t=(n=Hn(e,"label"))&&lu(n,!0))||null},Su=function(e){return e=Tn(e),_u(e)},Iu=[{matches:[{nodeName:"textarea"},{nodeName:"input",properties:{type:["text","password","search","tel","email","url"]}}],namingMethods:"labelText"},{matches:{nodeName:"input",properties:{type:["button","submit","reset"]}},namingMethods:["valueText","titleText","buttonDefaultText"]},{matches:{nodeName:"input",properties:{type:"image"}},namingMethods:["altText","valueText","labelText","titleText","buttonDefaultText"]},{matches:"button",namingMethods:"subtreeText"},{matches:"fieldset",namingMethods:"fieldsetLegendText"},{matches:"OUTPUT",namingMethods:"subtreeText"},{matches:[{nodeName:"select"},{nodeName:"input",properties:{type:/^(?!text|password|search|tel|email|url|button|submit|reset)/}}],namingMethods:"labelText"},{matches:"summary",namingMethods:"subtreeText"},{matches:"figure",namingMethods:["figureText","titleText"]},{matches:"img",namingMethods:"altText"},{matches:"table",namingMethods:["tableCaptionText","tableSummaryText"]},{matches:["hr","br"],namingMethods:["titleText","singleSpace"]}],Pu=function e(t){var n=wr(t),a=[];return t.children.forEach((function(t){3===t.actualNode.nodeType?n&&a.push(t):a=a.concat(e(t))})),a},Mu=Ya((function(e){var t=Tn(e),n=t.boundingClientRect,r=[],o=Qa(t);return e.childNodes.forEach((function(e){var t,u,i,l;3!==e.nodeType||""===Fo(e.nodeValue)||(e=e,(t=a.createRange()).selectNodeContents(e),e=Array.from(t.getClientRects()),u=n,e.some((function(e){return!xr(Ur(e),u)})))||r.push.apply(r,N((i=o,l=[],e.forEach((function(e){e.width<1||e.height<1||(e=i.reduce((function(e,t){return e&&zr(e,t.boundingClientRect)}),e))&&l.push(e)})),l)))})),r.length?r:[n]})),Lu=function(e){Ar();var t=Tn(e)._grid;return t?Mu(e).map((function(e){return Yr(t,e)})):[]},ju=["checkbox","img","meter","progressbar","scrollbar","radio","slider","spinbutton","textbox"],qu=function(e){var t=e instanceof Vt?e:Tn(e);if(e=o.commons.aria.getExplicitRole(t))return-1!==ju.indexOf(e);switch(t.props.nodeName){case"img":case"iframe":case"object":case"video":case"audio":case"canvas":case"svg":case"math":case"button":case"select":case"textarea":case"keygen":case"progress":case"meter":return!0;case"input":return"hidden"!==t.props.type;default:return!1}},Vu=["head","title","template","script","style","iframe","object","video","audio","noscript"];function zu(e){return!Vu.includes(e.props.nodeName)&&e.children.some((function(e){return 3===(e=e.props).nodeType&&e.nodeValue.trim()}))}var $u=function e(t,n,a){return zu(t)||qu(t.actualNode)||!a&&!!Tu(t)||!n&&t.children.some((function(t){return 1===t.actualNode.nodeType&&e(t)}))},Uu=function(e,t,n){return e=Tn(e),$u(e,t,n)};function Hu(e){return!(void 0!==e.children&&!zu(e))||(1===e.props.nodeType&&qu(e)?!!o.commons.text.accessibleTextVirtual(e):e.children.some((function(e){return!e.attr("lang")&&Hu(e)&&!Dr(e)})))}var Gu=function(e){return-1<parseInt(e.getAttribute("tabindex"),10)&&Eo(e)&&!wo(e)};function Wu(e,n){var a=e instanceof Vt?e:Tn(e);e=e instanceof t.Node?e:null==a?void 0:a.actualNode;return a?(void 0===a._isHiddenWithCSS&&(a._isHiddenWithCSS=Ku(e,n)),a._isHiddenWithCSS):Ku(e,n)}function Ku(e,n){if(9===e.nodeType)return!1;if(11===e.nodeType&&(e=e.host),["STYLE","SCRIPT"].includes(e.nodeName.toUpperCase()))return!1;var a,r=t.getComputedStyle(e,null);if(r)return"none"===r.getPropertyValue("display")||(a=["hidden","collapse"],r=r.getPropertyValue("visibility"),!(!a.includes(r)||n))||!!(a.includes(r)&&n&&a.includes(n))||!(!(n=hr(e))||a.includes(r))&&Wu(n,r);throw new Error("Style does not exist for the given element.")}var Yu=Wu,Ju=function(e){return null!==(e=e.doctype)&&"html"===e.name&&!e.publicId&&!e.systemId};function Xu(e){return 1===(e=e instanceof Vt?e:Tn(e)).props.nodeType&&!(parseInt(e.attr("tabindex",10))<=-1)&&Eo(e)}var Qu=function(e){(e instanceof Vt||null!=(n=t)&&n.Node&&e instanceof t.Node)&&(e=o.commons.aria.getRole(e));var n=so.ariaRoles[e];return(null==n?void 0:n.type)||null},Zu=["block","list-item","table","flex","grid","inline-block"];function ei(e){return e=t.getComputedStyle(e).getPropertyValue("display"),Zu.includes(e)||"table-"===e.substr(0,6)}var ti=function(e,t){var n,a,r,o;return!ei(e)&&(n=function(e){for(var t=hr(e);t&&!ei(t);)t=hr(t);return Tn(t)}(e),r=a="",o=0,function e(t,n){!1!==n(t.actualNode)&&t.children.forEach((function(t){return e(t,n)}))}(n,(function(t){if(2===o)return!1;if(3===t.nodeType&&(a+=t.nodeValue),1===t.nodeType){var n=(t.nodeName||"").toUpperCase();if(t===e&&(o=1),!["BR","HR"].includes(n))return!("none"===t.style.display||"hidden"===t.style.overflow||!["",null,"none"].includes(t.style.float)||!["",null,"relative"].includes(t.style.position))&&("widget"===Qu(t)?(r+=t.textContent,!1):void 0);0===o?r=a="":o=2}})),a=Fo(a),null!=t&&t.noLengthCompare?0!==a.length:(r=Fo(r),a.length>r.length))},ni=function(e){if(e=(e=e||{}).modalPercent||.75,Nn.get("isModalOpen"))return Nn.get("isModalOpen");if(Pl(o._tree[0],"dialog, [role=dialog], [aria-modal=true]",wr).length)return Nn.set("isModalOpen",!0),!0;for(var n=yr(t),u=n.width*e,i=n.height*e,l=(e=(n.width-u)/2,(n.height-i)/2),s=[{x:e,y:l},{x:n.width-e,y:l},{x:n.width/2,y:n.height/2},{x:e,y:n.height-l},{x:n.width-e,y:n.height-l}].map((function(e){return Array.from(a.elementsFromPoint(e.x,e.y))})),c=0;c<s.length;c++){var d=function(e){var n=s[e].find((function(e){return e=t.getComputedStyle(e),parseInt(e.width,10)>=u&&parseInt(e.height,10)>=i&&"none"!==e.getPropertyValue("pointer-events")&&("absolute"===e.position||"fixed"===e.position)}));if(n&&s.every((function(e){return e.includes(n)})))return Nn.set("isModalOpen",!0),{v:!0}}(c);if("object"===r(d))return d.v}Nn.set("isModalOpen",void 0)};function ai(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:2,a=e.ownerDocument.createRange(),r=(a.setStart(e,0),a.setEnd(e,e.childNodes.length),0),o=0,u=q(a.getClientRects());try{for(u.s();!(t=u.n()).done;){var i=t.value;if(!(i.height<=n))if(r>i.top+n)r=Math.max(r,i.bottom);else{if(0!==o)return!0;r=i.bottom,o++}}}catch(e){u.e(e)}finally{u.f()}return!1}var ri=function(e){return e instanceof t.Node},oi={},ui={set:function(e,t){if("string"!=typeof e)throw new Error("Incomplete data: key must be a string");return t&&(oi[e]=t),oi[e]},get:function(e){return oi[e]},clear:function(){oi={}}},ii=function(e,n){var a=e.nodeName.toUpperCase();return["IMG","CANVAS","OBJECT","IFRAME","VIDEO","SVG"].includes(a)?(ui.set("bgColor","imgNode"),!0):((e="none"!==(a=(n=n||t.getComputedStyle(e)).getPropertyValue("background-image")))&&(n=/gradient/.test(a),ui.set("bgColor",n?"bgGradient":"bgImage")),e)},li=function(e,t,n){var a=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1,r=(this.red=e,this.green=t,this.blue=n,this.alpha=a,this.toHexString=function(){var e=Math.round(this.red).toString(16),t=Math.round(this.green).toString(16),n=Math.round(this.blue).toString(16);return"#"+(15.5<this.red?e:"0"+e)+(15.5<this.green?t:"0"+t)+(15.5<this.blue?n:"0"+n)},this.toJSON=function(){return{red:this.red,green:this.green,blue:this.blue,alpha:this.alpha}},/^#[0-9a-f]{3,8}$/i),o=/^((?:rgb|hsl)a?)\\s*\\(([^\\)]*)\\)/i;this.parseString=function(e){var t,n,a;if(so.cssColors[e]||"transparent"===e)return t=(a=_(so.cssColors[e]||[0,0,0],3))[0],n=a[1],a=a[2],this.red=t,this.green=n,this.blue=a,this.alpha="transparent"===e?0:1,this;if(e.match(o))return this.parseColorFnString(e),this;if(e.match(r))return this.parseHexString(e),this;throw new Error(\'Unable to parse color "\'.concat(e,\'"\'))},this.parseRgbString=function(e){"transparent"===e?(this.red=0,this.green=0,this.blue=0,this.alpha=0):this.parseColorFnString(e)},this.parseHexString=function(e){var t,n;e.match(r)&&![6,8].includes(e.length)&&((e=e.replace("#","")).length<6&&(e=(t=(n=_(e,4))[0])+t+(t=n[1])+t+(t=n[2])+t,t=n[3])&&(e+=t+t),n=e.match(/.{1,2}/g),this.red=parseInt(n[0],16),this.green=parseInt(n[1],16),this.blue=parseInt(n[2],16),n[3]?this.alpha=parseInt(n[3],16)/255:this.alpha=1)},this.parseColorFnString=function(e){var t,n,a,r,u,i,l=(e=_(e.match(o)||[],3))[1];e=e[2];l&&e&&(e=e.split(/\\s*[,\\/\\s]\\s*/).map((function(e){return e.replace(",","").trim()})).filter((function(e){return""!==e})).map((function(e,t){var n=l;if(/%$/.test(e))return 3===t?parseFloat(e)/100:255*parseFloat(e)/100;if("h"===n[t]){if(/turn$/.test(e))return 360*parseFloat(e);if(/rad$/.test(e))return 57.3*parseFloat(e)}return parseFloat(e)})),"hsl"===l.substr(0,3)&&(n=(t=_(t=e,4))[0],a=t[1],r=t[2],t=t[3],a/=255,r/=255,u=(a=(1-Math.abs(2*r-1))*a)*(1-Math.abs(n/60%2-1)),i=r-a/2,e=(r=n<60?[a,u,0]:n<120?[u,a,0]:n<180?[0,a,u]:n<240?[0,u,a]:n<300?[u,0,a]:[a,0,u]).map((function(e){return Math.round(255*(e+i))})).concat(t)),this.red=e[0],this.green=e[1],this.blue=e[2],this.alpha="number"==typeof e[3]?e[3]:1)},this.getRelativeLuminance=function(){var e=this.red/255,t=this.green/255,n=this.blue/255;return.2126*(e<=.03928?e/12.92:Math.pow((.055+e)/1.055,2.4))+.7152*(t<=.03928?t/12.92:Math.pow((.055+t)/1.055,2.4))+.0722*(n<=.03928?n/12.92:Math.pow((.055+n)/1.055,2.4))}},si=function(e){var t=new li;return t.parseString(e.getPropertyValue("background-color")),0!==t.alpha&&(e=e.getPropertyValue("opacity"),t.alpha=t.alpha*e),t},ci=function(e){var n=t.getComputedStyle(e);return ii(e,n)||1===si(n).alpha};function di(e){var t;return!(!e.href||(t=Nn.get("firstPageLink",pi))&&e.compareDocumentPosition(t.actualNode)!==e.DOCUMENT_POSITION_FOLLOWING)}function pi(){return(t.location.origin?Gl(o._tree,\'a[href]:not([href^="javascript:"])\').find((function(e){return!Mr(e.actualNode)})):Gl(o._tree,\'a:not([href^="#"]):not([href^="/#"]):not([href^="javascript:"])\')[0])||null}var Di=/rect\\s*\\(([0-9]+)px,?\\s*([0-9]+)px,?\\s*([0-9]+)px,?\\s*([0-9]+)px\\s*\\)/,fi=/(\\w+)\\((\\d+)/;var mi=function e(n,a,r){if(!n)throw new TypeError("Cannot determine if element is visible for non-DOM nodes");var u,i,l,s=n instanceof Vt?n:Tn(n),c=(n=s?s.actualNode:n,"_isVisible"+(a?"ScreenReader":"")),d=(p=null!=(p=t.Node)?p:{}).DOCUMENT_NODE,p=p.DOCUMENT_FRAGMENT_NODE,D=(s?s.props:n).nodeType,f=s?s.props.nodeName:n.nodeName.toLowerCase();return s&&void 0!==s[c]?s[c]:D===d||!["style","script","noscript","template"].includes(f)&&(n&&D===p&&(n=n.host),(!a||"true"!==(s?s.attr("aria-hidden"):n.getAttribute("aria-hidden")))&&(n?null!==(d=t.getComputedStyle(n,null))&&("area"===f?(u=a,i=r,!!(p=Wa(D=n,"map"))&&!!(p=p.getAttribute("name"))&&!(!(D=Ua(D))||9!==D.nodeType||!(l=Gl(o._tree,\'img[usemap="#\'.concat(an(p),\'"]\')))||!l.length)&&l.some((function(t){return e(t.actualNode,u,i)}))):"none"!==d.getPropertyValue("display")&&(f=parseInt(d.getPropertyValue("height")),D=parseInt(d.getPropertyValue("width")),l=(p=ll(n))&&0===f,p=p&&0===D,f="absolute"===d.getPropertyValue("position")&&(f<2||D<2)&&"hidden"===d.getPropertyValue("overflow"),!(!a&&(function(e){var t=e.getPropertyValue("clip").match(Di),n=e.getPropertyValue("clip-path").match(fi);if(t&&5===t.length&&(e=e.getPropertyValue("position"),["fixed","absolute"].includes(e)))return t[3]-t[1]<=0&&t[2]-t[4]<=0;if(n){e=n[1];var a=parseInt(n[2],10);switch(e){case"inset":return 50<=a;case"circle":return 0===a}}}(d)||"0"===d.getPropertyValue("opacity")||l||p||f)||!r&&("hidden"===d.getPropertyValue("visibility")||!a&&vr(n))))&&(D=!1,(p=n.assignedSlot||n.parentNode)&&(D=e(p,a,!0)),s&&(s[c]=D),D)):(f=!0,(r=s.parent)&&(f=e(r,a,!0)),s&&(s[c]=f),f)))},hi=function(e,n){for(var a=["fixed","sticky"],r=[],o=!1,u=0;u<e.length;++u){var i=e[u],l=(i===n&&(o=!0),t.getComputedStyle(i));o||-1===a.indexOf(l.position)?r.push(i):r=[]}return r};function gi(e,n){var a=bi(n);do{var r,o,u,i,l,s,c=bi(e);if(c===a||c===n)return i=e,r=n,u=(o=t.getComputedStyle(r)).getPropertyValue("overflow"),"inline"===o.getPropertyValue("display")||(i=Array.from(i.getClientRects()),l=r.getBoundingClientRect(),s={left:l.left,top:l.top,width:l.width,height:l.height},(["scroll","auto"].includes(u)||r instanceof t.HTMLHtmlElement)&&(s.width=r.scrollWidth,s.height=r.scrollHeight),1===i.length&&"hidden"===u&&"nowrap"===o.getPropertyValue("white-space")&&(i[0]=s),i.some((function(e){return!(Math.ceil(e.left)<Math.floor(s.left)||Math.ceil(e.top)<Math.floor(s.top)||Math.floor(e.left+e.width)>Math.ceil(s.left+s.width)||Math.floor(e.top+e.height)>Math.ceil(s.top+s.height))})))}while(e=c);return!1}function bi(e){for(var t=Tn(e).parent;t;){if(ll(t.actualNode))return t.actualNode;t=t.parent}}var yi,vi,Fi=function e(t,n){var r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:a,o=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0;if(999<o)throw new Error("Infinite loop detected");return Array.from(r.elementsFromPoint(t,n)||[]).filter((function(e){return Ua(e)===r})).reduce((function(a,r){var u;return Va(r)&&(u=e(t,n,r.shadowRoot,o+1),!(a=a.concat(u)).length||!gi(a[0],r))||a.push(r),a}),[])},wi=function(e,t){var n,r;if(e.hasAttribute(t))return r=e.nodeName.toUpperCase(),n=e,["A","AREA"].includes(r)&&!e.ownerSVGElement||((n=a.createElement("a")).href=e.getAttribute(t)),r=["https:","ftps:"].includes(n.protocol)?n.protocol.replace(/s:$/,":"):n.protocol,t=(e=(e=(t=e=/^\\//.test(n.pathname)?n.pathname:"/".concat(n.pathname)).split("/").pop())&&-1!==e.indexOf(".")?{pathname:t.replace(e,""),filename:/index./.test(e)?"":e}:{pathname:t,filename:""}).pathname,e=e.filename,{protocol:r,hostname:n.hostname,port:(r=n.port,["443","80"].includes(r)?"":r),pathname:/\\/$/.test(t)?t:"".concat(t,"/"),search:function(e){var t={};if(e&&e.length){var n=e.substring(1).split("&");if(n&&n.length)for(var a=0;a<n.length;a++){var r=(o=_(n[a].split("="),2))[0],o=void 0===(o=o[1])?"":o;t[decodeURIComponent(r)]=decodeURIComponent(o)}}return t}(n.search),hash:(r=n.hash)&&(t=r.match(/#!?\\/?/g))&&"#"!==_(t,1)[0]?r:"",filename:e}},Ei=function(e,n){var a=n.getBoundingClientRect(),r=a.top,o=a.left,u=r-n.scrollTop,i=(r=r-n.scrollTop+n.scrollHeight,o-n.scrollLeft);o=o-n.scrollLeft+n.scrollWidth;return!(e.left>o&&e.left>a.right||e.top>r&&e.top>a.bottom||e.right<i&&e.right<a.left||e.bottom<u&&e.bottom<a.top)&&(o=t.getComputedStyle(n),!(e.left>a.right||e.top>a.bottom)||"scroll"===o.overflow||"auto"===o.overflow||n instanceof t.HTMLBodyElement||n instanceof t.HTMLHtmlElement)},Ci=0;function xi(e,t,n){var a;return P(this,xi),(a=vi.call(this)).shadowId=n,a.children=[],a.actualNode=e,(a.parent=t)||(Ci=0),a.nodeIndex=Ci++,a._isHidden=null,a._cache={},void 0===yi&&(yi=pn(e.ownerDocument)),a._isXHTML=yi,"input"===e.nodeName.toLowerCase()&&(n=e.getAttribute("type"),n=a._isXHTML?n:(n||"").toLowerCase(),ts().includes(n)||(n="text"),a._type=n),Nn.get("nodeMap")&&Nn.get("nodeMap").set(e,k(a)),a}C(xi,Vt),vi=A(xi),L(xi,[{key:"props",get:function(){var e,t,n,a,r,o,u;return this._cache.hasOwnProperty("props")||(e=(u=this.actualNode).nodeType,t=u.nodeName,n=u.id,a=u.multiple,r=u.nodeValue,o=u.value,u=u.selected,this._cache.props={nodeType:e,nodeName:this._isXHTML?t:t.toLowerCase(),id:n,type:this._type,multiple:a,nodeValue:r,value:o,selected:u}),this._cache.props}},{key:"attr",value:function(e){return"function"!=typeof this.actualNode.getAttribute?null:this.actualNode.getAttribute(e)}},{key:"hasAttr",value:function(e){return"function"==typeof this.actualNode.hasAttribute&&this.actualNode.hasAttribute(e)}},{key:"attrNames",get:function(){var e;return this._cache.hasOwnProperty("attrNames")||(e=(this.actualNode.attributes instanceof t.NamedNodeMap?this.actualNode:this.actualNode.cloneNode(!1)).attributes,this._cache.attrNames=Array.from(e).map((function(e){return e.name}))),this._cache.attrNames}},{key:"getComputedStylePropertyValue",value:function(e){var n="computedStyle_"+e;return this._cache.hasOwnProperty(n)||(this._cache.hasOwnProperty("computedStyle")||(this._cache.computedStyle=t.getComputedStyle(this.actualNode)),this._cache[n]=this._cache.computedStyle.getPropertyValue(e)),this._cache[n]}},{key:"isFocusable",get:function(){return this._cache.hasOwnProperty("isFocusable")||(this._cache.isFocusable=Eo(this.actualNode)),this._cache.isFocusable}},{key:"tabbableElements",get:function(){return this._cache.hasOwnProperty("tabbableElements")||(this._cache.tabbableElements=Xr(this)),this._cache.tabbableElements}},{key:"clientRects",get:function(){return this._cache.hasOwnProperty("clientRects")||(this._cache.clientRects=Array.from(this.actualNode.getClientRects()).filter((function(e){return 0<e.width}))),this._cache.clientRects}},{key:"boundingClientRect",get:function(){return this._cache.hasOwnProperty("boundingClientRect")||(this._cache.boundingClientRect=this.actualNode.getBoundingClientRect()),this._cache.boundingClientRect}}]);var Ai,ki=xi,Bi=function(e){return(e||"").trim().replace(/\\s{2,}/g," ").split(" ")},Ri=" [idsMap]";function Ni(e,t,n){var a=e[0]._selectorMap;if(a){for(var r=e[0].shadowId,o=0;o<t.length;o++)if(1<t[o].length&&t[o].some(Ti))return;var u=new Set,i=(t.forEach((function(e){var t,n=function(e,t,n){var a=e[e.length-1],r=null,o=1<e.length||!!a.pseudos||!!a.classes;if(Ti(a))r=t["*"];else{if(a.id){if(!t[Ri]||null==(e=t[Ri][a.id])||!e.length)return;r=t[Ri][a.id].filter((function(e){return e.shadowId===n}))}if(a.tag&&"*"!==a.tag){if(null==(e=t[a.tag])||!e.length)return;e=t[a.tag];r=r?Oi(e,r):e}if(a.classes){if(null==(e=t["[class]"])||!e.length)return;e=t["[class]"],r=r?Oi(e,r):e}if(a.attributes)for(var u=0;u<a.attributes.length;u++){var i=a.attributes[u];if("attrValue"===i.type&&(o=!0),null==(l=t["[".concat(i.key,"]")])||!l.length)return;var l=t["[".concat(i.key,"]")];r=r?Oi(l,r):l}}return{nodes:r,isComplexSelector:o}}(e,a,r);null!=n&&null!=(t=n.nodes)&&t.forEach((function(t){n.isComplexSelector&&!$n(t,e)||u.add(t)}))})),[]);return u.forEach((function(e){return i.push(e)})),(i=n?i.filter(n):i).sort((function(e,t){return e.nodeIndex-t.nodeIndex}))}}function Ti(e){return"*"===e.tag&&!e.attributes&&!e.id&&!e.classes}function Oi(e,t){return e.filter((function(e){return t.includes(e)}))}function _i(e,t,n){n[e]=n[e]||[],n[e].push(t)}function Si(e,t){1===e.props.nodeType&&(_i(e.props.nodeName,e,t),_i("*",e,t),e.attrNames.forEach((function(n){"id"===n&&(t[Ri]=t[Ri]||{},Bi(e.attr(n)).forEach((function(n){_i(n,e,t[Ri])}))),_i("[".concat(n,"]"),e,t)})))}function Ii(e,t,n){return Si(e=new ki(e,t,n),Nn.get("selectorMap")),e}function Pi(e,n,a){var r,o,u;function i(e,t,a){return(t=Pi(t,n,a))?e.concat(t):e}return u=(e=e.documentElement?e.documentElement:e).nodeName.toLowerCase(),Va(e)?(Ai=!0,r=Ii(e,a,n),n="a"+Math.random().toString().substring(2),o=Array.from(e.shadowRoot.childNodes),r.children=o.reduce((function(e,t){return i(e,t,r)}),[]),[r]):"content"===u&&"function"==typeof e.getDistributedNodes?(o=Array.from(e.getDistributedNodes())).reduce((function(e,t){return i(e,t,a)}),[]):"slot"===u&&"function"==typeof e.assignedNodes?((o=Array.from(e.assignedNodes())).length||(o=function(e){var t=[];for(e=e.firstChild;e;)t.push(e),e=e.nextSibling;return t}(e)),t.getComputedStyle(e),o.reduce((function(e,t){return i(e,t,a)}),[])):1===e.nodeType?(r=Ii(e,a,n),o=Array.from(e.childNodes),r.children=o.reduce((function(e,t){return i(e,t,r)}),[]),[r]):3===e.nodeType?[Ii(e,a)]:void 0}var Mi=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:a.documentElement,t=1<arguments.length?arguments[1]:void 0,n=(Ai=!1,{});return Nn.set("nodeMap",new WeakMap),Nn.set("selectorMap",n),(e=Pi(e,t,null))[0]._selectorMap=n,e[0]._hasShadowRoot=Ai,e},Li=function(e){return e?e.trim().split("-")[0].toLowerCase():""},ji=function(e){var t={};return t.none=e.none.concat(e.all),t.any=e.any,Object.keys(t).map((function(e){var n;return t[e].length&&(n=o._audit.data.failureSummaries[e])&&"function"==typeof n.failureMessage?n.failureMessage(t[e].map((function(e){return e.message||""}))):void 0})).filter((function(e){return void 0!==e})).join("\\n\\n")};function qi(){var e=o._audit.data.incompleteFallbackMessage;return"string"!=typeof(e="function"==typeof e?e():e)?"":e}var Vi=Mt.resultGroups,zi=function(e,t){var n=o.utils.aggregateResult(e);return Vi.forEach((function(e){t.resultTypes&&!t.resultTypes.includes(e)&&(n[e]||[]).forEach((function(e){Array.isArray(e.nodes)&&0<e.nodes.length&&(e.nodes=[e.nodes[0]])})),n[e]=(n[e]||[]).map((function(e){return e=Object.assign({},e),Array.isArray(e.nodes)&&0<e.nodes.length&&(e.nodes=e.nodes.map((function(e){var n,a;return"object"===r(e.node)&&(e.html=e.node.source,t.elementRef&&!e.node.fromFrame&&(e.element=e.node.element),!1===t.selectors&&!e.node.fromFrame||(e.target=e.node.selector),t.ancestry&&(e.ancestry=e.node.ancestry),t.xpath)&&(e.xpath=e.node.xpath),delete e.result,delete e.node,n=e,a=t,["any","all","none"].forEach((function(e){Array.isArray(n[e])&&n[e].filter((function(e){return Array.isArray(e.relatedNodes)})).forEach((function(e){e.relatedNodes=e.relatedNodes.map((function(e){var t,n={html:null!=(n=null==e?void 0:e.source)?n:"Undefined"};return!a.elementRef||null!=e&&e.fromFrame||(n.element=null!=(t=null==e?void 0:e.element)?t:null),(!1!==a.selectors||null!=e&&e.fromFrame)&&(n.target=null!=(t=null==e?void 0:e.selector)?t:[":root"]),a.ancestry&&(n.ancestry=null!=(t=null==e?void 0:e.ancestry)?t:[":root"]),a.xpath&&(n.xpath=null!=(t=null==e?void 0:e.xpath)?t:["/"]),n}))}))})),e}))),Vi.forEach((function(t){return delete e[t]})),delete e.pageLevel,delete e.result,e}))})),n},$i=/\\$\\{\\s?data\\s?\\}/g;function Ui(e,t){if("string"==typeof t)return e.replace($i,t);for(var n in t){var a;t.hasOwnProperty(n)&&(a=new RegExp("\\\\${\\\\s?data\\\\."+n+"\\\\s?}","g"),n=void 0===t[n]?"":String(t[n]),e=e.replace(a,n))}return e}var Hi=function e(t,n){var a;if(t)return Array.isArray(n)?(n.values=n.join(", "),"string"==typeof t.singular&&"string"==typeof t.plural?Ui(1===n.length?t.singular:t.plural,n):Ui(t,n)):"string"==typeof t?Ui(t,n):"string"==typeof n?Ui(t[n],n):(a=t.default||qi(),e(a=n&&n.messageKey&&t[n.messageKey]?t[n.messageKey]:a,n))},Gi=function(e,t,n){var a=o._audit.data.checks[e];if(!a)throw new Error("Cannot get message for unknown check: ".concat(e,"."));if(a.messages[t])return Hi(a.messages[t],n);throw new Error(\'Check "\'.concat(e,\'"" does not have a "\').concat(t,\'" message.\'))},Wi=function(e,t,n){t=((n.rules&&n.rules[t]||{}).checks||{})[e.id];var a=(n.checks||{})[e.id],r=e.enabled;e=e.options;return a&&(a.hasOwnProperty("enabled")&&(r=a.enabled),a.hasOwnProperty("options"))&&(e=a.options),t&&(t.hasOwnProperty("enabled")&&(r=t.enabled),t.hasOwnProperty("options"))&&(e=t.options),{enabled:r,options:e,absolutePaths:n.absolutePaths}};function Ki(){var e,n,a,u,i=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null,l=1<arguments.length&&void 0!==arguments[1]?arguments[1]:t;return i&&"object"===r(i)?i:"object"!==r(l)?{}:{testEngine:{name:"axe-core",version:o.version},testRunner:{name:o._audit.brand},testEnvironment:(i=l).navigator&&"object"===r(i.navigator)?(e=i.navigator,n=i.innerHeight,a=i.innerWidth,i=function(e){return(e=e.screen).orientation||e.msOrientation||e.mozOrientation}(i)||{},u=i.angle,i=i.type,{userAgent:e.userAgent,windowWidth:a,windowHeight:n,orientationAngle:u,orientationType:i}):{},timestamp:(new Date).toISOString(),url:null==(e=l.location)?void 0:e.href}}function Yi(e,t){var n=t.focusable;t=t.page;return{node:e,include:[],exclude:[],initiator:!1,focusable:n&&(!(n=(n=e).getAttribute("tabindex"))||(n=parseInt(n,10),isNaN(n))||0<=n),size:function(e){var t=parseInt(e.getAttribute("width"),10),n=parseInt(e.getAttribute("height"),10);return(isNaN(t)||isNaN(n))&&(e=e.getBoundingClientRect(),t=isNaN(t)?e.width:t,n=isNaN(n)?e.height:n),{width:t,height:n}}(e),page:t}}function Ji(e){var n=0<arguments.length&&void 0!==e?e:[],a=[];tl(n)||(n=[n]);for(var r=0;r<n.length;r++){var o=function(e){return e instanceof t.Node?e:"string"==typeof e?[e]:(Zi(e)?(function(e){nl(Array.isArray(e.fromFrames),"fromFrames property must be an array"),nl(e.fromFrames.every((function(e){return!al(e,"fromFrames")})),"Invalid context; fromFrames selector must be appended, rather than nested"),nl(!al(e,"fromShadowDom"),"fromFrames and fromShadowDom cannot be used on the same object")}(e),e=e.fromFrames):el(e)&&(e=[e]),function(e){if(Array.isArray(e)){var t,n=[],a=q(e);try{for(a.s();!(t=a.n()).done;){var r=t.value;if(el(r)&&(function(e){nl(Array.isArray(e.fromShadowDom),"fromShadowDom property must be an array"),nl(e.fromShadowDom.every((function(e){return!al(e,"fromFrames")})),"shadow selector must be inside fromFrame instead"),nl(e.fromShadowDom.every((function(e){return!al(e,"fromShadowDom")})),"fromShadowDom selector must be appended, rather than nested")}(r),r=r.fromShadowDom),"string"!=typeof r&&!function(e){return Array.isArray(e)&&e.every((function(e){return"string"==typeof e}))}(r))return;n.push(r)}}catch(e){a.e(e)}finally{a.f()}return n}}(e))}(n[r]);o&&a.push(o)}return a}function Xi(e){return["include","exclude"].some((function(t){return al(e,t)&&Qi(e[t])}))}function Qi(e){return"string"==typeof e||e instanceof t.Node||Zi(e)||el(e)||tl(e)}function Zi(e){return al(e,"fromFrames")}function el(e){return al(e,"fromShadowDom")}function tl(e){return e&&"object"===r(e)&&"number"==typeof e.length&&e instanceof t.Node==0}function nl(e,t){tn(e,"Invalid context; ".concat(t,"\\nSee: https://github.com/dequelabs/axe-core/blob/master/doc/context.md"))}function al(e,t){return!(!e||"object"!==r(e))&&Object.prototype.hasOwnProperty.call(e,t)}function rl(e,n){for(var a=[],r=0,o=e[n].length;r<o;r++){var u=e[n][r];u instanceof t.Node?u.documentElement instanceof t.Node?a.push(e.flatTree[0]):a.push(Tn(u)):u&&u.length&&(1<u.length?function(e,t,n){e.frames=e.frames||[],es(n.shift()).forEach((function(a){var r=e.frames.find((function(e){return e.node===a}));r||(r=Yi(a,e),e.frames.push(r)),r[t].push(n)}))}(e,n,u):(u=es(u[0]),a.push.apply(a,N(u.map((function(e){return Tn(e)}))))))}return a.filter((function(e){return e}))}function ol(e,n){var o=this,u=(e=In(e),this.frames=[],this.page="boolean"==typeof(null==(u=e)?void 0:u.page)?e.page:void 0,this.initiator="boolean"!=typeof(null==(u=e)?void 0:u.initiator)||e.initiator,this.focusable="boolean"!=typeof(null==(u=e)?void 0:u.focusable)||e.focusable,this.size="object"===r(null==(u=e)?void 0:u.size)?e.size:{},e=function(e){if(Xi(e)){var t=" must be used inside include or exclude. It should not be on the same object.";nl(!al(e,"fromFrames"),"fromFrames"+t),nl(!al(e,"fromShadowDom"),"fromShadowDom"+t)}else{if(!Qi(e))return{include:[a],exclude:[]};e={include:e,exclude:[]}}return 0===(t=Ji(e.include)).length&&t.push(a),{include:t,exclude:e=Ji(e.exclude)}}(e),this.flatTree=null!=n?n:Mi(function(e){for(var n=e.include,r=(e=e.exclude,Array.from(n).concat(Array.from(e))),o=0;o<r.length;o++){var u=r[o];if(u instanceof t.Element)return u.ownerDocument.documentElement;if(u instanceof t.Document)return u.documentElement}return a.documentElement}(e)),this.exclude=e.exclude,this.include=e.include,this.include=rl(this,"include"),this.exclude=rl(this,"exclude"),Xl("frame, iframe",this).forEach((function(e){var t;gl(e,o)&&(t=o,uu(e=e.actualNode))&&!_a(t.frames,"node",e)&&t.frames.push(Yi(e,t))})),void 0===this.page&&(this.page=function(e){return 1===(e=e.include).length&&e[0].actualNode===a.documentElement}(this),this.frames.forEach((function(e){e.page=o.page}))),this);if(0===u.include.length&&0===u.frames.length)throw u=ka.isInFrame()?"frame":"page",new Error("No elements found for include in "+u+" Context");Array.isArray(this.include)||(this.include=Array.from(this.include)),this.include.sort(wl)}function ul(e){return!1===(1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).iframes?[]:new ol(e).frames.map((function(e){var t=e.node;return(e=R(e,D)).initiator=!1,{frameSelector:kn(t),frameContext:e}}))}var il=function(e){var t=o._audit.rules.find((function(t){return t.id===e}));if(t)return t;throw new Error("Cannot find rule by id: ".concat(e))};function ll(e){var n,a,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=e.scrollWidth>e.clientWidth+r;r=e.scrollHeight>e.clientHeight+r;if(o||r)return n=sl(a=t.getComputedStyle(e),"overflow-x"),a=sl(a,"overflow-y"),o&&n||r&&a?{elm:e,top:e.scrollTop,left:e.scrollLeft}:void 0}function sl(e,t){return e=e.getPropertyValue(t),["scroll","auto"].includes(e)}var cl=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:t,n=e.document.documentElement;return[void 0!==e.pageXOffset?{elm:e,top:e.pageYOffset,left:e.pageXOffset}:{elm:n,top:n.scrollTop,left:n.scrollLeft}].concat(function e(t){return Array.from(t.children||t.childNodes||[]).reduce((function(t,n){var a=ll(n);return a&&t.push(a),t.concat(e(n))}),[])}(a.body))};function dl(){return In(so)}var pl,Dl=function(e){if(e)return function(t){var n=t.data,a=void 0!==(a=t.isCrossOrigin)&&a,r=t.shadowId,o=t.root,u=t.priority,i=(t=void 0!==(t=t.isLink)&&t,e.createElement("style"));return t?(t=e.createTextNode(\'@import "\'.concat(n.href,\'"\')),i.appendChild(t)):i.appendChild(e.createTextNode(n)),e.head.appendChild(i),{sheet:i.sheet,isCrossOrigin:a,shadowId:r,root:o,priority:u}};throw new Error("axe.utils.getStyleSheetFactory should be invoked with an argument")},fl=function(e){var t;return pl&&pl.parentNode?(void 0===pl.styleSheet?pl.appendChild(a.createTextNode(e)):pl.styleSheet.cssText+=e,pl):e?(t=a.head||a.getElementsByTagName("head")[0],(pl=a.createElement("style")).type="text/css",void 0===pl.styleSheet?pl.appendChild(a.createTextNode(e)):pl.styleSheet.cssText=e,t.appendChild(pl),pl):void 0},ml=function e(n,a){var r,o=Tn(n);return 9!==n.nodeType&&(11===n.nodeType&&(n=n.host),o&&null!==o._isHidden?o._isHidden:!(r=t.getComputedStyle(n,null))||!n.parentNode||"none"===r.getPropertyValue("display")||!a&&"hidden"===r.getPropertyValue("visibility")||"true"===n.getAttribute("aria-hidden")||(a=e(n.assignedSlot||n.parentNode,!0),o&&(o._isHidden=a),a))},hl=function(e){var t=null!=(t=null==(t=e.props)?void 0:t.nodeName)?t:e.nodeName.toLowerCase();return"http://www.w3.org/2000/svg"!==e.namespaceURI&&!!so.htmlElms[t]};function gl(e,t){var n=void 0===(n=t.include)?[]:n;t=void 0===(t=t.exclude)?[]:t;return 0!==(n=n.filter((function(t){return Ma(t,e)}))).length&&(0===(t=t.filter((function(t){return Ma(t,e)}))).length||(n=bl(n),Ma(bl(t),n)))}function bl(e){var t,n,a=q(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;t&&Ma(r,t)||(t=r)}}catch(e){a.e(e)}finally{a.f()}return t}var yl,vl,Fl=function(e,t){return e.length===t.length&&e.every((function(e,n){var a=t[n];return Array.isArray(e)?e.length===a.length&&e.every((function(e,t){return a[t]===e})):e===a}))},wl=function(e,t){return(e=e.actualNode||e)===(t=t.actualNode||t)?0:4&e.compareDocumentPosition(t)?-1:1},El=function(e,t,n,a){var r,o=4<arguments.length&&void 0!==arguments[4]&&arguments[4],u=Array.from(e.cssRules);return u?(r=u.filter((function(e){return 3===e.type}))).length?(r=r.filter((function(e){return e.href})).map((function(e){return e.href})).filter((function(e){return!a.includes(e)})).map((function(e,r){r=[].concat(N(n),[r]);var o=/^https?:\\/\\/|^\\/\\//i.test(e);return xl(e,t,r,a,o)})),(u=u.filter((function(e){return 3!==e.type}))).length&&r.push(Promise.resolve(t.convertDataToStylesheet({data:u.map((function(e){return e.cssText})).join(),isCrossOrigin:o,priority:n,root:t.rootNode,shadowId:t.shadowId}))),Promise.all(r)):Promise.resolve({isCrossOrigin:o,priority:n,root:t.rootNode,shadowId:t.shadowId,sheet:e}):Promise.resolve()},Cl=function(e,t,n,a){var r=4<arguments.length&&void 0!==arguments[4]&&arguments[4];return function(e){try{return!(!e.cssRules&&e.href)}catch(e){return!1}}(e)?El(e,t,n,a,r):xl(e.href,t,n,a,!0)},xl=function(e,n,a,r,o){return r.push(e),new Promise((function(n,a){var r=new t.XMLHttpRequest;r.open("GET",e),r.timeout=Mt.preload.timeout,r.addEventListener("error",a),r.addEventListener("timeout",a),r.addEventListener("loadend",(function(e){if(e.loaded&&r.responseText)return n(r.responseText);a(r.responseText)})),r.send()})).then((function(e){return e=n.convertDataToStylesheet({data:e,isCrossOrigin:o,priority:a,root:n.rootNode,shadowId:n.shadowId}),Cl(e.sheet,n,a,r,e.isCrossOrigin)}))};function Al(){if(t.performance&&t.performance)return t.performance.now()}yl=null,vl=Al();var kl,Bl,Rl={start:function(){this.mark("mark_axe_start")},end:function(){this.mark("mark_axe_end"),this.measure("axe","mark_axe_start","mark_axe_end"),this.logMeasures("axe")},auditStart:function(){this.mark("mark_audit_start")},auditEnd:function(){this.mark("mark_audit_end"),this.measure("audit_start_to_end","mark_audit_start","mark_audit_end"),this.logMeasures()},mark:function(e){t.performance&&void 0!==t.performance.mark&&t.performance.mark(e)},measure:function(e,n,a){t.performance&&void 0!==t.performance.measure&&t.performance.measure(e,n,a)},logMeasures:function(e){function n(e){Lt("Measure "+e.name+" took "+e.duration+"ms")}if(t.performance&&void 0!==t.performance.getEntriesByType)for(var a=t.performance.getEntriesByName("mark_axe_start")[0],r=t.performance.getEntriesByType("measure").filter((function(e){return e.startTime>=a.startTime})),o=0;o<r.length;++o){var u=r[o];if(u.name===e)return void n(u);n(u)}},timeElapsed:function(){return Al()-vl},reset:function(){yl=yl||Al(),vl=Al()}};function Nl(){var e,t,n,r;return a.elementsFromPoint||a.msElementsFromPoint||((e=a.createElement("x")).style.cssText="pointer-events:auto",e="auto"===e.style.pointerEvents,t=e?"pointer-events":"visibility",n=e?"none":"hidden",(r=a.createElement("style")).innerHTML=e?"* { pointer-events: all }":"* { visibility: visible }",function(e,o){var u,i,l,s=[],c=[];for(a.head.appendChild(r);(u=a.elementFromPoint(e,o))&&-1===s.indexOf(u);)s.push(u),c.push({value:u.style.getPropertyValue(t),priority:u.style.getPropertyPriority(t)}),u.style.setProperty(t,n,"important");for(s.indexOf(a.documentElement)<s.length-1&&(s.splice(s.indexOf(a.documentElement),1),s.push(a.documentElement)),i=c.length;l=c[--i];)s[i].style.setProperty(t,l.value||"",l.priority);return a.head.removeChild(r),s})}function Tl(e){return"function"==typeof e||"[object Function]"===kl.call(e)}function Ol(e){return e=function(e){return e=Number(e),isNaN(e)?0:0!==e&&isFinite(e)?(0<e?1:-1)*Math.floor(Math.abs(e)):e}(e),Math.min(Math.max(e,0),Bl)}"function"!=typeof Object.assign&&(Object.assign=function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),n=1;n<arguments.length;n++){var a=arguments[n];if(null!=a)for(var r in a)a.hasOwnProperty(r)&&(t[r]=a[r])}return t}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null===this)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var t,n=Object(this),a=n.length>>>0,r=arguments[1],o=0;o<a;o++)if(t=n[o],e.call(r,t,o,n))return t}}),Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e,t){if(null===this)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var n,a=Object(this),r=a.length>>>0,o=0;o<r;o++)if(n=a[o],e.call(t,n,o,a))return o;return-1}}),"function"==typeof t.addEventListener&&(a.elementsFromPoint=Nl()),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(e){var t=Object(this),n=parseInt(t.length,10)||0;if(0!==n){var a,r,o=parseInt(arguments[1],10)||0;for(0<=o?a=o:(a=n+o)<0&&(a=0);a<n;){if(e===(r=t[a])||e!=e&&r!=r)return!0;a++}}return!1}}),Array.prototype.some||Object.defineProperty(Array.prototype,"some",{value:function(e){if(null==this)throw new TypeError("Array.prototype.some called on null or undefined");if("function"!=typeof e)throw new TypeError;for(var t=Object(this),n=t.length>>>0,a=2<=arguments.length?arguments[1]:void 0,r=0;r<n;r++)if(r in t&&e.call(a,t[r],r,t))return!0;return!1}}),Array.from||Object.defineProperty(Array,"from",{value:(kl=Object.prototype.toString,Bl=Math.pow(2,53)-1,function(e){var t=Object(e);if(null==e)throw new TypeError("Array.from requires an array-like object - not null or undefined");var n,a=1<arguments.length?arguments[1]:void 0;if(void 0!==a){if(!Tl(a))throw new TypeError("Array.from: when provided, the second argument must be a function");2<arguments.length&&(n=arguments[2])}for(var r,o=Ol(t.length),u=Tl(this)?Object(new this(o)):new Array(o),i=0;i<o;)r=t[i],u[i]=a?void 0===n?a(r,i):a.call(n,r,i):r,i+=1;return u.length=o,u})}),String.prototype.includes||(String.prototype.includes=function(e,t){return!((t="number"!=typeof t?0:t)+e.length>this.length)&&-1!==this.indexOf(e,t)}),Array.prototype.flat||Object.defineProperty(Array.prototype,"flat",{configurable:!0,value:function e(){var t=isNaN(arguments[0])?1:Number(arguments[0]);return t?Array.prototype.reduce.call(this,(function(n,a){return Array.isArray(a)?n.push.apply(n,e.call(a,t-1)):n.push(a),n}),[]):Array.prototype.slice.call(this)},writable:!0}),!t.Node||"isConnected"in t.Node.prototype||Object.defineProperty(t.Node.prototype,"isConnected",{get:function(){return!(this.ownerDocument&&this.ownerDocument.compareDocumentPosition(this)&this.DOCUMENT_POSITION_DISCONNECTED)}});var _l=function(e,t){return e.concat(t).filter((function(e,t,n){return n.indexOf(e)===t}))};function Sl(e,t,n,a,r){return(r=r||{}).vNodes=e,r.vNodesIndex=0,r.anyLevel=t,r.thisLevel=n,r.parentShadowId=a,r}var Il=[],Pl=function(e,t,n){if(a=Ni(e=Array.isArray(e)?e:[e],t=zn(t),n))return a;for(var a=e,r=(e=t,n),o=[],u=Sl(Array.isArray(a)?a:[a],e,null,a[0].shadowId,Il.pop()),i=[];u.vNodesIndex<u.vNodes.length;){for(var l,s=u.vNodes[u.vNodesIndex++],c=null,d=null,p=((null==(l=u.anyLevel)?void 0:l.length)||0)+((null==(l=u.thisLevel)?void 0:l.length)||0),D=!1,f=0;f<p;f++){var m=f<((null==(m=u.anyLevel)?void 0:m.length)||0)?u.anyLevel[f]:u.thisLevel[f-((null==(m=u.anyLevel)?void 0:m.length)||0)];if((!m[0].id||s.shadowId===u.parentShadowId)&&$n(s,m[0]))if(1===m.length)D||r&&!r(s)||(i.push(s),D=!0);else{var h=m.slice(1);if(!1===[" ",">"].includes(h[0].combinator))throw new Error("axe.utils.querySelectorAll does not support the combinator: "+m[1].combinator);(">"===h[0].combinator?c=c||[]:d=d||[]).push(h)}m[0].id&&s.shadowId!==u.parentShadowId||null==(h=u.anyLevel)||!h.includes(m)||(d=d||[]).push(m)}for(s.children&&s.children.length&&(o.push(u),u=Sl(s.children,d,c,s.shadowId,Il.pop()));u.vNodesIndex===u.vNodes.length&&o.length;)Il.push(u),u=o.pop()}return i},Ml=function(e){var t,n,r,u;e=void 0===(e=e.treeRoot)?o._tree[0]:e;return t=[],e=Pl(e=e,"*",(function(e){return!t.includes(e.shadowId)&&(t.push(e.shadowId),!0)})).map((function(e){return{shadowId:e.shadowId,rootNode:$a(e.actualNode)}})),(e=_l(e,[])).length?(n=a.implementation.createHTMLDocument("Dynamic document for loading cssom"),n=Dl(n),r=n,u=[],e.forEach((function(e,t){var n=e.rootNode,a=function(e,t,n){return function(e){var t=[];return e.filter((function(e){if(e.href){if(t.includes(e.href))return!1;t.push(e.href)}return!0}))}(t=11===e.nodeType&&t?function(e,t){return Array.from(e.children).filter(Ll).reduce((function(n,a){var r=a.nodeName.toUpperCase();a="STYLE"===r?a.textContent:a,a=t({data:a,isLink:"LINK"===r,root:e});return n.push(a.sheet),n}),[])}(e,n):function(e){return Array.from(e.styleSheets).filter((function(e){return!!e.media&&jl(e.media.mediaText)}))}(e))}(n,e=e.shadowId,r);if(!a)return Promise.all(u);var o=t+1,i={rootNode:n,shadowId:e,convertDataToStylesheet:r,rootIndex:o},l=[];t=Promise.all(a.map((function(e,t){return Cl(e,i,[o,t],l)})));u.push(t)})),Promise.all(u).then((function e(t){return t.reduce((function(t,n){return Array.isArray(n)?t.concat(e(n)):t.concat(n)}),[])}))):Promise.resolve()};function Ll(e){var t=e.nodeName.toUpperCase(),n=e.getAttribute("href"),a=e.getAttribute("rel");n="LINK"===t&&n&&a&&e.rel.toUpperCase().includes("STYLESHEET");return"STYLE"===t||n&&jl(e.media)}function jl(e){return!e||!e.toUpperCase().includes("PRINT")}var ql=function(e){return e=void 0===(e=e.treeRoot)?o._tree[0]:e,e=Pl(e,"video, audio",(function(e){return(e=e.actualNode).hasAttribute("src")?!!e.getAttribute("src"):!(Array.from(e.getElementsByTagName("source")).filter((function(e){return!!e.getAttribute("src")})).length<=0)})),Promise.all(e.map((function(e){var t;e=e.actualNode;return t=e,new Promise((function(e){0<t.readyState&&e(t),t.addEventListener("loadedmetadata",(function n(){t.removeEventListener("loadedmetadata",n),e(t)}))}))})))};function Vl(e){return!e||void 0===e.preload||null===e.preload||("boolean"==typeof e.preload?e.preload:(e=e.preload,"object"===r(e)&&Array.isArray(e.assets)))}function zl(e){var t=(n=Mt.preload).assets,n=n.timeout;n={assets:t,timeout:n};if(e.preload&&"boolean"!=typeof e.preload){if(!e.preload.assets.every((function(e){return t.includes(e.toLowerCase())})))throw new Error("Requested assets, not supported. Supported assets are: ".concat(t.join(", "),"."));n.assets=_l(e.preload.assets.map((function(e){return e.toLowerCase()})),[]),e.preload.timeout&&"number"==typeof e.preload.timeout&&!isNaN(e.preload.timeout)&&(n.timeout=e.preload.timeout)}return n}var $l=function(e){var t={cssom:Ml,media:ql};return Vl(e)?new Promise((function(n,a){var r=(o=zl(e)).assets,o=o.timeout,u=setTimeout((function(){return a(new Error("Preload assets timed out."))}),o);Promise.all(r.map((function(n){return t[n](e).then((function(e){return t={},e=e,(a=j(a=n))in t?Object.defineProperty(t,a,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[a]=e,t;var t,a}))}))).then((function(e){e=e.reduce((function(e,t){return O({},e,t)}),{}),clearTimeout(u),n(e)})).catch((function(e){clearTimeout(u),a(e)}))})):Promise.resolve()};function Ul(e,t,n){return function(a){var o,u=(o=e[a.id]||{}).messages||{};delete(o=Object.assign({},o)).messages,n.reviewOnFail||void 0!==a.result?o.message=a.result===t?u.pass:u.fail:("object"!==r(u.incomplete)||Array.isArray(a.data)||(o.message=function(e,t){function n(e){return e.incomplete&&e.incomplete.default?e.incomplete.default:qi()}if(!e||!e.missingData)return e&&e.messageKey?t.incomplete[e.messageKey]:n(t);try{var a=t.incomplete[e.missingData[0].reason];if(a)return a;throw new Error}catch(a){return"string"==typeof e.missingData?t.incomplete[e.missingData]:n(t)}}(a.data,u)),o.message||(o.message=u.incomplete)),"function"!=typeof o.message&&(o.message=Hi(o.message,a.data)),ja(a,o)}}var Hl=function(e){var t=o._audit.data.checks||{},n=o._audit.data.rules||{},a=_a(o._audit.rules,"id",e.id)||{},r=(e.tags=In(a.tags||[]),Ul(t,!0,a)),u=Ul(t,!1,a);e.nodes.forEach((function(e){e.any.forEach(r),e.all.forEach(r),e.none.forEach(u)})),ja(e,In(n[e.id]||{}))},Gl=function(e,t){return Pl(e,t)};function Wl(e,t){var n,a=o._audit&&o._audit.tagExclude?o._audit.tagExclude:[],r=t.hasOwnProperty("include")||t.hasOwnProperty("exclude")?(n=t.include||[],n=Array.isArray(n)?n:[n],r=t.exclude||[],(r=Array.isArray(r)?r:[r]).concat(a.filter((function(e){return-1===n.indexOf(e)})))):(n=Array.isArray(t)?t:[t],a.filter((function(e){return-1===n.indexOf(e)})));return!!(n.some((function(t){return-1!==e.tags.indexOf(t)}))||0===n.length&&!1!==e.enabled)&&r.every((function(t){return-1===e.tags.indexOf(t)}))}var Kl=function(e,t,n){var a=n.runOnly||{};n=(n.rules||{})[e.id];return!(e.pageLevel&&!t.page)&&("rule"===a.type?-1!==a.values.indexOf(e.id):n&&"boolean"==typeof n.enabled?n.enabled:"tag"===a.type&&a.values?Wl(e,a.values):Wl(e,[]))};function Yl(e,t){var n,a,r;return t?(r=e.cloneNode(!1),n=cn(r),r=1===r.nodeType?(a=r.outerHTML,Nn.get(a,(function(){return Jl(r,n,e,t)}))):Jl(r,n,e,t),Array.from(e.childNodes).forEach((function(e){r.appendChild(Yl(e,t))})),r):e}function Jl(e,t,n,r){return t&&(e=a.createElement(e.nodeName),Array.from(t).forEach((function(t){var a,o,u;a=n,o=t.name,void 0!==(u=r)[o]&&(!0===u[o]||dn(a,u[o]))||e.setAttribute(t.name,t.value)}))),e}function Xl(e,t){var n=[];if(o._selectCache)for(var a=0,r=o._selectCache.length;a<r;a++){var u=o._selectCache[a];if(u.selector===e)return u.result}for(var i,l=t.include.reduce((function(e,t){return e.length&&Ma(e[e.length-1],t)||e.push(t),e}),[]),s=(i=t).exclude&&0!==i.exclude.length?function(e){return gl(e,i)}:null,c=0;c<l.length;c++){var d=l[c];n=function(e,t){if(0===e.length)return t;var n;e.length<t.length&&(n=e,e=t,t=n);for(var a=0,r=t.length;a<r;a++)e.includes(t[a])||e.push(t[a]);return e}(n,Pl(d,e,s))}return o._selectCache&&o._selectCache.push({selector:e,result:n}),n}var Ql=function(e){e.forEach((function(e){var n=e.elm,a=e.top;e=e.left;if(n===t)return n.scroll(e,a);n.scrollTop=a,n.scrollLeft=e}))};function Zl(e){return function e(t,n){var a=t.shift();return n=a?n.querySelector(a):null,0===t.length?n:null!=n&&n.shadowRoot?e(t,n.shadowRoot):null}(Array.isArray(e)?N(e):[e],a)}function es(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:a,n=Array.isArray(e)?N(e):[e];return 0===e.length?[]:function e(t,n){var a=(t=E(t))[0],r=t.slice(1);if(t=n.querySelectorAll(a),0===r.length)return Array.from(t);var o,u=[],i=q(t);try{for(i.s();!(o=i.n()).done;){var l=o.value;null!=l&&l.shadowRoot&&u.push.apply(u,N(e(r,l.shadowRoot)))}}catch(e){i.e(e)}finally{i.f()}return u}(n,t)}var ts=function(){return["hidden","text","search","tel","url","email","password","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]},ns=[,[,[1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,,1,1,1,1,1,1,,1],[1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,1,1,,1,1,,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,1,1,,1,1,1,1],[1,1,1,1,1,1,,,,,,1,1,1,1,,,1,1,1,,1,,1,,1,1],[1,1,1,,1,1,,1,1,1,,1,,,1,1,1,,,1,1,1,,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,,,,1,1,1,,1,1,1,1,1,1,,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1],[,1,,,,,,1,,1,,,,,1,,1,,,,1,1,,1,,,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,1,1,1,1,,,1,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,1,1,,,1,,,,,1,1,1,,1,,1,,1,,,,,,1],[1,,1,1,1,1,,,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[1,,1,,1,,,,,1,,1,1,1,1,1,,,,1,1,1,1],[,1,1,1,1,1,,1,1,1,,1,,1,1,1,,,1,1,1,1,1,1,1,1],[,,1,,,1,,1,,,,1,1,1,,,,,,,,,,,1],[1,1,1,1,1,1,,1,1,1,,1,1,,1,1,1,1,1,1,1,1,,,1,1,1],[1,1,1,1,1,,,1,,,1,,,1,1,1,,,,,1,,,,,,1]],[,[1,1,1,1,1,1,1,1,1,1,1,,1,,1,1,1,,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,,,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,1,1,,1,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,,1,1,,1,1,1,1,1,1,1,,1],[,1,,1,1,1,,1,1,,1,,1,1,1,1,1,1,1,1],[,1,,1,1,1,1,1,1,1,1,,,1,1,1,,,1,1,,,,,,1,1],[1,1,1,,,,,1,,,,1,1,,1,,,,,,1,,,,,1],[,1,,,1,,,1,,,,,,1],[,1,,1,,,,1,,,,1],[1,,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,,1,,,1,1,1,1],[,1,1,1,1,1,,,1,,,1,,1,1,,1,,1,,,,,1,,1],[,1,,,,1,,,1,1,,1,,1,1,1,1,,1,1,,,1,,,1],[,1,1,,,,,,1,,,,1,1,1,1,,1,1,1,1,1,1,,1,1,1],[,1,,1,1,1,,,1,1,1,1,1,1,,1,,,,,1,1,,1,,1],[,1,,1,,1,,1,,1,,1,1,1,1,1,,,1,1,1],[,1,1,1,,,,1,1,1,,1,1,,,1,1,,1,1,1,1,,1,1],[1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,,,1,1,1,1,1,1,1],[,1,1,1,,1,1,1,,1,,,,,1,1,1,,,1,,1,,,1,1],[,,,,1,,,,,,,,,,,,,,,,,1],[1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,,1,1,1,,1,1,,,,1,1,1,1,1,,,1,1,1,,,,,1],[1,1,1,1,,,,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[1,,,,,,,1,,,,,,,1],[,1,1,,1,1,,1,,,,,,,,,,,,,1],,[1,1,1,,,,,,,,,,,,,1],[,,,,,,,,1,,,1,,,1,1,,,,,1]],[,[1,1,,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1,1,1],[,1,1,,1,1,1,1,,1,1,,1,1,1,1,1,1,1,,1,1,1,1,,1],[,,,1,,,,,,,,,,,,,,,1],[,1,,,1,1,,1,,1,1,,,,1,1,,,1,1,,,,1],[1,,,1,1,1,1,1,1,1,,1,1,1,1,,1,1,1,1,,,1,,,,1],,[,1,1,1,1,1,,1,1,1,,1,1,,1,1,,,1,1,1,1,,1,1,,1],[,1,,,1,,,1,,1,,,1,1,1,1,,,1,1,,1,1,1,1],[,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[,1,1,1,1,1,1,,,1,1,1,1,1,1,1,,,1,,,1,,1],[,1,,,,,,,,,,1,1,,,,,,1,1,,,,,1],[,,,,,,,1,,,,1,,1,1],[,1,1,1,1,1,1,1,,,,1,1,1,1,1,,,1,1,,1,1,1,1,1],[,1,,,1,1,,1,,1,1,1,,,1,1,,,1,,1,1,1,1,,1],[,1,1,1,,1,1,,1,1,,1,1,,1,1,1,1,1,1,1,,1,1,1,1,1],[,,,,,,,,,,,,,,,,1],,[,1,1,1,1,1,,1,1,1,,,1,,1,1,,1,1,1,1,1,,1,,1],[,,1,,,1,,,1,1,,,1,,1,1,,1],[,1,1,,1,,,,1,1,,1,,1,1,1,1,,1,1,1,1,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1],[1,1],[,1,,,,,,,,,,1,1,,,,,,1,1,,1,,1,,1,1],,[,1,1,,1,,,1,,1,,,,1,1,1,,,,,,1,,,,1],[1,1,,,1,1,,1,,,,,1,,1]],[,[,1],[,,,1,,,,1,,,,1,,,,1,,,1,,,1],[,,,,,,,,,,,,,,,,,,1,1,,,,,,1],,[1,,,,,1],[,1,,,,1,,,,1],[,1,,,,,,,,,,,1,,,1,,,,,,,,,1,1],[,,,,,,,,,,,,,,,,,,,,,1],[,,,,,,,,,,,,,,,,1,,,,1,,1],[,1],[,1,,1,,1,,1,,1,,1,1,1,,1,1,,1,,,,,,,1],[1,,,,,1,,,1,1,,1,,1,,1,1,,,,,1,,,1],[,1,1,,,1,,1,,1,,1,,1,1,1,1,,,1,,1,,1,1,1],[1,1,1,1,1,,1,,1,,,,1,1,1,1,,1,1,,,1,1,1,1],[1,,,,,,,,,,,,,,,,,,,,1],[,,,,,,,,,1],,[,1,,,,,,1,1,1,,1,,,,1,,,1,1,1,,,1],[1,,,,,1,,1,1,1,,1,1,1,1,1,,1,,1,,1,,,1,1],[1,,1,1,,,,,1,,,,,,1,1,,,1,1,1,1,,,1,,1],[1,,,,,,,,,,,,,,,,,1],[,,,,,1,,,1,,,,,,1],[,,,,,,,,,,,,,,,1],[,,,,,,,,,,,,,,,,,,,,1],[,1,,,,,,,,,,,,,,1],[,1,,,,1]],[,[1,1,1,,1,,1,1,1,1,1,1,1,1,1,,1,,1,,1,1,,,1,1,1],[,,,,,,,,,,,,1],[,,,,,,,,,,,,,,,,,,,1],,[,,,,,,,,,,,,,,,,,,1],[1,,,,,,,,,1,,,,1],[,,,,,,,,,,,,,,,,,,1],,[1,1,,,,1,1,,,,,,1,,,,1,,1,,1,1,,1],[1],[,,,,,,,,,,,1,,,,,,,,,,,1],[,1,,,,,,,1,1,,,1,,1,,,,1,,,,,,,1],[,,,,,,,,,,,,,,,,1,,,,,1],[,,1,,,,,1,,1],[1,,,,1,,,,,1,,,,1,1,,,,1,1,,,,,1],[,,,,,1],[,,,,,,,,,,,,,,,,,,,1],[1,,,1,1,,,,,,,1,,1,,1,1,1,1,1,1],[,,,,,1,,,,,,,1,,,,,,,1],,[,,1,1,1,1,1,,1,1,1,,,1,1,,,1,1,,1,1,1,,,1],[,,,,,,,,,,,,,,,,,,1],[,1,,,,1],,[1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1],[,,,1,1,1,1,,,,,,1,,1,,,,1,,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,,,1],[,1,1,1,1,,1,1,1,1,1,1,1,1,,,,1,,1,,,1,1,1,1,1],[,,,,,,,,,,,1,,,,,,,,,1,,,,1],[,1,1,,1,1,,1,,,,1,1,,1,1,,,1,,1,1,,1],[,1,,1,,1,,,1,,,1,1,,1,1,,,1,1,1],[,1,1,1,1,1,,1,1,,,,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[,,,,,,,,,1,,1,,1,1,,,,1,,,1],[,1,,,1,1,,,,,,,,,1,1,1,,,,,1],[1,,,1,1,,,,1,1,1,1,1,,,1,,,1,,,1,,1,,1],[,1,1,,1,1,,1,1,,,,1,1,1,,,1,1,,,1,1,1,1,1,1],[1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,,1,1,,1,1,,1,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[,1,,,,1,,,,,,,,,1],[,1,,,,,,,,1,,,,,1,,,,1,,,1],[,1,1,1,1,,,1,1,1,1,1,,1,,1,,1,1,1,1,1,1,1,1,1,1],[,,,,,1,,1,,,,,1,1,1,1,1,,,1,,,,1],[,1,,,,,,,,1,,,,,,,,,,,,1],[1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1],[1,1,,1,,1,1,,,,1,,1,1,1,1,1,,1,1,,,,,,1],[,1,1,1,1,1,1,1,,1,1,,,1,1,,,,1,,1,1,,1,1],[,,,,,,,,,,,,,,,,,,,,,,,,1],[,1,1,,1,1,1,1,,1,,,1,1,1,1,,,1,,,,,,,1],[,1,,,,,,,,1,,,,,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,1],[,1,1,,,,,,,,,,,,1,1,,,,,,1],[,1,,,,,,,1],[,,,,,,,,,,,,,,1,,,,,1,,,,,,1],[1,1,,,1,,,1,1,1,,,,1],,[,,,,,,,,,,,,,1,,,,,,,,,,1],[,,,,,,,,,1,,,,,,,,,1,,,,,,,1],[1,1,1,,1,,1,1,1,1,1,1,1,1,,1,,,1,,1,,,1,1],[,,,,,,,,,1],[,1,,,,1,,,,,,1,,,1,,,,,1],[,1,1,,1,1,,,,,,,,,,,,,,,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[,1,,,1,1,,1,1,1,1,,,,1,1,,,,1,,1],[1,1,1,1,1,1,,,1,1,1,1,1,1,,1,1,,1,1,1,,1,1,,1,1],[,,,,,,,,,,,,,,,1,,,,1],,[1,1,,1,,1,,,,,,1,,1,,1,1,,1,,1,1,,1,1,,1],[,,1,,,,,,1,,,,1,,1,,,,,1],[1,,,,,,,,,1,,,,,,1,,,,1,,1,,,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,,,1,,1,,,,,,1,,,1,,,,,,,,1],[,1,,1,,,,,,,,,,,,1],,[1,1,,,,,,,,,,,,,,,,,,,,,,1,1],[1]],[,[1,,,,,,,,,1,,,,,1,,1,,1],[,1,1,,1,1,,1,1,1,,,1,1,1,,,,1,,,1,,,,1],[,1,,,,,,,1,,,,1,,,,,,1],[1,1,1,1,1,1,,,,1,,,,,,,,,1,1,1,1],[1],[,1,1,,,1,1,,,,,1,,1,,,,,,,,1,,,,1],[1,,1,,,1,,1,,,,,1,1,1,1,,,,1,,,,1],[,,1,,,,,,,1,,,,,,,1,,,,,,,1],[1,,,,,,,,,,,,,,1,,,,1],[,,,1,,1,,,,,1,,,,1,1,,,,1],[1,,,,,1,,,,1,,1,1,,,1,1,,1,1,1,,1,1,1,,1],[,1,1,,,,,1,,1,,1,1,1,,1,1,,,1,,1,1,1],[,1,,,,1,,,,1,,,1,,1,1,,,1,1,,,,,,1],[1,,1,1,,1,,1,1,,1,,1,1,1,1,1,,,1,1,,,,,,1],[1,,,,,,,,,,,,,,,,,,1,,,1,,1],[,,,,,,,,,1,,,,,,1],[,,,,,,,,,,,,,,,,,,,,,1,,1],[,1,,,,1,,,1,1,,1,,,1,1,,,1,,,1,,,1,1],[1,1,,1,1,1,,1,1,1,,1,,1,1,1,,,1,,1,1],[1,,1,1,1,1,,,,1,,1,1,1,,1,,,1,1,1,,1,1,1,1,1],[1,,,,,,,,,,,,,1],[,,1,,,,,,,,,,,,,,,,,,,,1],[1,,,,,,,,,,,1,,1,,1,,,,1],[,,,1,,,,,,,,,1],[,1,,,,,,,,,,,,,,1,,,,,,,,,1],[,,,,,,,,1,1,,,,,,,,,1,,,,,,,,1]],[,[1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,,1,1,1,1,1,,,1,1,1],[,,,,,1,,,,1,1,1,,,1,1,,,1,,1,1,,1],[,,,,,,,,,,,,,,,,,,,1,1],[,1,,,,,,1,,,,,,,,,,,,,1],[,,1,,,1,,1,1,1,,1,1,,1,,,,1,,1,1],,[,,1,,,1,,,,,,1,,,,1],[,,,,,,,,,1,,,,,,,,,,1],[1,1,1,1,1,1,,1,1,1,,,1,1,,1,,1,,,1,1,1,,,1],[,,,,,1,,,,,,,,,,,,,1],[,1,,,,,,,,,,,,1,,1,1,,1,,,1],[,,,,,1,,,,,,,,,,,,,,1],[,1,1,1,1,,,,,1,,,1,,1,,,,1,1,,,,1,1],[,1,,,1,,,1,,1,1,,1,,,,,,,1],[,,1,,1,,,1,,,,,,,,,,,1,1,,,,1],[,1,,,,,,,,,,,,,,,,,1,,,,,,1],[,,,,,,,,,,,,,,,,,,1],[,1,1,,,,,,,,,,,,,,,,1,,1,1],[,,,,,,,,,,,,1],,[,1,1,1,1,,,,1,1,,1,1,1,1,1,1,,1,1,1,1,,1,,1],[1,,,,1,,,,,,,,,,1],[1,,,,,,,,,1],,[,1,,,,1,,,,,,,,,,,,,,,,,,,,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,,1,,1,1,1,1,,,,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,,1,1,,1,1,1,,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,,1,1,1,1,1,1,1,1,1,1,,,1,1,1,,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,,1,,1,1,1,1],[1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1],[,,,1,1,1,1,,1,,,,1,1,,,1,1,,1],[,1,1,,1,,,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,,,,,,,,,,,,1],[1,1,1,,,,,1,1,1,,1,1,1,1,,,1,1,,1,1,,,,,1],[,1,,,,,,,1,1,,,1,1,1,,1,,,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,1,,1,1,1,1,1,1],[,1,,,,1,,,,1,,,1,,,,1,,,,,,,1,1],[,1,1,1,1,1,,,1,1,1,,1,1,1,1,,,1,1,1,1,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,,1,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,1,1],[1,1,1,,1,,,1,1,1,1,,1,1,1,1,,,,1,,1,,1,,,1],[1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,,,1,,,,,,,,,1,1,,,,,,,,,1],,[,1,,1,,1,,1,,1,,1,1,1,1,1,,,1,,1,,1,,,,1],[,1,,,1,1,,1,1,1,,,1,1,1,1,1,,1,1,1,,1,,,1],[1,,,1,,,,1,1,1,,,,,1,1,,,,1,,1],[1,1,,1,1,1,1,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[1,1,,,,,,,,1,,1,,,,,,,,1,,1],[,1,,,,1,,1,1,,,,1,1,,1,,,,1,1,1,,1],,[,1,,,,,,1,,,,,,,1],[,,,,,,,,1,,,,1,,1,,,,,,,,,,,,1]],[,[,1,1,,1,1,1,1,,1,1,1,,1,1,,1,1,,1,1,1,1,1,1,,1],[,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,,1,1,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1],[,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,,1],[1,1,1,1,1,,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1],[,1,,,1,,,,,,,,1,,,,,,1,,,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,,,,1,1,1,,1,1,1,1,,,1,1,1,1,,,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,,1],[1,1,,1,,1,,1,,1,1,1,1,1,1,1,,1,1,,,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,,1,1],[,1,1,,,,,1,1,1,,,1,,1,1,,,,1,,1,,,1,1],[,,,,,,,1,,,,1,1,1,1,1,,1,,,,,,,,1],[1,1,1,1,,1,1,1,,1,,1,1,1,1,,1,,1,,1,1,,,1,,1],[,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,,,1,1,,1,,1,1,1,,1,,1,1,,1,1,,1,,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,,,,,,,,1,,,,,1,,1],[,1,1,1,,1,,1,,1,,,,1,,1,,,1,,,,,,1,1],[,1,,,1,1,,1,,1,,1,1,1,1,1,,1,1,,,1,,,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,,,,,1,,1,,1,,,,,,1,,1,,,,1,1]],[,[,1,,1,,,,,,,,,,,,,,,1,,,,1],[,,,,,,,,,1,,1,1,1,,1,,,1,,1,1],[1,1,,,,,,,1,,,,,,,1,,,,,,1],[,1,,,,,,,,,,1,,,,,,,,,1,1],,[,,,,,,,,,,,,,,,1,,,,1,,1],[,,1,1,,1,,1,,,,,,,,1,,,,,,1],[,,,,,,,,,,,,,,,,,,,,1,1],[,1,,,,,,,,,,,,,1],[1,,1,1,,,,1,,,,,,,,,1,,,1,,,1,1],[,1,1,,1,1,,1,1,1,1,1,1,1,1,1,,,1,1,,1,1,,1],[,1,,,1,1,,,,,,1,,1,,1,,,1,,1,1],[1,1,1,1,,1,,1,,1,,1,1,,1,1,1,1,1,,1,1,1,1,1],[,1,1,,,1,,1,,1,1,1,,,1,1,1,,1,1,1,1,,1,1],[,,,,1,,,1,,,,,,,1,,,,1,1],[,1,,,,,,,,,,1,,1,,1,,,,,1,,,,,1],,[1,1,,1,,1,,1,1,,,,,,1,1,,,1,1,1,1,1,1,1,1,1],[1,1,,1,,,,,,1,,,,,,1,1,,,,1,1,,,1],[,1,1,,1,1,,,,1,,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1],[,1,1,,,1,,,,1,,,,1,1],[,,,,1],[,,,,,,,,,1,,,1],,[,,1,,1,,,,,,,,,1,,,,,,,,,,,,1],[,,,,,,,,,,,,,1]],[,[1,1,1,1,1,1,1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,,1,1,,1,1,1,1,1,,,1,1,1,1,1,,1,1,1,1,1,,,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,,1,,,,,1],[,1,,1,,,,,,1,,,,,1,1,,,,,1,1],[,1,1,,1,1,1,1,1,1,1,1,1,1,,1,1,1,,1,,,1,,1,1,1],[,1,,,,1,,,,,,,1],[,1,,,1,,,1,,1,,1,1,,1,,,,,1,,1,,,,1,1],[,1,,,1,,,1,1,1,,1,1,1,1,1,,1,1,,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1,1,1,1,1,1],[,,,,,,,,,,,,,,,,,,,,1],[,1,1,1,,,,1,1,,,,,,1,1,1,,1,1,1,1],[1,1,1,1,1,1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,,1,1,1,1,1,1,1,,1,,1,1,1,1,1,,1,1,,1,1,1,1,1],[,1,,,,1,,,,1,,1,1,1,1,1,1,1,1,1,1,1],[,1,,,,1,,,,,,,,1,,,,,,,,,,1],[,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[1,1,,1,1,1,,1,1,1,,,1,1,1,1,1,1,1,1,1,1,,1,,1],[1,1,,,,,,,1,1,,,,,1,1,1,1,1,,1,1,1,1,,1],[,1,1,1,1,1,1,1,,1,1,1,,1,,1,1,1,1,,1,1,,1,1,1,1],,[,1,1,,,,,1,,1,,,,1,1,1,,,1,,,,,1],[,,,,,,,,,,,,,1],[,,,,,1,,,,,,,,1,1,,,,,1,,1,,,1,1],[,,,,,,,,,,,,,,1]],[,[,1],,,,,,,,,,,,,,,,,,,,[1,1,1,1,1,,1,1,1,1,,1,1,1,1,,1,1,1,1,,,1,1,1,1,1],[,1,,1,,1,,,1,1,1,,1,1,1,1,1,,,1,,,,1,,1,1],[,1,,1,,1,,,1,,,,,1,,,,,,1,1],[,1,,1,,,,,1,,,,1,,1,1,1,1,1,1,1,1,,1],[,1,,,,,,,,,,,,,,,1]],[,[,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,1,,,,,,,,,1,1,,,,1],[,,,,,,1],[,,1],[,1,1,,,1,,1,,1,1,,1,1,1,,,,1,1,1,,,,,1],,[,1,,,,1,,,,,,1,,,1,,,,1,1,,1],[,,,,,,,1,,,,,,,,,1],[,1,,,,1,1,,,,,,1,1,1,,,,1,,1,1],[,,,,,,,1,,1,,,,,,,,,,1],[,1,1,,,,,,1,1,,,,1,,,,,,,1,,,1],,[1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,,,1,,,1,,,,,1,,1,,1,,1,,,,,1],[1,1,1,1,1,1,1,1,,,,,1,1,,1,1,,1,,,1,,1],[,,,,,,,,,,,,,,1,,,,,,1],,[,,,,,,,,,1,,,,,,1,,,,,1],[,,1,,,,,,,1,,,1,1],[,,,1,,,,,1,,,,,1,,,,,,1,,,,1],[1,,1,1,,1,1,1,1,1,,1,,,,1,1,1,,,1,1,,,,1,1],,[1,1,,,,,,,,,,1,,1,,1,,,1],[,,,,1,,,,,,,,,,,,,,,,,,,1],[,,,,,,,,,,,,,,1,,,,,1,,1],[,,,,,,,,1]],[,[1,1,1,1,1,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,,,1,1,1,1,1,,1,1,,1,1,1,1,,1,1,1,1,1,1],[1,1,1,1,,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,,1,,,1,,,,,,,,1,,,,,,1,,,,1],[1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,,1,1,1,1],[1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,1,,1,,,,1,1,1,1,1,1,,1,1,1,1,,1],[1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,,1,1,1,1,1,1,1,1,,1,1,1,,1,1,1,1,1,1,,1,1,1,1],[1,1,1,1,1,,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[1,,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1],[1,1,1,1,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1],[,,1,1,1,1,,1,,1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[1,1,,,,,,,1,,1,1,,1,1,1,,1,1,1,1,1],[1,1,1,1,,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1],[1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1],[1,1,1,1,,1,,1,,1,1,1,1,1,,,,1,1,1,1,,1,1,1,1,1],[1,1,1,1,,1,,,,,,1,,1,,,,,1,1,,,,,1],[1,,1,1,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,1,1,,1,,1,,,,1,1,1,1,1,,,1,1,,1,,1],[,1,1,1,1,,,,,1,,1,1,1,1,1,,,1,1,,,,1,1,1],[,1,1,1,1,1,,1,,,,,1,,1,,1,,,1,,,1,1,,1]],[,[1,1,1,1,1,1,1,1,,1,1,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,,1,1,1,,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,,1,1],[1,1,1,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,,,,,,,,1,,,,,1,1,,,1,,1],[1,1,1,1,1,1,1,1,1,1,1,,,,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,,,1,1,1,1,,1,1,,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1],[,1,,,,,,1,,1,1,,1,1,1,1,1,,,1,,1,,1],[1,1,1,,1,1,1,1,,,,1,1,1,1,,1,1,1,1,1,1,1,1,1,,1],[1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,,1,1,1,1,1,1,1,1,1,,1,1,,1,1,1,1,1,,1,1,1,1,1,1],[,1,,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,,1,,,,,,,,,,1,1,1,1,1,1,1,,1,1,,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1,1,1],[,1,,,1,1,,,,,,1,1,1,1,1,,,,1,1,1,,1,1,1],[1,1,1,1,1,1,1,1,1,,,,1,1,1,1,1,1,1,,1,1,,1,1,1],[,1,1,1,,1,,1,1,1,1,,,1,1,1,,1,1,1,1,1,,,1,1],[1,1,,,,1,,,1,1,1,,1,,1,,1,,1,1,1,1,1,,1,,1],[,1,,,,,,,1,,1,,1,1,1,1,,,,,,,,,1]],[,[,,,,,,,,,,,,,1,1,,,,1],[,1,,,,,,,,1,,,1,,,,,,1,,,1,,,,1],,[,1,,,,1,,1,,1,1,,1,1,,,,,,,,1],[,,,,,,,,,,,,,,,,,,,1],[,,,,,,,,,1],[1,1,1,,,1,,,,,,,,,1,1,,,,,,,,,,1],[,1,,,,,,,,,,,,,1],[,,,,,,,,,,,,,,,,,,,1,,,1],[,,,,,,,,,1],[1,1,,,,,,1,1,1,,1,1,,,,1,1,,1,,1,1,1,,1],[,1,1,1,,1,1,,,1,,1,1,1,1,,,,,,,1,,1],[,1,1,1,1,,,1,,1,,,,1,1,1,1,,1,1,,1],[,1,,,1,1,,1,,,,1,,1,1,,1,,1,,,1,,,1,,1],[,,,,,,,,,,,1],[,,,,,,,,,1,,,,,,,,,,,,,1],,[1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,1],[,1,,,,,,,1,1,,1,,,,,1,,,1,,1],[,1,,,,1,,,1,,,,,,,,1,,1,,,1],[,,,,,,,,,,,,,1,1,,,,1,,,1],[,,,,,1,,,1,,,,1],[,1],,[,1],[1,,,,,,,,,,,,,,1,,,,,1]],[,[,1,,,,1,1,1,1,1,1,,1,1,1,1,1,,1,1,,1,1,,,1],[,,1,,,,,,,,,1],,,[1,,,1,1,,,,,,,,1,1,,1,1,,1],,[,,,,,,,,,,,,,,,,,,1,,1],,[1,,,1,1,,1,1,,,,,1,,1,,,,,1,1,,1],,[,1,,,,,,,,1,1,1,1,1,,1,1,,,,1,1],[,,,,,,,,,,,,,,,,1,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,,1,1,1,1,1,1],[,,,,,,,,,,,1,,1,,,1],[1,,,,,,,,,,,,,,,,,,1,,1],,,[,1,,,,,,,,,,,,,,1,,,,1,1],[,,,,,,,,,1,,,1,,,,,,,,,,1],[,,,,,,,,,,,,,,,1],[,,,,,,,,,,,,,1,1,,,,,,1],,[,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,,1,1,,1,1,1,1,1,1,,,1,1,1,1,1,,1,1],[,1,,,,,,,,1],[,,,,1,,,1,,,1,1,,,,,,,,,,1,,,,1],[,1,,1,1,,,1,1,1,,,,1,1,1,1,,1,1,1,1,,1],[,,,,,,,1],[,1,1,,,,,1,,1,,,,,,1,,,,,,1,,1,,1],[,1,,,,,,1,,,,1,,,,,,,,,,1],[,,1,1,,1,1,1,1,1,1,1,1,1,1,,,,1,,1,1,1,1,,1],[,1,,,,,,,,1],[,1,1,,1,,,,,,,,1,,,,,,1,,,1,,1,,1],[,1,,1,,1,,1,1,1,,1,1,1,,1,,,1,1,,1,1,1,1,1],[,1,1,1,1,1,,,1,1,,,,1,1,1,,,,1,1,,,1,1],[,,1,1,1,1,,1,,1,,1,,1,1,1,1,,,,,1,,1,,1],[1,1,1,1,1,1,1,1,,1,,1,,1,1,1,,,1,1,,,,1,,1],[,,,1],,[,1,1,,1,,,1,1,1,,1,1,1,1,1,1,,1,1,,1,1,1,1,1,1],[,1,,,,,,1,,1,,1,,,,,,,1,1,,1,1],[,,,,,,1,,1,1,,1,,1,,,,,,,,,,1],[,1,1,,1,,,,1,,,,1,1,1,,,,1,,1,1,1,,1,1],,[,1,1,,,,,,,,,,,,,1,,,1,,,,,1],[,1,,,,,,,,,,,,,,,,,,,,,,1],[,1,1,,,,,,,1,,,,1,,,,,1,,,,,,,1]],[,[,1,1,1,1,1,,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1],[,1,1,1,1,1,,1,,1,1,,,1,1,1,1,,1,,,,,1,1,1],[,,1,1,,1,,1,1,,,,1,1,1,1,,,1,,1,1,1,1,,1],[,1,,1,,,,,,,,1,,1,,1,,,,,,,,,,1],[,,1,,1,,,1,,,,,1,1,,,1,,1,1,1,1],[,1],[,1,1,,1,,1,1,,1,,,1,1,1,,,,1,,,1,,1],[1,1,,1,1,1,,,,,,,,,,,,,1,,1,1,1],[,1,1,,,,,,,1,,,1,,1,,1,,1,1,,,1,,,1],[,,1,,,,,,,,,,,,,,,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,,1,,1,,,,,1,1,1,,,1,,1,,,,1],[,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,,,1,1,1,,1,,1,1,1,,,1,1,1,1,,,,1,1],[,,,1,1,,,1,,1,,1,,1,1,1,1,,1,,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,,,,,,,,,,,,,,,,,,1],[,1,1,,1,1,,1,,1,,,,1,1,,,1,1,,1,1,,1],[,1,1,1,1,1,,,1,1,1,,1,1,1,1,1,1,1,1,,1,1,,,1],[,1,1,1,1,1,,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,1,,1,,,1,,,1,,1,1,1,1,1,,1,,1,1],[,,,,,1,,,,1,,,,,1,1,,,,1],[,1,,1,1,1,,1,,,1,1,1,,,1,,,1,,1,,,1],[,,1,,,,,,,,,1,,1,,,,,1,,1],[,1,1,,,,,,,,1,1,1,,,,,,,,1,,,,,1],[,,,,,,,,1,,,,,1,,,1]],[,[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,1,,,1,1,1,1,1,1,1,1,,,,,,,,,1,1],[,,,,,,,,1,,,,1,,1,,1],[,1,,,1,1,,1,,,,1,,,,,,,,1],[,1,,1,,1,,,,1,1,,1,,1,,,,1,1,1,1,1,,,1],,[,1,,,,,,,,1,,,1,1,,,1,,1,1,,1,,1],[,1,,,1,,,,,,,,1,,,,,,,1],[1,1,,,,,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,,1,1,1],,[,1,,,,,,1,,1,,1,1,1,1,1,,,1,,1,1,,,,1],[,1,1,,,1,,1,,1,,,1,1,1,1,,,1,,,1,,,,1],[,1,1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1,,,,1,,1],[,1,,,1,1,,1,1,,,1,1,,1,1,,1,,1,,1],[1,,1,,,,,1,,1,,1,1,1,1,,,,,1,1,,,,1,1],[,1,1,,,,,1,1,,,1,,1,1,1,1,,,,,,,,,,1],,[,1,1,,,1,,,,1,,1,1,1,1,1,,,,1,,,,1,,1],[,,,1,1,,,1,,,,,1,,1,1,1,,1,1,,,,,,1],[,1,,,,,,,,,,,1,,,,1,,,,,,,1,,1],[,1,1,1,1,1,1,1,,1,1,1,1,1,1,,1,1,1,,1,1,,1,1,1,1],[,1,,,,,,,,,,,,,,,,,,,1],[,1,,,,,,1,,,,,1,,1,,,1,1,,1,1,,1],[,1,,,,,,1,,,,,1,1,,,,,,,,1,,,,1],[,,,,,,,,,,,,,,,,,,1,,,1,,,,,1],[,,,,,,,1,,,,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,1,,1,,,,,,,1,,,,,,,,1,,,1],[,1,,,,,,,1],[,,,,,,,,,,1],[,1,,,,,,1,1,,,,,,1],,[,1,1,,,,,,1,,,,,1,1,,,,1],[1,,1,,1,,,,,1,,,,,1,,,,,,,,,1,1],[,1,1,,,,,,,,,1,1,1,1,,,,1,,,,,1,,,1],,[,1,1,,1,,,1,1,,,1,,,1,1,1,,1,,1,1,1,,,,1],[,,,,,1,,,,,1,,,1,1,,,1,,1,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,,1,1,,1,,,,1,,,,,,,,1],[,,,1,,,,,1,,,,,1,,1,,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,,,,1],[,1,,,,,,1,,,,,,,1,1,1,,,1],[,1,,,,,,,,,,1,1,1,,,,,1,,,1],[,,,,,1,,1,,,,,1,1,1,,1,1,,1,1,1,,,1,1],[1,1,,,,,,,1,,,,,1,1,,,,,,,,,,,1],,[,1],[,,,,,,,,,,,,,,,,,,,,,,,,1],[,,1,,,,,1,,,1,,,,1,,1],[,1,,,,,,,,,1]]];function as(e){e=Array.isArray(e)?e:ns;var t=[];return e.forEach((function(e,n){var a=String.fromCharCode(n+96).replace("`","");Array.isArray(e)?t=t.concat(as(e).map((function(e){return a+e}))):t.push(a)})),t}var rs,os=function(e){for(var t=ns;e.length<3;)e+="`";for(var n=0;n<=e.length-1;n++)if(!(t=t[e.charCodeAt(n)-96]))return!1;return!0};C(us,Vt),rs=A(us),L(us,[{key:"props",get:function(){return this._props}},{key:"attr",value:function(e){return null!=(e=this._attrs[e])?e:null}},{key:"hasAttr",value:function(e){return void 0!==this._attrs[e]}},{key:"attrNames",get:function(){return Object.keys(this._attrs)}}]),oo=us;function us(e){var t,n,a;return P(this,us),(t=rs.call(this))._props=function(e){var t=null!=(t=e.nodeName)?t:ls[e.nodeType],n=null!=(n=null!=(n=e.nodeType)?n:is[e.nodeName])?n:1,a=(tn("number"==typeof n,"nodeType has to be a number, got \'".concat(n,"\'")),tn("string"==typeof t,"nodeName has to be a string, got \'".concat(t,"\'")),t=t.toLowerCase(),null);return"input"===t&&(a=(e.type||e.attributes&&e.attributes.type||"").toLowerCase(),ts().includes(a)||(a="text")),e=O({},e,{nodeType:n,nodeName:t}),a&&(e.type=a),delete e.attributes,Object.freeze(e)}(e),t._attrs=(e=(e=e).attributes,n=void 0===e?{}:e,a={htmlFor:"for",className:"class"},Object.keys(n).reduce((function(e,t){var o=n[t];return tn("object"!==r(o)||null===o,"expects attributes not to be an object, \'".concat(t,"\' was")),void 0!==o&&(e[a[t]||t]=null!==o?String(o):null),e}),{})),t}var is={"#cdata-section":2,"#text":3,"#comment":8,"#document":9,"#document-fragment":11},ls={},ss=(Object.keys(is).forEach((function(e){ls[is[e]]=e})),oo),cs=(U(uo={},{CssSelectorParser:function(){return cs.CssSelectorParser},doT:function(){return ds.default},emojiRegexText:function(){return Fu},memoize:function(){return ps.default}}),H(te())),ds=H(Ot()),ps=H(Tt());oo=H(_t()),te=H(St());H(It()),ds.default.templateSettings.strip=!1,"Promise"in t||oo.default.polyfill(),"Uint32Array"in t||(t.Uint32Array=te.Uint32Array),t.Uint32Array&&("some"in t.Uint32Array.prototype||Object.defineProperty(t.Uint32Array.prototype,"some",{value:Array.prototype.some}),"reduce"in t.Uint32Array.prototype||Object.defineProperty(t.Uint32Array.prototype,"reduce",{value:Array.prototype.reduce}));var Ds,fs=function(e,t){if(e=e||function(){},t=t||o.log,!o._audit)throw new Error("No audit configured");var n=o.utils.queue(),r=[],u=(Object.keys(o.plugins).forEach((function(e){n.defer((function(t){function n(e){r.push(e),t()}try{o.plugins[e].cleanup(t,n)}catch(e){n(e)}}))})),o.utils.getFlattenedTree(a.body));o.utils.querySelectorAll(u,"iframe, frame").forEach((function(e){n.defer((function(t,n){return o.utils.sendCommandToFrame(e.actualNode,{command:"cleanup-plugin"},t,n)}))})),n.then((function(n){0===r.length?e(n):t(r)})).catch(t)},ms={};function hs(e){return ms.hasOwnProperty(e)}function gs(e){return"string"==typeof e&&ms[e]?ms[e]:"function"==typeof e?e:Ds}var bs={},ys=(U(bs,{allowedAttr:function(){return ys},arialabelText:function(){return no},arialabelledbyText:function(){return to},getAccessibleRefs:function(){return Fs},getElementUnallowedRoles:function(){return xs},getExplicitRole:function(){return Do},getImplicitRole:function(){return zo},getOwnedVirtual:function(){return Jo},getRole:function(){return Go},getRoleType:function(){return Qu},getRolesByType:function(){return ks},getRolesWithNameFromContents:function(){return Ts},implicitNodes:function(){return _s},implicitRole:function(){return zo},isAccessibleRef:function(){return Ss},isAriaRoleAllowedOnElement:function(){return ws},isUnsupportedRole:function(){return co},isValidRole:function(){return po},label:function(){return Is},labelVirtual:function(){return Tu},lookupTable:function(){return Os},namedFromContents:function(){return Yo},requiredAttr:function(){return Ps},requiredContext:function(){return Ms},requiredOwned:function(){return Ls},validateAttr:function(){return qs},validateAttrValue:function(){return js}}),function(e){e=so.ariaRoles[e];var t=N(mo());return e&&(e.allowedAttrs&&t.push.apply(t,N(e.allowedAttrs)),e.requiredAttrs)&&t.push.apply(t,N(e.requiredAttrs)),t}),vs=/^idrefs?$/,Fs=function(e){e=e.actualNode||e;var t=(t=Ua(e)).documentElement||t,n=Nn.get("idRefsByRoot",(function(){return new WeakMap})),a=n.get(t);return a||(n.set(t,a={}),function e(t,n,a){if(t.hasAttribute){var r;"LABEL"===t.nodeName.toUpperCase()&&t.hasAttribute("for")&&(n[r=t.getAttribute("for")]=n[r]||[],n[r].push(t));for(var o=0;o<a.length;++o){var u=a[o];if(u=Fo(t.getAttribute(u)||""))for(var i=Bi(u),l=0;l<i.length;++l)n[i[l]]=n[i[l]]||[],n[i[l]].push(t)}}for(var s=0;s<t.childNodes.length;s++)1===t.childNodes[s].nodeType&&e(t.childNodes[s],n,a)}(t,a,Object.keys(so.ariaAttrs).filter((function(e){return e=so.ariaAttrs[e].type,vs.test(e)})))),a[e.id]||[]},ws=function(e,t){e=e instanceof Vt?e:Tn(e);var n=zo(e);e=Vo(e);return Array.isArray(e.allowedRoles)?e.allowedRoles.includes(t):t!==n&&!!e.allowedRoles},Es=["doc-backlink","doc-biblioentry","doc-biblioref","doc-cover","doc-endnote","doc-glossref","doc-noteref"],Cs={header:"banner",footer:"contentinfo"},xs=function(e){var t,n,a,r=!(1<arguments.length&&void 0!==arguments[1])||arguments[1],o=e instanceof Vt?e:Tn(e);return hl(o)?(a=o.props.nodeName,t=zo(o)||Cs[a],a=[],((n=o)?(n.hasAttr("role")&&(n=Bi(n.attr("role").toLowerCase()),a=a.concat(n)),a.filter((function(e){return po(e)}))):a).filter((function(e){var n=o,a=t;return!(r&&e===a||(!Es.includes(e)||Qu(e)===a)&&ws(n,e))}))):[]},As=function(e){return Object.keys(so.ariaRoles).filter((function(t){return so.ariaRoles[t].type===e}))},ks=function(e){return As(e)},Bs=function(){return Nn.get("ariaRolesNameFromContent",(function(){return Object.keys(so.ariaRoles).filter((function(e){return so.ariaRoles[e].nameFromContent}))}))};function Rs(e){return null===e}function Ns(e){return null!==e}var Ts=function(){return Bs()},Os=((Tt={attributes:{"aria-activedescendant":{type:"idref",allowEmpty:!0,unsupported:!1},"aria-atomic":{type:"boolean",values:["true","false"],unsupported:!1},"aria-autocomplete":{type:"nmtoken",values:["inline","list","both","none"],unsupported:!1},"aria-busy":{type:"boolean",values:["true","false"],unsupported:!1},"aria-checked":{type:"nmtoken",values:["true","false","mixed","undefined"],unsupported:!1},"aria-colcount":{type:"int",unsupported:!1},"aria-colindex":{type:"int",unsupported:!1},"aria-colspan":{type:"int",unsupported:!1},"aria-controls":{type:"idrefs",allowEmpty:!0,unsupported:!1},"aria-current":{type:"nmtoken",allowEmpty:!0,values:["page","step","location","date","time","true","false"],unsupported:!1},"aria-describedby":{type:"idrefs",allowEmpty:!0,unsupported:!1},"aria-describedat":{unsupported:!0,unstandardized:!0},"aria-details":{type:"idref",allowEmpty:!0,unsupported:!1},"aria-disabled":{type:"boolean",values:["true","false"],unsupported:!1},"aria-dropeffect":{type:"nmtokens",values:["copy","move","reference","execute","popup","none"],unsupported:!1},"aria-errormessage":{type:"idref",allowEmpty:!0,unsupported:!1},"aria-expanded":{type:"nmtoken",values:["true","false","undefined"],unsupported:!1},"aria-flowto":{type:"idrefs",allowEmpty:!0,unsupported:!1},"aria-grabbed":{type:"nmtoken",values:["true","false","undefined"],unsupported:!1},"aria-haspopup":{type:"nmtoken",allowEmpty:!0,values:["true","false","menu","listbox","tree","grid","dialog"],unsupported:!1},"aria-hidden":{type:"boolean",values:["true","false"],unsupported:!1},"aria-invalid":{type:"nmtoken",allowEmpty:!0,values:["true","false","spelling","grammar"],unsupported:!1},"aria-keyshortcuts":{type:"string",allowEmpty:!0,unsupported:!1},"aria-label":{type:"string",allowEmpty:!0,unsupported:!1},"aria-labelledby":{type:"idrefs",allowEmpty:!0,unsupported:!1},"aria-level":{type:"int",unsupported:!1},"aria-live":{type:"nmtoken",values:["off","polite","assertive"],unsupported:!1},"aria-modal":{type:"boolean",values:["true","false"],unsupported:!1},"aria-multiline":{type:"boolean",values:["true","false"],unsupported:!1},"aria-multiselectable":{type:"boolean",values:["true","false"],unsupported:!1},"aria-orientation":{type:"nmtoken",values:["horizontal","vertical"],unsupported:!1},"aria-owns":{type:"idrefs",allowEmpty:!0,unsupported:!1},"aria-placeholder":{type:"string",allowEmpty:!0,unsupported:!1},"aria-posinset":{type:"int",unsupported:!1},"aria-pressed":{type:"nmtoken",values:["true","false","mixed","undefined"],unsupported:!1},"aria-readonly":{type:"boolean",values:["true","false"],unsupported:!1},"aria-relevant":{type:"nmtokens",values:["additions","removals","text","all"],unsupported:!1},"aria-required":{type:"boolean",values:["true","false"],unsupported:!1},"aria-roledescription":{type:"string",allowEmpty:!0,unsupported:!1},"aria-rowcount":{type:"int",unsupported:!1},"aria-rowindex":{type:"int",unsupported:!1},"aria-rowspan":{type:"int",unsupported:!1},"aria-selected":{type:"nmtoken",values:["true","false","undefined"],unsupported:!1},"aria-setsize":{type:"int",unsupported:!1},"aria-sort":{type:"nmtoken",values:["ascending","descending","other","none"],unsupported:!1},"aria-valuemax":{type:"decimal",unsupported:!1},"aria-valuemin":{type:"decimal",unsupported:!1},"aria-valuenow":{type:"decimal",unsupported:!1},"aria-valuetext":{type:"string",unsupported:!1}},globalAttributes:["aria-atomic","aria-busy","aria-controls","aria-current","aria-describedby","aria-details","aria-disabled","aria-dropeffect","aria-flowto","aria-grabbed","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-live","aria-owns","aria-relevant","aria-roledescription"]}).role={alert:{type:"widget",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},alertdialog:{type:"widget",attributes:{allowed:["aria-expanded","aria-modal","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["dialog","section"]},application:{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage","aria-activedescendant"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["article","audio","embed","iframe","object","section","svg","video"]},article:{type:"structure",attributes:{allowed:["aria-expanded","aria-posinset","aria-setsize","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["article"],unsupported:!1},banner:{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["header"],unsupported:!1,allowedElements:["section"]},button:{type:"widget",attributes:{allowed:["aria-expanded","aria-pressed","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,implicit:["button",\'input[type="button"]\',\'input[type="image"]\',\'input[type="reset"]\',\'input[type="submit"]\',"summary"],unsupported:!1,allowedElements:[{nodeName:"a",attributes:{href:Ns}}]},cell:{type:"structure",attributes:{allowed:["aria-colindex","aria-colspan","aria-rowindex","aria-rowspan","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["row"],implicit:["td","th"],unsupported:!1},checkbox:{type:"widget",attributes:{allowed:["aria-checked","aria-required","aria-readonly","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,implicit:[\'input[type="checkbox"]\'],unsupported:!1,allowedElements:["button"]},columnheader:{type:"structure",attributes:{allowed:["aria-colindex","aria-colspan","aria-expanded","aria-rowindex","aria-rowspan","aria-required","aria-readonly","aria-selected","aria-sort","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["row"],implicit:["th"],unsupported:!1},combobox:{type:"composite",attributes:{allowed:["aria-autocomplete","aria-required","aria-activedescendant","aria-orientation","aria-errormessage"],required:["aria-expanded"]},owned:{all:["listbox","tree","grid","dialog","textbox"]},nameFrom:["author"],context:null,unsupported:!1,allowedElements:[{nodeName:"input",properties:{type:["text","search","tel","url","email"]}}]},command:{nameFrom:["author"],type:"abstract",unsupported:!1},complementary:{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["aside"],unsupported:!1,allowedElements:["section"]},composite:{nameFrom:["author"],type:"abstract",unsupported:!1},contentinfo:{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["footer"],unsupported:!1,allowedElements:["section"]},definition:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["dd","dfn"],unsupported:!1},dialog:{type:"widget",attributes:{allowed:["aria-expanded","aria-modal","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["dialog"],unsupported:!1,allowedElements:["section"]},directory:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,unsupported:!1,allowedElements:["ol","ul"]},document:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["body"],unsupported:!1,allowedElements:["article","embed","iframe","object","section","svg"]},"doc-abstract":{type:"section",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-acknowledgments":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-afterword":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-appendix":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-backlink":{type:"link",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,unsupported:!1,allowedElements:[{nodeName:"a",attributes:{href:Ns}}]},"doc-biblioentry":{type:"listitem",attributes:{allowed:["aria-expanded","aria-level","aria-posinset","aria-setsize","aria-errormessage"]},owned:null,nameFrom:["author"],context:["doc-bibliography"],unsupported:!1,allowedElements:["li"]},"doc-bibliography":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:{one:["doc-biblioentry"]},nameFrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-biblioref":{type:"link",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,unsupported:!1,allowedElements:[{nodeName:"a",attributes:{href:Ns}}]},"doc-chapter":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-colophon":{type:"section",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-conclusion":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-cover":{type:"img",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1},"doc-credit":{type:"section",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-credits":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-dedication":{type:"section",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-endnote":{type:"listitem",attributes:{allowed:["aria-expanded","aria-level","aria-posinset","aria-setsize","aria-errormessage"]},owned:null,namefrom:["author"],context:["doc-endnotes"],unsupported:!1,allowedElements:["li"]},"doc-endnotes":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:{one:["doc-endnote"]},namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-epigraph":{type:"section",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1},"doc-epilogue":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-errata":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-example":{type:"section",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["aside","section"]},"doc-footnote":{type:"section",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["aside","footer","header"]},"doc-foreword":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-glossary":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:["term","definition"],namefrom:["author"],context:null,unsupported:!1,allowedElements:["dl"]},"doc-glossref":{type:"link",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author","contents"],context:null,unsupported:!1,allowedElements:[{nodeName:"a",attributes:{href:Ns}}]},"doc-index":{type:"navigation",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["nav","section"]},"doc-introduction":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-noteref":{type:"link",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author","contents"],context:null,unsupported:!1,allowedElements:[{nodeName:"a",attributes:{href:Ns}}]},"doc-notice":{type:"note",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-pagebreak":{type:"separator",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["hr"]},"doc-pagelist":{type:"navigation",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["nav","section"]},"doc-part":{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-preface":{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-prologue":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-pullquote":{type:"none",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["aside","section"]},"doc-qna":{type:"section",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-subtitle":{type:"sectionhead",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:{nodeName:["h1","h2","h3","h4","h5","h6"]}},"doc-tip":{type:"note",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["aside"]},"doc-toc":{type:"navigation",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["nav","section"]},feed:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:{one:["article"]},nameFrom:["author"],context:null,unsupported:!1,allowedElements:["article","aside","section"]},figure:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,implicit:["figure"],unsupported:!1},form:{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["form"],unsupported:!1},grid:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-expanded","aria-colcount","aria-level","aria-multiselectable","aria-readonly","aria-rowcount","aria-errormessage"]},owned:{one:["rowgroup","row"]},nameFrom:["author"],context:null,implicit:["table"],unsupported:!1},gridcell:{type:"widget",attributes:{allowed:["aria-colindex","aria-colspan","aria-expanded","aria-rowindex","aria-rowspan","aria-selected","aria-readonly","aria-required","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["row"],implicit:["td","th"],unsupported:!1},group:{type:"structure",attributes:{allowed:["aria-activedescendant","aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["details","optgroup"],unsupported:!1,allowedElements:["dl","figcaption","fieldset","figure","footer","header","ol","ul"]},heading:{type:"structure",attributes:{required:["aria-level"],allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,implicit:["h1","h2","h3","h4","h5","h6"],unsupported:!1},img:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["img"],unsupported:!1,allowedElements:["embed","iframe","object","svg"]},input:{nameFrom:["author"],type:"abstract",unsupported:!1},landmark:{nameFrom:["author"],type:"abstract",unsupported:!1},link:{type:"widget",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,implicit:["a[href]","area[href]"],unsupported:!1,allowedElements:["button",{nodeName:"input",properties:{type:["image","button"]}}]},list:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:{all:["listitem"]},nameFrom:["author"],context:null,implicit:["ol","ul","dl"],unsupported:!1},listbox:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-multiselectable","aria-readonly","aria-required","aria-expanded","aria-orientation","aria-errormessage"]},owned:{all:["option"]},nameFrom:["author"],context:null,implicit:["select"],unsupported:!1,allowedElements:["ol","ul"]},listitem:{type:"structure",attributes:{allowed:["aria-level","aria-posinset","aria-setsize","aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["list"],implicit:["li","dt"],unsupported:!1},log:{type:"widget",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},main:{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["main"],unsupported:!1,allowedElements:["article","section"]},marquee:{type:"widget",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},math:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["math"],unsupported:!1},menu:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-expanded","aria-orientation","aria-errormessage"]},owned:{one:["menuitem","menuitemradio","menuitemcheckbox"]},nameFrom:["author"],context:null,implicit:[\'menu[type="context"]\'],unsupported:!1,allowedElements:["ol","ul"]},menubar:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-expanded","aria-orientation","aria-errormessage"]},owned:{one:["menuitem","menuitemradio","menuitemcheckbox"]},nameFrom:["author"],context:null,unsupported:!1,allowedElements:["ol","ul"]},menuitem:{type:"widget",attributes:{allowed:["aria-posinset","aria-setsize","aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["menu","menubar"],implicit:[\'menuitem[type="command"]\'],unsupported:!1,allowedElements:["button","li",{nodeName:"iput",properties:{type:["image","button"]}},{nodeName:"a",attributes:{href:Ns}}]},menuitemcheckbox:{type:"widget",attributes:{allowed:["aria-checked","aria-posinset","aria-setsize","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["menu","menubar"],implicit:[\'menuitem[type="checkbox"]\'],unsupported:!1,allowedElements:[{nodeName:["button","li"]},{nodeName:"input",properties:{type:["checkbox","image","button"]}},{nodeName:"a",attributes:{href:Ns}}]},menuitemradio:{type:"widget",attributes:{allowed:["aria-checked","aria-selected","aria-posinset","aria-setsize","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["menu","menubar"],implicit:[\'menuitem[type="radio"]\'],unsupported:!1,allowedElements:[{nodeName:["button","li"]},{nodeName:"input",properties:{type:["image","button","radio"]}},{nodeName:"a",attributes:{href:Ns}}]},navigation:{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["nav"],unsupported:!1,allowedElements:["section"]},none:{type:"structure",attributes:null,owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:[{nodeName:["article","aside","dl","embed","figcaption","fieldset","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hr","iframe","li","ol","section","ul"]},{nodeName:"img",attributes:{alt:Ns}}]},note:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["aside"]},option:{type:"widget",attributes:{allowed:["aria-selected","aria-posinset","aria-setsize","aria-checked","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["listbox"],implicit:["option"],unsupported:!1,allowedElements:[{nodeName:["button","li"]},{nodeName:"input",properties:{type:["checkbox","button"]}},{nodeName:"a",attributes:{href:Ns}}]},presentation:{type:"structure",attributes:null,owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:[{nodeName:["article","aside","dl","embed","figcaption","fieldset","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hr","iframe","li","ol","section","ul"]},{nodeName:"img",attributes:{alt:Ns}}]},progressbar:{type:"widget",attributes:{allowed:["aria-valuetext","aria-valuenow","aria-valuemax","aria-valuemin","aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["progress"],unsupported:!1},radio:{type:"widget",attributes:{allowed:["aria-selected","aria-posinset","aria-setsize","aria-required","aria-errormessage","aria-checked"]},owned:null,nameFrom:["author","contents"],context:null,implicit:[\'input[type="radio"]\'],unsupported:!1,allowedElements:[{nodeName:["button","li"]},{nodeName:"input",properties:{type:["image","button"]}}]},radiogroup:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-required","aria-expanded","aria-readonly","aria-errormessage","aria-orientation"]},owned:{all:["radio"]},nameFrom:["author"],context:null,unsupported:!1,allowedElements:{nodeName:["ol","ul","fieldset"]}},range:{nameFrom:["author"],type:"abstract",unsupported:!1},region:{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["section[aria-label]","section[aria-labelledby]","section[title]"],unsupported:!1,allowedElements:{nodeName:["article","aside"]}},roletype:{type:"abstract",unsupported:!1},row:{type:"structure",attributes:{allowed:["aria-activedescendant","aria-colindex","aria-expanded","aria-level","aria-selected","aria-rowindex","aria-errormessage"]},owned:{one:["cell","columnheader","rowheader","gridcell"]},nameFrom:["author","contents"],context:["rowgroup","grid","treegrid","table"],implicit:["tr"],unsupported:!1},rowgroup:{type:"structure",attributes:{allowed:["aria-activedescendant","aria-expanded","aria-errormessage"]},owned:{all:["row"]},nameFrom:["author","contents"],context:["grid","table","treegrid"],implicit:["tbody","thead","tfoot"],unsupported:!1},rowheader:{type:"structure",attributes:{allowed:["aria-colindex","aria-colspan","aria-expanded","aria-rowindex","aria-rowspan","aria-required","aria-readonly","aria-selected","aria-sort","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["row"],implicit:["th"],unsupported:!1},scrollbar:{type:"widget",attributes:{required:["aria-controls","aria-valuenow"],allowed:["aria-valuetext","aria-orientation","aria-errormessage","aria-valuemax","aria-valuemin"]},owned:null,nameFrom:["author"],context:null,unsupported:!1},search:{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:{nodeName:["aside","form","section"]}},searchbox:{type:"widget",attributes:{allowed:["aria-activedescendant","aria-autocomplete","aria-multiline","aria-readonly","aria-required","aria-placeholder","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:[\'input[type="search"]\'],unsupported:!1,allowedElements:{nodeName:"input",properties:{type:"text"}}},section:{nameFrom:["author","contents"],type:"abstract",unsupported:!1},sectionhead:{nameFrom:["author","contents"],type:"abstract",unsupported:!1},select:{nameFrom:["author"],type:"abstract",unsupported:!1},separator:{type:"structure",attributes:{allowed:["aria-expanded","aria-orientation","aria-valuenow","aria-valuemax","aria-valuemin","aria-valuetext","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["hr"],unsupported:!1,allowedElements:["li"]},slider:{type:"widget",attributes:{allowed:["aria-valuetext","aria-orientation","aria-readonly","aria-errormessage","aria-valuemax","aria-valuemin"],required:["aria-valuenow"]},owned:null,nameFrom:["author"],context:null,implicit:[\'input[type="range"]\'],unsupported:!1},spinbutton:{type:"widget",attributes:{allowed:["aria-valuetext","aria-required","aria-readonly","aria-errormessage","aria-valuemax","aria-valuemin"],required:["aria-valuenow"]},owned:null,nameFrom:["author"],context:null,implicit:[\'input[type="number"]\'],unsupported:!1,allowedElements:{nodeName:"input",properties:{type:["text","tel"]}}},status:{type:"widget",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["output"],unsupported:!1,allowedElements:["section"]},structure:{type:"abstract",unsupported:!1},switch:{type:"widget",attributes:{allowed:["aria-errormessage"],required:["aria-checked"]},owned:null,nameFrom:["author","contents"],context:null,unsupported:!1,allowedElements:["button",{nodeName:"input",properties:{type:["checkbox","image","button"]}},{nodeName:"a",attributes:{href:Ns}}]},tab:{type:"widget",attributes:{allowed:["aria-selected","aria-expanded","aria-setsize","aria-posinset","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["tablist"],unsupported:!1,allowedElements:[{nodeName:["button","h1","h2","h3","h4","h5","h6","li"]},{nodeName:"input",properties:{type:"button"}},{nodeName:"a",attributes:{href:Ns}}]},table:{type:"structure",attributes:{allowed:["aria-colcount","aria-rowcount","aria-errormessage"]},owned:{one:["rowgroup","row"]},nameFrom:["author","contents"],context:null,implicit:["table"],unsupported:!1},tablist:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-expanded","aria-level","aria-multiselectable","aria-orientation","aria-errormessage"]},owned:{all:["tab"]},nameFrom:["author"],context:null,unsupported:!1,allowedElements:["ol","ul"]},tabpanel:{type:"widget",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},term:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,implicit:["dt"],unsupported:!1},textbox:{type:"widget",attributes:{allowed:["aria-activedescendant","aria-autocomplete","aria-multiline","aria-readonly","aria-required","aria-placeholder","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:[\'input[type="text"]\',\'input[type="email"]\',\'input[type="password"]\',\'input[type="tel"]\',\'input[type="url"]\',"input:not([type])","textarea"],unsupported:!1},timer:{type:"widget",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1},toolbar:{type:"structure",attributes:{allowed:["aria-activedescendant","aria-expanded","aria-orientation","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:[\'menu[type="toolbar"]\'],unsupported:!1,allowedElements:["ol","ul"]},tooltip:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,unsupported:!1},tree:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-multiselectable","aria-required","aria-expanded","aria-orientation","aria-errormessage"]},owned:{all:["treeitem"]},nameFrom:["author"],context:null,unsupported:!1,allowedElements:["ol","ul"]},treegrid:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-colcount","aria-expanded","aria-level","aria-multiselectable","aria-readonly","aria-required","aria-rowcount","aria-orientation","aria-errormessage"]},owned:{one:["rowgroup","row"]},nameFrom:["author"],context:null,unsupported:!1},treeitem:{type:"widget",attributes:{allowed:["aria-checked","aria-selected","aria-expanded","aria-level","aria-posinset","aria-setsize","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["group","tree"],unsupported:!1,allowedElements:["li",{nodeName:"a",attributes:{href:Ns}}]},widget:{type:"abstract",unsupported:!1},window:{nameFrom:["author"],type:"abstract",unsupported:!1}},Tt.implicitHtmlRole=Ao,Tt.elementsAllowedNoRole=[{nodeName:["base","body","caption","col","colgroup","datalist","dd","details","dt","head","html","keygen","label","legend","main","map","math","meta","meter","noscript","optgroup","param","picture","progress","script","source","style","template","textarea","title","track"]},{nodeName:"area",attributes:{href:Ns}},{nodeName:"input",properties:{type:["color","data","datatime","file","hidden","month","number","password","range","reset","submit","time","week"]}},{nodeName:"link",attributes:{href:Ns}},{nodeName:"menu",attributes:{type:"context"}},{nodeName:"menuitem",attributes:{type:["command","checkbox","radio"]}},{nodeName:"select",condition:function(e){return e instanceof o.AbstractVirtualNode||(e=o.utils.getNodeFromTree(e)),1<Number(e.attr("size"))},properties:{multiple:!0}},{nodeName:["clippath","cursor","defs","desc","feblend","fecolormatrix","fecomponenttransfer","fecomposite","feconvolvematrix","fediffuselighting","fedisplacementmap","fedistantlight","fedropshadow","feflood","fefunca","fefuncb","fefuncg","fefuncr","fegaussianblur","feimage","femerge","femergenode","femorphology","feoffset","fepointlight","fespecularlighting","fespotlight","fetile","feturbulence","filter","hatch","hatchpath","lineargradient","marker","mask","meshgradient","meshpatch","meshrow","metadata","mpath","pattern","radialgradient","solidcolor","stop","switch","view"]}],Tt.elementsAllowedAnyRole=[{nodeName:"a",attributes:{href:Rs}},{nodeName:"img",attributes:{alt:Rs}},{nodeName:["abbr","address","canvas","div","p","pre","blockquote","ins","del","output","span","table","tbody","thead","tfoot","td","em","strong","small","s","cite","q","dfn","abbr","time","code","var","samp","kbd","sub","sup","i","b","u","mark","ruby","rt","rp","bdi","bdo","br","wbr","th","tr"]}],Tt.evaluateRoleForElement={A:function(e){var t=e.node;e=e.out;return"http://www.w3.org/2000/svg"===t.namespaceURI||!t.href.length||e},AREA:function(e){return!e.node.href},BUTTON:function(e){var t=e.node,n=e.role;e=e.out;return"menu"===t.getAttribute("type")?"menuitem"===n:e},IMG:function(e){var t=e.node,n=e.role,a=e.out;switch(t.alt){case null:return a;case"":return"presentation"===n||"none"===n;default:return"presentation"!==n&&"none"!==n}},INPUT:function(e){var t=e.node,n=e.role,a=e.out;switch(t.type){case"button":case"image":return a;case"checkbox":return!("button"!==n||!t.hasAttribute("aria-pressed"))||a;case"radio":return"menuitemradio"===n;case"text":return"combobox"===n||"searchbox"===n||"spinbutton"===n;case"tel":return"combobox"===n||"spinbutton"===n;case"url":case"search":case"email":return"combobox"===n;default:return!1}},LI:function(e){var t=e.node;e=e.out;return!o.utils.matchesSelector(t,"ol li, ul li")||e},MENU:function(e){return"context"!==e.node.getAttribute("type")},OPTION:function(e){return e=e.node,!o.utils.matchesSelector(e,"select > option, datalist > option, optgroup > option")},SELECT:function(e){var t=e.node;e=e.role;return!t.multiple&&t.size<=1&&"menu"===e},SVG:function(e){var t=e.node;e=e.out;return!(!t.parentNode||"http://www.w3.org/2000/svg"!==t.parentNode.namespaceURI)||e}},Tt.rolesOfType={widget:["button","checkbox","dialog","gridcell","link","log","marquee","menuitem","menuitemcheckbox","menuitemradio","option","progressbar","radio","scrollbar","searchbox","slider","spinbutton","status","switch","tab","tabpanel","textbox","timer","tooltip","tree","treeitem"]},Tt),_s=function(e){var t=null;return(e=Os.role[e])&&e.implicit?In(e.implicit):t},Ss=function(e){return!!Fs(e).length},Is=function(e){return e=Tn(e),Tu(e)},Ps=function(e){return(e=so.ariaRoles[e])&&Array.isArray(e.requiredAttrs)?N(e.requiredAttrs):[]},Ms=function(e){return(e=so.ariaRoles[e])&&Array.isArray(e.requiredContext)?N(e.requiredContext):null},Ls=function(e){return(e=so.ariaRoles[e])&&Array.isArray(e.requiredOwned)?N(e.requiredOwned):null},js=function(e,t){var n,a=(e=e instanceof Vt?e:Tn(e)).attr(t),r=so.ariaAttrs[t];if(!r)return!0;if(r.allowEmpty&&(!a||""===a.trim()))return!0;switch(r.type){case"boolean":return["true","false"].includes(a.toLowerCase());case"nmtoken":return"string"==typeof a&&r.values.includes(a.toLowerCase());case"nmtokens":return(n=Bi(a)).reduce((function(e,t){return e&&r.values.includes(t)}),0!==n.length);case"idref":try{var o=Ua(e.actualNode);return!(!a||!o.getElementById(a))}catch(e){throw new TypeError("Cannot resolve id references for partial DOM")}case"idrefs":return Zr(e,t).some((function(e){return!!e}));case"string":return""!==a.trim();case"decimal":return!(!(n=a.match(/^[-+]?([0-9]*)\\.?([0-9]*)$/))||!n[1]&&!n[2]);case"int":return o=void 0!==r.minValue?r.minValue:-1/0,/^[-+]?[0-9]+$/.test(a)&&parseInt(a)>=o}},qs=function(e){return!!so.ariaAttrs[e]};var Vs={};function zs(e,t,n,a){var r=Do(e);if(!(n=n||Ms(r)))return null;for(var o=n.includes("group"),u=a?e:e.parent;u;){var i=Go(u,{noPresentational:!0});if(i){if("group"!==i||!o)return n.includes(i)?null:n;t.includes(r)&&n.push(r),n=n.filter((function(e){return"group"!==e}))}u=u.parent}return n}U(Vs,{getAriaRolesByType:function(){return As},getAriaRolesSupportingNameFromContent:function(){return Bs},getElementSpec:function(){return Vo},getElementsByContentType:function(){return fo},getGlobalAriaAttrs:function(){return mo},implicitHtmlRoles:function(){return Ao}});var $s={ARTICLE:!0,ASIDE:!0,NAV:!0,SECTION:!0},Us={application:!0,banner:!1,complementary:!0,contentinfo:!0,form:!0,main:!0,navigation:!0,region:!0,search:!1};var Hs={},Gs=(U(Hs,{Color:function(){return li},centerPointOfRect:function(){return Gs},elementHasImage:function(){return ii},elementIsDistinct:function(){return Ks},filteredRectStack:function(){return Js},flattenColors:function(){return Zs},flattenShadowColors:function(){return ec},getBackgroundColor:function(){return ac},getBackgroundStack:function(){return tc},getContrast:function(){return uc},getForegroundColor:function(){return ic},getOwnBackgroundColor:function(){return si},getRectStack:function(){return Ys},getTextShadowColors:function(){return nc},hasValidContrastRatio:function(){return lc},incompleteData:function(){return ui}}),function(e){if(!(e.left>t.innerWidth||e.top>t.innerHeight))return{x:Math.min(Math.ceil(e.left+e.width/2),t.innerWidth-1),y:Math.min(Math.ceil(e.top+e.height/2),t.innerHeight-1)}});function Ws(e){return e.getPropertyValue("font-family").split(/[,;]/g).map((function(e){return e.trim().toLowerCase()}))}var Ks=function(e,n){var a,r=t.getComputedStyle(e);return"none"!==r.getPropertyValue("background-image")||!!["border-bottom","border-top","outline"].reduce((function(e,t){var n=new li;return n.parseString(r.getPropertyValue(t+"-color")),e||"none"!==r.getPropertyValue(t+"-style")&&0<parseFloat(r.getPropertyValue(t+"-width"))&&0!==n.alpha}),!1)||(a=t.getComputedStyle(n),Ws(r)[0]!==Ws(a)[0])||(e=["text-decoration-line","text-decoration-style","font-weight","font-style","font-size"].reduce((function(e,t){return e||r.getPropertyValue(t)!==a.getPropertyValue(t)}),!1),(n=r.getPropertyValue("text-decoration")).split(" ").length<3?e||n!==a.getPropertyValue("text-decoration"):e)},Ys=function(e){var t=Jr(e);return!(e=Lu(e))||e.length<=1?[t]:e.some((function(e){return void 0===e}))?null:(e.splice(0,0,t),e)},Js=function(e){var t,n,a=Ys(e);return a&&1===a.length?a[0]:a&&1<a.length?(t=a.shift(),a.forEach((function(r,o){var u,i;0!==o&&(u=a[o-1],i=a[o],n=u.every((function(e,t){return e===i[t]}))||t.includes(e))})),n?a[0]:(ui.set("bgColor","elmPartiallyObscuring"),null)):(ui.set("bgColor","outsideViewport"),null)},Xs={normal:function(e,t){return t},multiply:function(e,t){return t*e},screen:function(e,t){return e+t-e*t},overlay:function(e,t){return this["hard-light"](t,e)},darken:function(e,t){return Math.min(e,t)},lighten:function(e,t){return Math.max(e,t)},"color-dodge":function(e,t){return 0===e?0:1===t?1:Math.min(1,e/(1-t))},"color-burn":function(e,t){return 1===e?1:0===t?0:1-Math.min(1,(1-e)/t)},"hard-light":function(e,t){return t<=.5?this.multiply(e,2*t):this.screen(e,2*t-1)},"soft-light":function(e,t){return t<=.5?e-(1-2*t)*e*(1-e):e+(2*t-1)*((e<=.25?((16*e-12)*e+4)*e:Math.sqrt(e))-e)},difference:function(e,t){return Math.abs(e-t)},exclusion:function(e,t){return e+t-2*e*t}};function Qs(e,t,n,a,r){return t*(1-a)*e+t*a*Xs[r](n/255,e/255)*255+(1-t)*a*n}var Zs=function(e,t){var n,a,r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:"normal",o=Qs(e.red,e.alpha,t.red,t.alpha,r),u=Qs(e.green,e.alpha,t.green,t.alpha,r),i=(r=Qs(e.blue,e.alpha,t.blue,t.alpha,r),n=e.alpha+t.alpha*(1-e.alpha),i=0,a=1,Math.min(Math.max(i,n),a));return 0===i?new li(o,u,r,i):(n=Math.round(o/i),a=Math.round(u/i),o=Math.round(r/i),new li(n,a,o,i))};function ec(e,t){var n=(1-(r=e.alpha))*t.red+r*e.red,a=(1-r)*t.green+r*e.green,r=(1-r)*t.blue+r*e.blue;t=e.alpha+t.alpha*(1-e.alpha);return new li(n,a,r,t)}function tc(e){for(var n=Lu(e).map((function(n){return function(e){var n=e.indexOf(a.body),r=si(t.getComputedStyle(a.documentElement));return 1<n&&0===r.alpha&&!ii(a.documentElement)&&(1<n&&(e.splice(n,1),e.push(a.body)),0<(r=e.indexOf(a.documentElement)))&&(e.splice(r,1),e.push(a.documentElement)),e}(n=hi(n,e))})),r=0;r<n.length;r++){var o=n[r];if(o[0]!==e)return ui.set("bgColor","bgOverlap"),null;if(0!==r&&!function(e,t){if(e!==t){if(null===e||null===t)return;if(e.length!==t.length)return;for(var n=0;n<e.length;++n)if(e[n]!==t[n])return}return 1}(o,n[0]))return ui.set("bgColor","elmPartiallyObscuring"),null}return n[0]||null}var nc=function(e){var n,a,r,o=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},u=o.minRatio,i=o.maxRatio,l=t.getComputedStyle(e);return"none"===(o=l.getPropertyValue("text-shadow"))?[]:(n=l.getPropertyValue("font-size"),a=parseInt(n),tn(!1===isNaN(a),"Unable to determine font-size value ".concat(n)),r=[],function(e){var t={pixels:[]},n=e.trim(),a=[t];if(!n)return[];for(;n;){var r=n.match(/^rgba?\\([0-9,.\\s]+\\)/i)||n.match(/^[a-z]+/i)||n.match(/^#[0-9a-f]+/i),o=n.match(/^([0-9.-]+)px/i)||n.match(/^(0)/);if(r)tn(!t.colorStr,"Multiple colors identified in text-shadow: ".concat(e)),n=n.replace(r[0],"").trim(),t.colorStr=r[0];else if(o)tn(t.pixels.length<3,"Too many pixel units in text-shadow: ".concat(e)),n=n.replace(o[0],"").trim(),r=parseFloat(("."===o[1][0]?"0":"")+o[1]),t.pixels.push(r);else{if(","!==n[0])throw new Error("Unable to process text-shadows: ".concat(e));tn(2<=t.pixels.length,"Missing pixel value in text-shadow: ".concat(e)),a.push(t={pixels:[]}),n=n.substr(1).trim()}}return a}(o).forEach((function(e){var t=e.colorStr,n=(e=e.pixels,t=t||l.getPropertyValue("color"),(e=_(e,3))[0]),o=e[1];e=void 0===(e=e[2])?0:e;(!u||a*u<=e)&&(!i||e<a*i)&&(t=function(e){var t=e.colorStr,n=e.offsetX,a=e.offsetY,r=e.blurRadius;e=e.fontSize;return r<n||r<a?new li(0,0,0,0):((n=new li).parseString(t),n.alpha*=function(e,t){return 0===e?1:.185/(e/t+.4)}(r,e),n)}({colorStr:t,offsetY:n,offsetX:o,blurRadius:e,fontSize:a}),r.push(t))})),r)};function ac(e){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[],r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:.1,o=Tn(e),u=o._cache.getBackgroundColor;return u?(n.push.apply(n,N(u.bgElms)),ui.set("bgColor",u.incompleteData),u.bgColor):(u=function(e,n,r){var o=nc(e,{minRatio:r});o.length&&(o=[{color:o.reduce(ec)}]);r=tc(e);var u=Mu(e);return(r||[]).some((function(e){var a=t.getComputedStyle(e);if(ii(e,a))return o=null,n.push(e),!0;var r=si(a);return 0!==r.alpha&&("inline"===a.getPropertyValue("display")||rc(e,u)?(n.push(e),e=a.getPropertyValue("mix-blend-mode"),o.unshift({color:r,blendMode:oc(e)}),1===r.alpha):(o=null,n.push(e),ui.set("bgColor","elmPartiallyObscured"),!0))})),null===o||null===r?null:(e=function(e,n){var r,o,u,i,l=[];return n||(n=a.documentElement,i=a.body,n=t.getComputedStyle(n),r=t.getComputedStyle(i),o=si(n),i=0!==(u=si(r)).alpha&&rc(i,e.getBoundingClientRect()),(0!==u.alpha&&0===o.alpha||i&&1!==u.alpha)&&l.unshift({color:u,blendMode:oc(r.getPropertyValue("mix-blend-mode"))}),0===o.alpha)||i&&1===u.alpha||l.unshift({color:o,blendMode:oc(n.getPropertyValue("mix-blend-mode"))}),l}(e,r.includes(a.body)),o.unshift.apply(o,N(e)),0===o.length?new li(255,255,255,1):(r=o.reduce((function(e,t){return Zs(t.color,e.color instanceof li?e.color:e,t.blendMode)})),Zs(r.color instanceof li?r.color:r,new li(255,255,255,1))))}(e,n,r),o._cache.getBackgroundColor={bgColor:u,bgElms:n,incompleteData:ui.get("bgColor")},u)}function rc(e,n){n=Array.isArray(n)?n:[n];var a=e.getBoundingClientRect(),r=a.right,o=a.bottom,u=t.getComputedStyle(e).getPropertyValue("overflow");return(["scroll","auto"].includes(u)||e instanceof t.HTMLHtmlElement)&&(r=a.left+e.scrollWidth,o=a.top+e.scrollHeight),n.every((function(e){return e.top>=a.top&&e.bottom<=o&&e.left>=a.left&&e.right<=r}))}function oc(e){return e||void 0}var uc=function(e,t){return t&&e?(t.alpha<1&&(t=Zs(t,e)),e=e.getRelativeLuminance(),t=t.getRelativeLuminance(),(Math.max(t,e)+.05)/(Math.min(t,e)+.05)):null};function ic(e,n,a){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{},o=t.getComputedStyle(e),u=function e(n,a){if(!n)return 1;var r=Tn(n);return r&&void 0!==r._opacity&&null!==r._opacity?r._opacity:(null!=a||(a=t.getComputedStyle(n)),a=a.getPropertyValue("opacity"),a*=e(n.parentElement),r&&(r._opacity=a),a)}(e,o);return(r=function(e,t){t=void 0===(t=t.textStrokeEmMin)?0:t;if(0===(a=parseFloat(e.getPropertyValue("-webkit-text-stroke-width"))))return null;var n=e.getPropertyValue("font-size"),a=a/parseFloat(n);return isNaN(a)||a<t?null:(n=e.getPropertyValue("-webkit-text-stroke-color"),(new li).parseString(n))}(o,r))&&r.alpha*u==1||(o=o,o=(new li).parseString(o.getPropertyValue("-webkit-text-fill-color")||o.getPropertyValue("color")),(r=r?Zs(r,o):o).alpha*u==1)||(r=nc(e,{minRatio:0}).reduce((function(e,t){return Zs(e,t)}),r)).alpha*u==1?(r.alpha=1,r):null===(a=null!=a?a:ac(e,[]))?(o=ui.get("bgColor"),ui.set("fgColor",o),null):(r.alpha=r.alpha*u,Zs(r,a))}var lc=function(e,t,n,a){return e=uc(e,t),{isValid:(t=a&&Math.ceil(72*n)/96<14||!a&&Math.ceil(72*n)/96<18?4.5:3)<e,contrastRatio:e,expectedContrastRatio:t}},sc=Ya((function(e,n){function a(e,t){return r.getPropertyValue(e)===t}var r=t.getComputedStyle(e,n);return a("content","none")||a("display","none")||a("visibility","hidden")||!1===a("position","absolute")||0===si(r).alpha&&a("background-image","none")?0:(e=cc(r.getPropertyValue("width")),n=cc(r.getPropertyValue("height")),"px"!==e.unit||"px"!==n.unit?0===e.value||0===n.value?0:1/0:e.value*n.value)}));function cc(e){var t=(e=_(e.match(/^([0-9.]+)([a-z]+)$/i)||[],3))[1];e=void 0===(e=e[2])?"":e;return{value:parseFloat(void 0===t?"":t),unit:e.toLowerCase()}}function dc(e,t){return e=e.getRelativeLuminance(),t=t.getRelativeLuminance(),(Math.max(e,t)+.05)/(Math.min(e,t)+.05)}var pc=["block","list-item","table","flex","grid","inline-block"];function Dc(e){return e=t.getComputedStyle(e).getPropertyValue("display"),-1!==pc.indexOf(e)||"table-"===e.substr(0,6)}var fc=["block","list-item","table","flex","grid","inline-block"];function mc(e){return e=t.getComputedStyle(e).getPropertyValue("display"),-1!==fc.indexOf(e)||"table-"===e.substr(0,6)}function hc(e){return e=parseInt(e.attr("tabindex"),10),!isNaN(e)&&e<0}function gc(e,t){return t=bc(t),e=bc(e),!(!t||!e)&&t.includes(e)}function bc(e){return e=ku(e,{emoji:!0,nonBmp:!0,punctuations:!0}),Fo(e)}function yc(e){return""!==(e||"").trim()}function vc(e,t){var n=1<arguments.length&&void 0!==t&&t;return e.map((function(e){return{vChild:e,nested:n}}))}function Fc(e,t){return e=e.boundingClientRect,t=t.boundingClientRect,e.top>=t.top&&e.left>=t.left&&e.bottom<=t.bottom&&e.right<=t.right}function wc(e){return{width:Math.round(10*e.width)/10,height:Math.round(10*e.height)/10}}function Ec(e,t){return e.actualNode.contains(t.actualNode)&&!Xu(t)}function Cc(e,t){var n=t.width;t=t.height;return e<=n+.05&&e<=t+.05}function xc(e){return e.map((function(e){return e.actualNode}))}function Ac(e,t){var n=null==(n=t.data)?void 0:n.headingOrder,a=Bc(t.node.ancestry,1);return n&&(t=n.map((function(e){return O({},e,{ancestry:a.concat(e.ancestry)})})),-1===(n=function(e,t){for(;t.length;){var n=kc(e,t);if(-1!==n)return n;t=Bc(t,1)}return-1}(e,a))?e.push.apply(e,N(t)):e.splice.apply(e,[n,0].concat(N(t)))),e}function kc(e,t){return e.findIndex((function(e){return Fl(e.ancestry,t)}))}function Bc(e,t){return e.slice(0,e.length-t)}U(_t={},{aria:function(){return bs},color:function(){return Hs},dom:function(){return za},forms:function(){return Rc},matches:function(){return qo},math:function(){return Vr},standards:function(){return Vs},table:function(){return Oc},text:function(){return Qr},utils:function(){return zt}});var Rc={},Nc=(U(Rc,{isAriaCombobox:function(){return fu},isAriaListbox:function(){return Du},isAriaRange:function(){return hu},isAriaTextbox:function(){return pu},isDisabled:function(){return Tc},isNativeSelect:function(){return du},isNativeTextbox:function(){return cu}}),["fieldset","button","select","input","textarea"]),Tc=function e(t){var n,a,r=t._isDisabled;return"boolean"!=typeof r&&(n=t.props.nodeName,a=t.attr("aria-disabled"),r=!(!Nc.includes(n)||!t.hasAttr("disabled"))||(a?"true"===a.toLowerCase():!!t.parent&&e(t.parent)),t._isDisabled=r),r},Oc={},_c=(U(Oc,{getAllCells:function(){return _c},getCellPosition:function(){return go},getHeaders:function(){return Ic},getScope:function(){return bo},isColumnHeader:function(){return yo},isDataCell:function(){return Pc},isDataTable:function(){return Mc},isHeader:function(){return Lc},isRowHeader:function(){return vo},toArray:function(){return ho},toGrid:function(){return ho},traverse:function(){return jc}}),function(e){for(var t,n,a=[],r=0,o=e.rows.length;r<o;r++)for(t=0,n=e.rows[r].cells.length;t<n;t++)a.push(e.rows[r].cells[t]);return a});function Sc(e,t,n){for(var a,r="row"===e?"_rowHeaders":"_colHeaders",u="row"===e?vo:yo,i=(s=n[t.y][t.x]).colSpan-1,l=s.getAttribute("rowspan"),s=(l=0===parseInt(l)||0===s.rowspan?n.length:s.rowSpan,t.y+(l-1)),c=t.x+i,d="row"===e?t.y:0,p="row"===e?0:t.x,D=[],f=s;d<=f&&!a;f--)for(var m=c;p<=m;m--){var h=n[f]?n[f][m]:void 0;if(h){var g=o.utils.getNodeFromTree(h);if(g[r]){a=g[r];break}D.push(h)}}return a=(a||[]).concat(D.filter(u)),D.forEach((function(e){o.utils.getNodeFromTree(e)[r]=a})),a}var Ic=function(e,t){if(e.getAttribute("headers")){var n=Zr(e,"headers");if(n.filter((function(e){return e})).length)return n}return t=t||ho(Wa(e,"table")),e=Sc("row",n=go(e,t),t),n=Sc("col",n,t),[].concat(e,n).reverse()},Pc=function(e){var t;return!(!e.children.length&&!e.textContent.trim())&&(t=e.getAttribute("role"),po(t)?["cell","gridcell"].includes(t):"TD"===e.nodeName.toUpperCase())},Mc=function(e){var n=(e.getAttribute("role")||"").toLowerCase();if(("presentation"===n||"none"===n)&&!Eo(e))return!1;if("true"===e.getAttribute("contenteditable")||Wa(e,\'[contenteditable="true"]\'))return!0;if("grid"===n||"treegrid"===n||"table"===n)return!0;if("landmark"===Qu(n))return!0;if("0"===e.getAttribute("datatable"))return!1;if(e.getAttribute("summary"))return!0;if(e.tHead||e.tFoot||e.caption)return!0;for(var a=0,r=e.children.length;a<r;a++)if("COLGROUP"===e.children[a].nodeName.toUpperCase())return!0;for(var o,u,i,l=0,s=e.rows.length,c=!1,d=0;d<s;d++)for(var p,D=0,f=(p=e.rows[d]).cells.length;D<f;D++){if("TH"===(o=p.cells[D]).nodeName.toUpperCase())return!0;if(c||o.offsetWidth===o.clientWidth&&o.offsetHeight===o.clientHeight||(c=!0),o.getAttribute("scope")||o.getAttribute("headers")||o.getAttribute("abbr"))return!0;if(["columnheader","rowheader"].includes((o.getAttribute("role")||"").toLowerCase()))return!0;if(1===o.children.length&&"ABBR"===o.children[0].nodeName.toUpperCase())return!0;l++}if(e.getElementsByTagName("table").length)return!1;if(s<2)return!1;if(1===(n=e.rows[Math.ceil(s/2)]).cells.length&&1===n.cells[0].colSpan)return!1;if(5<=n.cells.length)return!0;if(c)return!0;for(d=0;d<s;d++){if(p=e.rows[d],u&&u!==t.getComputedStyle(p).getPropertyValue("background-color"))return!0;if(u=t.getComputedStyle(p).getPropertyValue("background-color"),i&&i!==t.getComputedStyle(p).getPropertyValue("background-image"))return!0;i=t.getComputedStyle(p).getPropertyValue("background-image")}return 20<=s||!(br(e).width>.95*yr(t).width||l<10||e.querySelector("object, embed, iframe, applet"))},Lc=function(e){return!(!yo(e)&&!vo(e))||!!e.getAttribute("id")&&(e=an(e.getAttribute("id")),!!a.querySelector(\'[headers~="\'.concat(e,\'"]\')))},jc=function(e,t,n,a){if(Array.isArray(t)&&(a=n,n=t,t={x:0,y:0}),"string"==typeof e)switch(e){case"left":e={x:-1,y:0};break;case"up":e={x:0,y:-1};break;case"right":e={x:1,y:0};break;case"down":e={x:0,y:1}}return function e(t,n,a,r){var o,u=a[n.y]?a[n.y][n.x]:void 0;return u?"function"==typeof r&&!0===(o=r(u,n,a))?[u]:((o=e(t,{x:n.x+t.x,y:n.y+t.y},a,r)).unshift(u),o):[]}(e,{x:t.x+e.x,y:t.y+e.y},n,a)};var qc=/[;,\\s]/,Vc=/^[0-9.]+$/;function zc(e){return{fontWeight:function(e){switch(e){case"lighter":return 100;case"normal":return 400;case"bold":return 700;case"bolder":return 900}return e=parseInt(e),isNaN(e)?400:e}((e=t.getComputedStyle(function(e){for(var t=e,n=e.textContent.trim(),a=n;a===n&&void 0!==t;){var r=-1;if(0===(e=t).children.length)return e;for(;r++,""===(a=e.children[r].textContent.trim())&&r+1<e.children.length;);t=e.children[r]}return e}(e))).getPropertyValue("font-weight")),fontSize:parseInt(e.getPropertyValue("font-size")),isItalic:"italic"===e.getPropertyValue("font-style")}}function $c(e,t,n){return n.reduce((function(n,a){return n||(!a.size||e.fontSize/a.size>t.fontSize)&&(!a.weight||e.fontWeight-a.weight>t.fontWeight)&&(!a.italic||e.isItalic&&!t.isItalic)}),!1)}var Uc=As("landmark"),Hc=["alert","log","status"];function Gc(e){return"caption"===e.props.nodeName}St=wr;var Wc=function(e,t,n){return n.initiator};var Kc={emoji:!0,nonBmp:!1,punctuations:!0};var Yc=function(e,t){try{return"svg"===t.props.nodeName||!!Hn(t,"svg")}catch(e){return!1}};var Jc=function(e,t){var n=Do(t);return!(n&&!["none","presentation"].includes(n)&&!(ro[n]||{}).accessibleNameRequired&&!Eo(t))};var Xc=[function(e,t){return Qc(t)},function(e,t){return"area"!==t.props.nodeName},function(e,t){return!Yc(0,t)},function(e,t){return Eo(t)},function(e,t){return Xu(t)||!Zc(t)},function(e){return!ti(e,{noLengthCompare:!0})}];function Qc(e){return"widget"===Qu(e)}var Zc=Ya((function e(t){return!(null==t||!t.parent)&&(!(!Qc(t.parent)||!Xu(t.parent))||e(t.parent))})),ed={"abstractrole-evaluate":function(e,t,n){return 0<(n=Bi(n.attr("role")).filter((function(e){return"abstract"===Qu(e)}))).length&&(this.data(n),!0)},"accesskeys-after":function(e){var t={};return e.filter((function(e){if(e.data){var n=e.data.toUpperCase();if(!t[n])return(t[n]=e).relatedNodes=[],!0;t[n].relatedNodes.push(e.relatedNodes[0])}return!1})).map((function(e){return e.result=!!e.relatedNodes.length,e}))},"accesskeys-evaluate":function(e,t,n){return Dr(n)||(this.data(n.attr("accesskey")),this.relatedNodes([e])),!0},"alt-space-value-evaluate":function(e,t,n){return"string"==typeof(n=n.attr("alt"))&&/^\\s+$/.test(n)},"aria-allowed-attr-evaluate":function(e,t,n){var a=[],r=Go(n),o=n.attrNames,u=ys(r),i=(Array.isArray(t[r])&&(u=_l(t[r].concat(u))),Nn.get("aria-allowed-attr-table",(function(){return new WeakMap})));function l(){if(n.parent&&"row"===r){var e=Hn(n,\'table, [role="treegrid"], [role="table"], [role="grid"]\'),t=i.get(e);if(e&&!t&&(t=Go(e),i.set(e,t)),["table","grid"].includes(t)&&"row"===r)return!0}}t=Array.isArray(t.validTreeRowAttrs)?t.validTreeRowAttrs:[];var s={};if(t.forEach((function(e){s[e]=l})),u)for(var c=0;c<o.length;c++){var d,p=o[c];(qs(p)&&null!=(d=s[p])&&d.call(s)||qs(p)&&!u.includes(p))&&a.push(p+\'="\'+n.attr(p)+\'"\')}return!a.length||(this.data(a),!(hl(n)||r||Eo(n))&&void 0)},"aria-allowed-attr-matches":function(e,t){var n=/^aria-/,a=t.attrNames;if(a.length)for(var r=0,o=a.length;r<o;r++)if(n.test(a[r]))return!0;return!1},"aria-allowed-role-evaluate":function(e){var t=2<arguments.length?arguments[2]:void 0,n=void 0===(n=(a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).allowImplicit)||n,a=void 0===(a=a.ignoredTags)?[]:a,r=t.props.nodeName;return!!a.map((function(e){return e.toLowerCase()})).includes(r)||!(a=xs(t,n)).length||(this.data(a),!uu(t)&&void 0)},"aria-allowed-role-matches":function(e,t){return null!==Do(t,{dpub:!0,fallback:!0})},"aria-busy-evaluate":function(e,t,n){return"true"===n.attr("aria-busy")},"aria-errormessage-evaluate":function(e,t,n){t=Array.isArray(t)?t:[];var a=n.attr("aria-errormessage"),r=n.hasAttr("aria-errormessage"),o=n.attr("aria-invalid");return!n.hasAttr("aria-invalid")||"false"===o||-1!==t.indexOf(a)||!r||(this.data(Bi(a)),function(e){if(""===e.trim())return so.ariaAttrs["aria-errormessage"].allowEmpty;var t;try{t=e&&Zr(n,"aria-errormessage")[0]}catch(t){return void this.data({messageKey:"idrefs",values:Bi(e)})}return t?uu(t)?"alert"===t.getAttribute("role")||"assertive"===t.getAttribute("aria-live")||"polite"===t.getAttribute("aria-live")||-1<Bi(n.attr("aria-describedby")).indexOf(e):(this.data({messageKey:"hidden",values:Bi(e)}),!1):void 0}.call(this,a))},"aria-has-attr-matches":function(e,t){var n=/^aria-/;return t.attrNames.some((function(e){return n.test(e)}))},"aria-hidden-body-evaluate":function(e,t,n){return"true"!==n.attr("aria-hidden")},"aria-hidden-focus-matches":function(e){return function e(t){return!t||"true"!==t.getAttribute("aria-hidden")&&e(hr(t))}(hr(e))},"aria-label-evaluate":function(e,t,n){return!!Fo(no(n))},"aria-labelledby-evaluate":function(e,t,n){try{return!!Fo(to(n))}catch(e){}},"aria-level-evaluate":function(e,t,n){if(n=n.attr("aria-level"),!(6<(n=parseInt(n,10))))return!0},"aria-prohibited-attr-evaluate":function(e){var t,n=2<arguments.length?arguments[2]:void 0,a=(null==(a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{})?void 0:a.elementsAllowedAriaLabel)||[],r=n.props.nodeName,o=Go(n,{chromium:!0});return 0!==(a=function(e,t,n){var a=so.ariaRoles[e];return a?a.prohibitedAttrs||[]:e||n.includes(t)?[]:["aria-label","aria-labelledby"]}(o,r,a).filter((function(e){return!!n.attrNames.includes(e)&&""!==Fo(n.attr(e))}))).length&&(t=n.hasAttr("role")?"hasRole":"noRole",t+=1<a.length?"Plural":"Singular",this.data({role:o,nodeName:r,messageKey:t,prohibited:a}),o=Qo(n,{subtreeDescendant:!0}),""===Fo(o)||void 0)},"aria-required-attr-evaluate":function(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},a=2<arguments.length?arguments[2]:void 0,r=Do(a),o=a.attrNames,u=Ps(r);return Array.isArray(n[r])&&(u=_l(n[r],u)),!(r&&o.length&&u.length&&(n=a,"separator"!==r||Eo(n))&&(o=a,"combobox"!==r||"false"!==o.attr("aria-expanded"))&&(t=Vo(a),(n=u.filter((function(e){return!(a.attr(e)||(e=e,void 0!==(null==(n=(n=t).implicitAttrs)?void 0:n[e])));var n}))).length&&(this.data(n),1)))},"aria-required-children-evaluate":function(e,t,n){t=t&&Array.isArray(t.reviewEmpty)?t.reviewEmpty:[];var a,o,u=Do(n,{dpub:!0}),i=Ls(u);return null===i||((o=(a=function(e,t){for(var n=[],a=Jo(e),r=0;r<a.length;r++)!function(e){var r=a[e],o=Go(r,{noPresentational:!0});e=mo().some((function(e){return r.hasAttr(e)}))||Eo(r),!o&&!e||["group","rowgroup"].includes(o)&&t.some((function(e){return e===o}))?a.push.apply(a,N(r.children)):(o||e)&&n.push({role:o,ownedElement:r})}(r);return n}(n,i)).filter((function(e){return e=e.role,!i.includes(e)}))).length?(this.relatedNodes(o.map((function(e){return e.ownedElement}))),this.data({messageKey:"unallowed"}),!1):!(o=function(e,t,n,a){for(var o=0;o<a.length;o++){var u=function(e){var t=a[e].role;if(n.includes(t))return n=n.filter((function(e){return e!==t})),{v:null}}(o);if("object"===r(u))return u.v}return n.length?n:null}(0,0,i,a))||(this.data(o),!(!t.includes(u)||$u(n,!1,!0)||a.length||n.hasAttr("aria-owns")&&Zr(e,"aria-owns").length)&&void 0))},"aria-required-children-matches":function(e,t){return t=Do(t,{dpub:!0}),!!Ls(t)},"aria-required-parent-evaluate":function(e,t,n){var a=t&&Array.isArray(t.ownGroupRoles)?t.ownGroupRoles:[],r=zs(n,a);if(!r)return!0;var o=function(e){for(var t,n=[];e;)e.getAttribute("id")&&(t=an(e.getAttribute("id")),t=Ua(e).querySelector("[aria-owns~=".concat(t,"]")))&&n.push(t),e=e.parentElement;return n.length?n:null}(e);if(o)for(var u=0,i=o.length;u<i;u++)if(!(r=zs(Tn(o[u]),a,r,!0)))return!0;return this.data(r),!1},"aria-required-parent-matches":function(e,t){return t=Do(t),!!Ms(t)},"aria-roledescription-evaluate":function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=Go(2<arguments.length?arguments[2]:void 0);return!!(t.supportedRoles||[]).includes(n)||!(!n||"presentation"===n||"none"===n)&&void 0},"aria-unsupported-attr-evaluate":function(e,t,n){return!!(n=n.attrNames.filter((function(t){var n=so.ariaAttrs[t];return!!qs(t)&&(t=n.unsupported,"object"!==r(t)?!!t:!qo(e,t.exceptions))}))).length&&(this.data(n),!0)},"aria-valid-attr-evaluate":function(e,t,n){t=Array.isArray(t.value)?t.value:[];var a=[],r=/^aria-/;return n.attrNames.forEach((function(e){-1===t.indexOf(e)&&r.test(e)&&!qs(e)&&a.push(e)})),!a.length||(this.data(a),!1)},"aria-valid-attr-value-evaluate":function(e,t,n){t=Array.isArray(t.value)?t.value:[];var a="",r="",u=[],i=/^aria-/,l=["aria-errormessage"],s={"aria-controls":function(){return"false"!==n.attr("aria-expanded")&&"false"!==n.attr("aria-selected")},"aria-current":function(e){e||(a=\'aria-current="\'.concat(n.attr("aria-current"),\'"\'),r="ariaCurrent")},"aria-owns":function(){return"false"!==n.attr("aria-expanded")},"aria-describedby":function(e){e||(a=\'aria-describedby="\'.concat(n.attr("aria-describedby"),\'"\'),r=o._tree&&o._tree[0]._hasShadowRoot?"noIdShadow":"noId")},"aria-labelledby":function(e){e||(a=\'aria-labelledby="\'.concat(n.attr("aria-labelledby"),\'"\'),r=o._tree&&o._tree[0]._hasShadowRoot?"noIdShadow":"noId")}};return n.attrNames.forEach((function(e){if(!l.includes(e)&&!t.includes(e)&&i.test(e)){var o,c=n.attr(e);try{o=js(n,e)}catch(o){return a="".concat(e,\'="\').concat(c,\'"\'),void(r="idrefs")}s[e]&&!s[e](o)||o||(""===c&&(o=e,"string"!==(null==(o=so.ariaAttrs[e])?void 0:o.type))?(a=e,r="empty"):u.push("".concat(e,\'="\').concat(c,\'"\')))}})),u.length?(this.data(u),!1):!a||void this.data({messageKey:r,needsReview:a})},"attr-non-space-content-evaluate":function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=2<arguments.length?arguments[2]:void 0;if(t.attribute&&"string"==typeof t.attribute)return n.hasAttr(t.attribute)?(n=n.attr(t.attribute),!!Fo(n)||(this.data({messageKey:"emptyAttr"}),!1)):(this.data({messageKey:"noAttr"}),!1);throw new TypeError("attr-non-space-content requires options.attribute to be a string")},"autocomplete-appropriate-evaluate":function(e,t,n){var a,o,u;return"input"!==n.props.nodeName||(o={bday:["text","search","date"],email:["text","search","email"],username:["text","search","email"],"street-address":["text"],tel:["text","search","tel"],"tel-country-code":["text","search","tel"],"tel-national":["text","search","tel"],"tel-area-code":["text","search","tel"],"tel-local":["text","search","tel"],"tel-local-prefix":["text","search","tel"],"tel-local-suffix":["text","search","tel"],"tel-extension":["text","search","tel"],"cc-number":a=["text","search","number","tel"],"cc-exp":["text","search","month","tel"],"cc-exp-month":a,"cc-exp-year":a,"cc-csc":a,"transaction-amount":a,"bday-day":a,"bday-month":a,"bday-year":a,"new-password":["text","search","password"],"current-password":["text","search","password"],url:u=["text","search","url"],photo:u,impp:u},"object"===r(t)&&Object.keys(t).forEach((function(e){o[e]||(o[e]=[]),o[e]=o[e].concat(t[e])})),u=(a=n.attr("autocomplete").split(/\\s+/g).map((function(e){return e.toLowerCase()})))[a.length-1],!!Ru.stateTerms.includes(u))||(a=o[u],u=n.hasAttr("type")?Fo(n.attr("type")).toLowerCase():"text",u=ts().includes(u)?u:"text",void 0===a?"text"===u:a.includes(u))},"autocomplete-matches":function(e,t){if(!(n=t.attr("autocomplete"))||""===Fo(n))return!1;if(n=t.props.nodeName,!1===["textarea","input","select"].includes(n))return!1;if("input"===n&&["submit","reset","button","hidden"].includes(t.props.type))return!1;if(n=t.attr("aria-disabled")||"false",t.hasAttr("disabled")||"true"===n.toLowerCase())return!1;var n=t.attr("role"),a=t.attr("tabindex");return("-1"!==a||!n||void 0!==(n=so.ariaRoles[n])&&"widget"===n.type)&&!("-1"===a&&t.actualNode&&!wr(t)&&!uu(t))},"autocomplete-valid-evaluate":function(e,t,n){return n=n.attr("autocomplete")||"",Nu(n,t)},"avoid-inline-spacing-evaluate":function(e,t){return!(0<(t=t.cssProperties.filter((function(t){if("important"===e.style.getPropertyPriority(t))return t}))).length&&(this.data(t),1))},"bypass-matches":function(e,t,n){return!Wc(0,0,n)||!!e.querySelector("a[href]")},"caption-evaluate":function(e,t,n){return!Gl(n,"track").some((function(e){return"captions"===(e.attr("kind")||"").toLowerCase()}))&&void 0},"caption-faked-evaluate":function(e){var t=ho(e),n=t[0];return t.length<=1||n.length<=1||e.rows.length<=1||n.reduce((function(e,t,a){return e||t!==n[a+1]&&void 0!==n[a+1]}),!1)},"color-contrast-evaluate":function(e,n,a){var r=n.ignoreUnicode,o=n.ignoreLength,u=n.ignorePseudo,i=n.boldValue,l=n.boldTextPt,s=n.largeTextPt,c=n.contrastRatio,d=n.shadowOutlineEmMax,p=n.pseudoSizeThreshold;if(!wr(e))return this.data({messageKey:"hidden"}),!0;var D=lu(a,!1,!0);if(r&&(y=wu(r=D,b={nonBmp:!0}),r=""===Fo(ku(r,b)),y)&&r)this.data({messageKey:"nonBmp"});else{var f,m,h,g,b=t.getComputedStyle(e),y=parseFloat(b.getPropertyValue("font-size"));r=b.getPropertyValue("font-weight"),i=parseFloat(r)>=i||"bold"===r,r=Math.ceil(72*y)/96,r=(l=i&&r<l||!i&&r<s?c.normal:c.large).expected,s=l.minThreshold,c=l.maxThreshold;if(!(l=function(e,t){var n=void 0===(n=t.pseudoSizeThreshold)?.25:n;if(!(t=void 0!==(t=t.ignorePseudo)&&t)){var a=(t=e.boundingClientRect).width*t.height*n;do{if(a<sc(e.actualNode,":before")+sc(e.actualNode,":after"))return e}while(e=e.parent)}}(a,{ignorePseudo:u,pseudoSizeThreshold:p})))return p=ic(e,!(a=[]),u=ac(e,a,d),n),m=f=n=null,0===(e=nc(e,{minRatio:.001,maxRatio:d})).length?n=uc(u,p):p&&u&&(m=[].concat(N(e),[u]).reduce(ec),d=uc(u,p),e=uc(u,m),h=uc(m,p),(n=Math.max(d,e,h))!==d)&&(f=h<e?"shadowOnBgColor":"fgOnShadowColor"),d=r<n,"number"==typeof s&&("number"!=typeof n||n<s)||"number"==typeof c&&("number"!=typeof n||c<n)?(this.data({contrastRatio:n}),!0):(h=Math.floor(100*n)/100,null===u?g=ui.get("bgColor"):d||(g=f),e=1===D.length,(s=1==h)?g=ui.set("bgColor","equalRatio"):d||!e||o||(g="shortTextContent"),this.data({fgColor:p?p.toHexString():void 0,bgColor:u?u.toHexString():void 0,contrastRatio:h,fontSize:"".concat((72*y/96).toFixed(1),"pt (").concat(y,"px)"),fontWeight:i?"bold":"normal",messageKey:g,expectedContrastRatio:r+":1",shadowColor:m?m.toHexString():void 0}),null===p||null===u||s||e&&!o&&!d?(g=null,ui.clear(),void this.relatedNodes(a)):(d||this.relatedNodes(a),d));this.data({fontSize:"".concat((72*y/96).toFixed(1),"pt (").concat(y,"px)"),fontWeight:i?"bold":"normal",messageKey:"pseudoContent",expectedContrastRatio:r+":1"}),this.relatedNodes(l.actualNode)}},"color-contrast-matches":function(e,n){var r=(o=n.props).nodeName,o=o.type;if("option"!==r&&("select"!==r||e.options.length)&&!("input"===r&&["hidden","range","color","checkbox","radio","image"].includes(o)||Tc(n))){if(["input","select","textarea"].includes(r)){if(o=t.getComputedStyle(e),o=parseInt(o.getPropertyValue("text-indent"),10)){var u={top:(u=e.getBoundingClientRect()).top,bottom:u.bottom,left:u.left+o,right:u.right+o};if(!Ei(u,e))return!1}return!0}if(o=Ga(n,"label"),"label"===r||o){if(u=o||e,r=o?Tn(o):n,u.htmlFor&&(u=(o=Ua(u).getElementById(u.htmlFor))&&Tn(o))&&Tc(u))return!1;if((o=Gl(r,\'input:not([type="hidden"],[type="image"],[type="button"],[type="submit"],[type="reset"]), select, textarea\')[0])&&Tc(o))return!1}for(var i,l=[],s=n;s;)s.props.id&&(i=Fs(s).filter((function(e){return Bi(e.getAttribute("aria-labelledby")||"").includes(s.props.id)})).map((function(e){return Tn(e)})),l.push.apply(l,N(i))),s=s.parent;if(!(0<l.length&&l.every(Tc))&&""!==(r=lu(u=n,!1,!0))&&""!==ku(r,Kc)&&u.children.some((function(e){return"#text"===e.props.nodeName&&!Eu(e)}))){for(var c=a.createRange(),d=n.children,p=0;p<d.length;p++){var D=d[p];3===D.actualNode.nodeType&&""!==Fo(D.actualNode.nodeValue)&&c.selectNodeContents(D.actualNode)}for(var f=c.getClientRects(),m=0;m<f.length;m++)if(Ei(f[m],e))return!0}}return!1},"css-orientation-lock-evaluate":function(e,t,n,a){a=void 0===(a=(a||{}).cssom)?void 0:a;var r=void 0===(t=(t||{}).degreeThreshold)?0:t;if(a&&a.length){function o(){var e=c[s],t=(e=l[e]).root;if(!(e=e.rules.filter(d)).length)return"continue";e.forEach((function(e){e=e.cssRules,Array.from(e).forEach((function(e){var n=function(e){var t=e.selectorText;e=e.style;return!(!t||e.length<=0)&&(!!(t=e.transform||e.webkitTransform||e.msTransform||!1)&&(!!(e=t.match(/(rotate|rotateZ|rotate3d|matrix|matrix3d)\\(([^)]+)\\)(?!.*(rotate|rotateZ|rotate3d|matrix|matrix3d))/))&&(!!(e=function(e,t){switch(e){case"rotate":case"rotateZ":return p(t);case"rotate3d":var n=(a=_(t.split(",").map((function(e){return e.trim()})),4))[2],a=a[3];return 0===parseInt(n)?void 0:p(a);case"matrix":case"matrix3d":return function(e){if((e=e.split(",")).length<=6)return n=(t=_(e,2))[0],t=t[1],D(Math.atan2(parseFloat(t),parseFloat(n)));var t=parseFloat(e[8]),n=Math.asin(t);t=Math.cos(n);return D(Math.acos(parseFloat(e[0])/t))}(t);default:return}}(e=(t=_(e,3))[1],t=t[2]))&&(e=Math.abs(e),!(Math.abs(e-180)%180<=r)&&Math.abs(e-90)%90<=r))))}(e);n&&"HTML"!==e.selectorText.toUpperCase()&&(e=Array.from(t.querySelectorAll(e.selectorText))||[],i=i.concat(e)),u=u||n}))}))}for(var u=!1,i=[],l=a.reduce((function(e,t){var n=t.sheet,a=t.root;return e[t=(t=t.shadowId)||"topDocument"]||(e[t]={root:a,rules:[]}),n&&n.cssRules&&(a=Array.from(n.cssRules),e[t].rules=e[t].rules.concat(a)),e}),{}),s=0,c=Object.keys(l);s<c.length;s++)o();return!u||(i.length&&this.relatedNodes(i),!1)}function d(e){var t=e.type;e=e.cssText;return 4===t&&(/orientation:\\s*landscape/i.test(e)||/orientation:\\s*portrait/i.test(e))}function p(e){var t=_(e.match(/(deg|grad|rad|turn)/)||[],1)[0];if(t){var n=parseFloat(e.replace(t,""));switch(t){case"rad":return D(n);case"grad":var a=n;return(a%=400)<0&&(a+=400),Math.round(a/400*360);case"turn":return Math.round(360/(1/n));default:return parseInt(n)}}}function D(e){return Math.round(e*(180/Math.PI))}},"data-table-large-matches":function(e){return!!Mc(e)&&3<=(e=ho(e)).length&&3<=e[0].length&&3<=e[1].length&&3<=e[2].length},"data-table-matches":function(e){return Mc(e)},"deprecatedrole-evaluate":function(e,t,n){n=Go(n,{dpub:!0,fallback:!0});var a=so.ariaRoles[n];return!(null==a||!a.deprecated||(this.data(n),0))},"dlitem-evaluate":function(e){var t=(e=hr(e)).nodeName.toUpperCase(),n=Do(e);return"DIV"===t&&["presentation","none",null].includes(n)&&(t=(e=hr(e)).nodeName.toUpperCase(),n=Do(e)),"DL"===t&&!(n&&!["presentation","none","list"].includes(n))},"doc-has-title-evaluate":function(){var e=a.title;return!!Fo(e)},"duplicate-id-active-matches":function(e){var t=e.getAttribute("id").trim();return t=\'*[id="\'.concat(an(t),\'"]\'),t=Array.from(Ua(e).querySelectorAll(t)),!Ss(e)&&t.some(Eo)},"duplicate-id-after":function(e){var t=[];return e.filter((function(e){return-1===t.indexOf(e.data)&&(t.push(e.data),!0)}))},"duplicate-id-aria-matches":function(e){return Ss(e)},"duplicate-id-evaluate":function(e){var t,n=e.getAttribute("id").trim();return!n||(t=Ua(e),(t=Array.from(t.querySelectorAll(\'[id="\'.concat(an(n),\'"]\'))).filter((function(t){return t!==e}))).length&&this.relatedNodes(t),this.data(n),0===t.length)},"duplicate-id-misc-matches":function(e){var t=e.getAttribute("id").trim();return t=\'*[id="\'.concat(an(t),\'"]\'),t=Array.from(Ua(e).querySelectorAll(t)),!Ss(e)&&t.every((function(e){return!Eo(e)}))},"duplicate-img-label-evaluate":function(e,t,n){return!["none","presentation"].includes(Go(n))&&!!(t=Hn(n,t.parentSelector))&&""!==(t=lu(t,!0).toLowerCase())&&t===Au(n).toLowerCase()},"exists-evaluate":function(){},"explicit-evaluate":function(e,t,n){var a=this;if(!n.attr("id"))return!1;if(n.actualNode){var r=Ua(n.actualNode),o=an(n.attr("id"));r=Array.from(r.querySelectorAll(\'label[for="\'.concat(o,\'"]\')));if(this.relatedNodes(r),!r.length)return!1;try{return r.some((function(e){return!wr(e)||(e=Fo(eo(e,{inControlContext:!0,startNode:n})),a.data({explicitLabel:e}),!!e)}))}catch(e){}}},"fallbackrole-evaluate":function(e,t,n){var a=Bi(n.attr("role"));return!(a.length<=1)&&(a=a,!(!zo(n)&&2===a.length&&a.includes("none")&&a.includes("presentation"))||void 0)},"focusable-content-evaluate":function(e,t,n){var a=n.tabbableElements;return!!a&&0<a.filter((function(e){return e!==n})).length},"focusable-disabled-evaluate":function(e,t,n){var a=["button","fieldset","input","select","textarea"];return!((n=n.tabbableElements)&&n.length&&(n=n.filter((function(e){return a.includes(e.props.nodeName)})),this.relatedNodes(n.map((function(e){return e.actualNode}))),0!==n.length)&&!ni())||!!n.every((function(e){var t=e.getComputedStylePropertyValue("pointer-events"),n=parseInt(e.getComputedStylePropertyValue("width")),a=parseInt(e.getComputedStylePropertyValue("height"));return e.actualNode.onfocus||(0===n||0===a)&&"none"===t}))&&void 0},"focusable-element-evaluate":function(e,t,n){return!(!n.hasAttr("contenteditable")||!function e(t){return"true"===(t=t.attr("contenteditable"))||""===t||"false"!==t&&(!!(t=Hn(n.parent,"[contenteditable]"))&&e(t))}(n))||Xu(n)},"focusable-modal-open-evaluate":function(e,t,n){return!(n=n.tabbableElements.map((function(e){return e.actualNode})))||!n.length||!ni()||void this.relatedNodes(n)},"focusable-no-name-evaluate":function(e,t,n){var a=n.attr("tabindex");if(!(Eo(n)&&-1<a))return!1;try{return!Au(n)}catch(e){}},"focusable-not-tabbable-evaluate":function(e,t,n){var a=["button","fieldset","input","select","textarea"];return!((n=n.tabbableElements)&&n.length&&(n=n.filter((function(e){return!a.includes(e.props.nodeName)})),this.relatedNodes(n.map((function(e){return e.actualNode}))),0!==n.length)&&!ni())||!!n.every((function(e){var t=e.getComputedStylePropertyValue("pointer-events"),n=parseInt(e.getComputedStylePropertyValue("width")),a=parseInt(e.getComputedStylePropertyValue("height"));return e.actualNode.onfocus||(0===n||0===a)&&"none"===t}))&&void 0},"frame-focusable-content-evaluate":function(e,t,n){if(n.children)try{return!n.children.some((function e(t){if(Xu(t))return!0;if(!t.children){if(1===t.props.nodeType)throw new Error("Cannot determine children");return!1}return t.children.some((function(t){return e(t)}))}))}catch(e){}},"frame-focusable-content-matches":function(e,t,n){var a;return!n.initiator&&!n.focusable&&1<(null==(a=n.size)?void 0:a.width)*(null==(a=n.size)?void 0:a.height)},"frame-tested-after":function(e){var t={};return e.filter((function(e){var n;return"html"!==e.node.ancestry[e.node.ancestry.length-1]?(n=e.node.ancestry.flat(1/0).join(" > "),t[n]=e,!0):(n=e.node.ancestry.slice(0,e.node.ancestry.length-1).flat(1/0).join(" > "),t[n]&&(t[n].result=!0),!1)}))},"frame-tested-evaluate":function(e,t){return!t.isViolation&&void 0},"frame-title-has-text-matches":function(e){return e=e.getAttribute("title"),!!Fo(e)},"has-alt-evaluate":function(e,t,n){var a=n.props.nodeName;return!!["img","input","area"].includes(a)&&n.hasAttr("alt")},"has-descendant-after":function(e){return e.some((function(e){return!0===e.result}))&&e.forEach((function(e){e.result=!0})),e},"has-descendant-evaluate":function(e,t,n){if(t&&t.selector&&"string"==typeof t.selector)return!(!t.passForModal||!ni())||(n=Pl(n,t.selector,uu),this.relatedNodes(n.map((function(e){return e.actualNode}))),0<n.length);throw new TypeError("has-descendant requires options.selector to be a string")},"has-global-aria-attribute-evaluate":function(e,t,n){var a=mo().filter((function(e){return n.hasAttr(e)}));return this.data(a),0<a.length},"has-implicit-chromium-role-matches":function(e,t){return null!==zo(t,{chromium:!0})},"has-lang-evaluate":function(e,t,n){var r=void 0!==a&&pn(a);return t.attributes.includes("xml:lang")&&t.attributes.includes("lang")&&yc(n.attr("xml:lang"))&&!yc(n.attr("lang"))&&!r?(this.data({messageKey:"noXHTML"}),!1):!!t.attributes.some((function(e){return yc(n.attr(e))}))||(this.data({messageKey:"noLang"}),!1)},"has-text-content-evaluate":function(e,t,n){try{return""!==Fo(Qo(n))}catch(e){}},"has-widget-role-evaluate":function(e){return null!==(e=e.getAttribute("role"))&&("widget"===(e=Qu(e))||"composite"===e)},"heading-matches":function(e,t){return"heading"===Go(t)},"heading-order-after":function(e){(t=N(t=e)).sort((function(e,t){return e=e.node,t=t.node,e.ancestry.length-t.ancestry.length}));var t,n=t.reduce(Ac,[]).filter((function(e){return-1!==e.level}));return e.forEach((function(e){e.result=function(e,t){var n=null!=(n=null==(n=t[e=kc(t,e.node.ancestry)])?void 0:n.level)?n:-1;t=null!=(t=null==(t=t[e-1])?void 0:t.level)?t:-1;return 0===e||(-1!==n?n-t<=1:void 0)}(e,n)})),e},"heading-order-evaluate":function(){var e,t=Nn.get("headingOrder");return t||(t=(e=Pl(o._tree[0],"h1, h2, h3, h4, h5, h6, [role=heading], iframe, frame",uu)).map((function(e){return{ancestry:[kn(e.actualNode)],level:(t=(t=Go(e=e))&&t.includes("heading"),n=e.attr("aria-level"),a=parseInt(n,10),e=_(e.props.nodeName.match(/h(\\d)/)||[],2)[1],t?e&&!n?parseInt(e,10):isNaN(a)||a<1?e?parseInt(e,10):2:a||-1:-1)};var t,n,a})),this.data({headingOrder:t}),Nn.set("headingOrder",e)),!0},"help-same-as-label-evaluate":function(e,t,n){n=_u(n);var a=e.getAttribute("title");return!!n&&(a||(a="",e.getAttribute("aria-describedby")&&(a=Zr(e,"aria-describedby").map((function(e){return e?eo(e):""})).join(""))),Fo(a)===Fo(n))},"hidden-content-evaluate":function(e,n,a){if(!["SCRIPT","HEAD","TITLE","NOSCRIPT","STYLE","TEMPLATE"].includes(e.nodeName.toUpperCase())&&$u(a)){if("none"===(a=t.getComputedStyle(e)).getPropertyValue("display"))return;if("hidden"===a.getPropertyValue("visibility")&&(!(e=(a=hr(e))&&t.getComputedStyle(a))||"hidden"!==e.getPropertyValue("visibility")))return}return!0},"hidden-explicit-label-evaluate":function(e,t,n){if(n.hasAttr("id")){if(!n.actualNode)return;var a,r=Ua(e);e=an(e.getAttribute("id"));if((r=r.querySelector(\'label[for="\'.concat(e,\'"]\')))&&!uu(r)){try{a=Au(n).trim()}catch(e){return}return""===a}}return!1},"html-namespace-matches":function(e,t){return!Yc(0,t)},"html5-scope-evaluate":function(e){return!Ju(a)||"TH"===e.nodeName.toUpperCase()},"identical-links-same-purpose-after":function(e){if(e.length<2)return e;function t(e){var t=n[e],u=t.data,i=u.name,l=u.urlProps;if(o[i])return"continue";var s=(u=n.filter((function(t,n){return t.data.name===i&&n!==e}))).every((function(e){return function e(t,n){var a,o;return!(!t||!n)&&(a=Object.getOwnPropertyNames(t),o=Object.getOwnPropertyNames(n),a.length===o.length)&&a.every((function(a){var o=t[a];a=n[a];return r(o)===r(a)&&("object"===r(o)||"object"===r(a)?e(o,a):o===a)}))}(e.data.urlProps,l)}));u.length&&!s&&(t.result=void 0),t.relatedNodes=[],(s=t.relatedNodes).push.apply(s,N(u.map((function(e){return e.relatedNodes[0]})))),o[i]=u,a.push(t)}for(var n=e.filter((function(e){return void 0!==e.result})),a=[],o={},u=0;u<n.length;u++)t(u);return a},"identical-links-same-purpose-evaluate":function(e,t,n){if(n=Qr.accessibleTextVirtual(n),n=Qr.sanitize(Qr.removeUnicode(n,{emoji:!0,nonBmp:!0,punctuations:!0})).toLowerCase())return n={name:n,urlProps:za.urlPropsFromAttribute(e,"href")},this.data(n),this.relatedNodes([e]),!0},"identical-links-same-purpose-matches":function(e,t){return!(!Au(t)||(t=Go(e))&&"link"!==t)},"implicit-evaluate":function(e,t,n){try{var a,r=Hn(n,"label");return!!r&&(a=Fo(Au(r,{inControlContext:!0,startNode:n})),r.actualNode&&this.relatedNodes([r.actualNode]),this.data({implicitLabel:a}),!!a)}catch(e){}},"inline-style-property-evaluate":function(e,n){var a=n.cssProperty,r=n.absoluteValues,o=n.minValue,u=n.maxValue,i=void 0===(i=n.normalValue)?0:i,l=n.noImportant;n=n.multiLineOnly;return!!(!l&&"important"!==e.style.getPropertyPriority(a)||n&&!ai(e))||(l={},"number"==typeof o&&(l.minValue=o),"number"==typeof u&&(l.maxValue=u),n=e.style.getPropertyValue(a),["inherit","unset","revert","revert-layer"].includes(n)?(this.data(O({value:n},l)),!0):(n=function(e,n){var a=n.cssProperty,r=n.absoluteValues;n=n.normalValue;return"normal"===(a=(e=t.getComputedStyle(e)).getPropertyValue(a))?n:(n=parseFloat(a),r?n:(r=parseFloat(e.getPropertyValue("font-size")),e=Math.round(n/r*100)/100,isNaN(e)?a:e))}(e,{absoluteValues:r,cssProperty:a,normalValue:i}),this.data(O({value:n},l)),"number"==typeof n?("number"!=typeof o||o<=n)&&("number"!=typeof u||n<=u):void 0))},"inserted-into-focus-order-matches":function(e){return Gu(e)},"internal-link-present-evaluate":function(e,t,n){return Gl(n,"a[href]").some((function(e){return/^#[^/!]/.test(e.attr("href"))}))},"invalid-children-evaluate":function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=2<arguments.length?arguments[2]:void 0,a=[],r=[];if(n.children){for(var o=vc(n.children);o.length;){var u=(i=o.shift()).vChild,i=i.nested;if(t.divGroups&&!i&&"div"===(l=u).props.nodeName&&null===Do(l)){if(!u.children)return;var l=vc(u.children,!0);o.push.apply(o,N(l))}else(l=function(e,t,n){var a=void 0===(a=n.validRoles)?[]:a,r=(n=void 0===(n=n.validNodeNames)?[]:n,(u=e.props).nodeName),o=u.nodeType,u=u.nodeValue;t=t?"div > ":"";return 3===o&&""!==u.trim()?t+"#text":!(1!==o||!uu(e))&&((u=Do(e))?!a.includes(u)&&t+"[role=".concat(u,"]"):!n.includes(r)&&t+r)}(u,i,t))&&(r.includes(l)||r.push(l),1===(null==u||null==(i=u.actualNode)?void 0:i.nodeType))&&a.push(u.actualNode)}return 0!==r.length&&(this.data({values:r.join(", ")}),this.relatedNodes(a),!0)}},"invalidrole-evaluate":function(e,t,n){return!!(n=Bi(n.attr("role"))).every((function(e){return!po(e,{allowAbstract:!0})}))&&(this.data(n),!0)},"is-element-focusable-evaluate":function(e,t,n){return Eo(n)},"is-initiator-matches":Wc,"is-on-screen-evaluate":St,"is-visible-matches":wr,"is-visible-on-screen-matches":function(e,t){return wr(t)},"label-content-name-mismatch-evaluate":function(e,t,n){var a=null==t?void 0:t.pixelThreshold,r=null!=(r=null==t?void 0:t.occurrenceThreshold)?r:null==t?void 0:t.occuranceThreshold;if(t=eo(e).toLowerCase(),!(Bu(t)<1))return!(e=Fo(Qo(n,{subtreeDescendant:!0,ignoreIconLigature:!0,pixelThreshold:a,occurrenceThreshold:r})).toLowerCase())||(Bu(e)<1?!!gc(e,t)||void 0:gc(e,t))},"label-content-name-mismatch-matches":function(e,t){var n=Go(e);return!!(n&&As("widget").includes(n)&&Bs().includes(n)&&(Fo(no(t))||Fo(to(e)))&&Fo(lu(t)))},"label-matches":function(e,t){return"input"!==t.props.nodeName||!1===t.hasAttr("type")||(t=t.attr("type").toLowerCase(),!1===["hidden","image","button","submit","reset"].includes(t))},"landmark-has-body-context-matches":function(e,t){return e.hasAttribute("role")||!Ga(t,"article, aside, main, nav, section")},"landmark-is-top-level-evaluate":function(e){var t=As("landmark"),n=hr(e),a=Go(e);for(this.data({role:a});n;){var r=n.getAttribute("role");if((r=r||"FORM"===n.nodeName.toUpperCase()?r:zo(n))&&t.includes(r)&&("main"!==r||"complementary"!==a))return!1;n=hr(n)}return!0},"landmark-is-unique-after":function(e){var t=[];return e.filter((function(e){var n=t.find((function(t){return e.data.role===t.data.role&&e.data.accessibleText===t.data.accessibleText}));return n?(n.result=!1,n.relatedNodes.push(e.relatedNodes[0]),!1):(t.push(e),e.relatedNodes=[],!0)}))},"landmark-is-unique-evaluate":function(e,t,n){var a=Go(e);return n=(n=Au(n))?n.toLowerCase():null,this.data({role:a,accessibleText:n}),this.relatedNodes([e]),!0},"landmark-unique-matches":function(e,t){var n,a,r,o=["article","aside","main","nav","section"].join(",");return n=(t=t).actualNode,a=As("landmark"),!!(r=Go(n))&&("HEADER"===(n=n.nodeName.toUpperCase())||"FOOTER"===n?!Hn(t,o):"SECTION"===n||"FORM"===n?!!Au(t):0<=a.indexOf(r)||"region"===r)&&uu(e)},"layout-table-matches":function(e){return!Mc(e)&&!Eo(e)},"link-in-text-block-evaluate":function(e,t){var n=t.requiredContrastRatio;if(t=t.allowSameColor,Dc(e))return!1;for(var a=hr(e);a&&1===a.nodeType&&!Dc(a);)a=hr(a);if(a){this.relatedNodes([a]);var r=ic(e),o=ic(a),u=(e=ac(e),ac(a)),i=r&&o?dc(r,o):void 0;if((i=i&&Math.floor(100*i)/100)&&n<=i)return!0;var l=e&&u?dc(e,u):void 0;if((l=l&&Math.floor(100*l)/100)&&n<=l)return!0;if(l){if(i)return!(!t||1!==i||1!==l)||(1===i&&1<l?this.data({messageKey:"bgContrast",contrastRatio:l,requiredContrastRatio:n,nodeBackgroundColor:e?e.toHexString():void 0,parentBackgroundColor:u?u.toHexString():void 0}):this.data({messageKey:"fgContrast",contrastRatio:i,requiredContrastRatio:n,nodeColor:r?r.toHexString():void 0,parentColor:o?o.toHexString():void 0}),!1)}else l=null!=(t=ui.get("bgColor"))?t:"bgContrast",this.data({messageKey:l}),ui.clear()}},"link-in-text-block-matches":function(e){var t=Fo(e.innerText),n=e.getAttribute("role");return!(n&&"link"!==n||!t||!wr(e))&&ti(e)},"link-in-text-block-style-evaluate":function(e){if(mc(e))return!1;for(var t=hr(e);t&&1===t.nodeType&&!mc(t);)t=hr(t);return t?(this.relatedNodes([t]),Ks(e,t)):void 0},"listitem-evaluate":function(e,t,n){var a;if(n=n.parent)return a=n.props.nodeName,n=Do(n),!!["presentation","none","list"].includes(n)||(n&&po(n)?(this.data({messageKey:"roleNotValid"}),!1):["ul","ol","menu"].includes(a))},"matches-definition-evaluate":function(e,t,n){return qo(n,t.matcher)},"meta-refresh-evaluate":function(e,t,n){var a=(r=t||{}).minDelay,r=r.maxDelay;return!(n=_((n.attr("content")||"").trim().split(qc),1)[0]).match(Vc)||(n=parseFloat(n),this.data({redirectDelay:n}),"number"==typeof a&&n<=t.minDelay)||"number"==typeof r&&n>t.maxDelay},"meta-viewport-scale-evaluate":function(e,t,n){var a,r=void 0===(r=(t=t||{}).scaleMinimum)?2:r;return t=void 0!==(t=t.lowerBound)&&t,!((n=n.attr("content")||"")&&(n=n.split(/[;,]/).reduce((function(e,t){var n;return(t=t.trim())&&(n=(t=_(t.split("="),2))[0],t=t[1],n)&&t&&(n=n.toLowerCase().trim(),t=t.toLowerCase().trim(),"maximum-scale"===n&&"yes"===t&&(t=1),"maximum-scale"===n&&parseFloat(t)<0||(e[n]=t)),e}),{}),!(t&&n["maximum-scale"]&&parseFloat(n["maximum-scale"])<t))&&(t||"no"!==n["user-scalable"]?(a=parseFloat(n["user-scalable"]),!t&&n["user-scalable"]&&(a||0===a)&&-1<a&&a<1?(this.data("user-scalable"),1):n["maximum-scale"]&&parseFloat(n["maximum-scale"])<r&&(this.data("maximum-scale"),1)):(this.data("user-scalable=no"),1)))},"multiple-label-evaluate":function(e){var t=an(e.getAttribute("id")),n=e.parentNode,a=(a=Ua(e)).documentElement||a,r=Array.from(a.querySelectorAll(\'label[for="\'.concat(t,\'"]\')));for(r.length&&(r=r.filter((function(e){return!Dr(e)})));n;)"LABEL"===n.nodeName.toUpperCase()&&-1===r.indexOf(n)&&r.push(n),n=n.parentNode;return this.relatedNodes(r),1<r.length&&(1<(a=r.filter(uu)).length||!Zr(e,"aria-labelledby").includes(a[0]))&&void 0},"nested-interactive-matches":function(e,t){return!!(t=Go(t))&&!!so.ariaRoles[t].childrenPresentational},"no-autoplay-audio-evaluate":function(e,t){var n,a;if(e.duration)return t=void 0===(t=t.allowedDuration)?3:t,((n=e).currentSrc?(a=function(e){if(e=e.match(/#t=(.*)/))return _(e,2)[1].split(",").map((function(e){if(/:/.test(e)){for(var t=e.split(":"),n=0,a=1;0<t.length;)n+=a*parseInt(t.pop(),10),a*=60;return parseFloat(n)}return parseFloat(e)}))}(n.currentSrc))?1!==a.length?Math.abs(a[1]-a[0]):Math.abs(n.duration-a[0]):Math.abs(n.duration-(n.currentTime||0)):0)<=t&&!e.hasAttribute("loop")||!!e.hasAttribute("controls");console.warn("axe.utils.preloadMedia did not load metadata")},"no-autoplay-audio-matches":function(e){return!!e.currentSrc&&!e.hasAttribute("paused")&&!e.hasAttribute("muted")},"no-empty-role-matches":function(e,t){return!!t.hasAttr("role")&&!!t.attr("role").trim()},"no-explicit-name-required-matches":Jc,"no-focusable-content-evaluate":function(e,t,n){if(n.children)try{var a,r=function e(t){if(!t.children){if(1===t.props.nodeType)throw new Error("Cannot determine children");return[]}var n=[];return t.children.forEach((function(t){"widget"===Qu(t)&&Eo(t)?n.push(t):n.push.apply(n,N(e(t)))})),n}(n);return!r.length||(0<(a=r.filter(hc)).length?(this.data({messageKey:"notHidden"}),this.relatedNodes(a)):this.relatedNodes(r),!1)}catch(e){}},"no-implicit-explicit-label-evaluate":function(e,t,n){var a,r,o=Go(n,{noImplicit:!0});this.data(o);try{a=Fo(Zo(n)).toLowerCase(),r=Fo(Au(n)).toLowerCase()}catch(e){return}return!(!r&&!a||(r||!a)&&r.includes(a))&&void 0},"no-naming-method-matches":function(e,t){var n=Vo(t).namingMethods;return!(n&&0!==n.length||"combobox"===Do(t)&&Gl(t,\'input:not([type="hidden"])\').length)},"no-negative-tabindex-matches":function(e,t){return t=parseInt(t.attr("tabindex"),10),isNaN(t)||0<=t},"no-role-matches":function(e,t){return!t.attr("role")},"non-empty-if-present-evaluate":function(e,t,n){var a=n.props.nodeName,r=(n.attr("type")||"").toLowerCase();return(n=n.attr("value"))&&this.data({messageKey:"has-label"}),!("input"!==a||!["submit","reset"].includes(r))&&null===n},"not-html-matches":function(e,t){return"html"!==t.props.nodeName},"object-is-loaded-matches":function(e,t){return[Jc,function(e){var t;return null==e||null==(t=e.ownerDocument)||!t.createRange||((t=e.ownerDocument.createRange()).setStart(e,0),t.setEnd(e,e.childNodes.length),0===t.getClientRects().length)}].every((function(n){return n(e,t)}))},"only-dlitems-evaluate":function(e,t,n){var a=["definition","term","list"];return(n=n.children.reduce((function(e,t){var n=t.actualNode;return"DIV"===n.nodeName.toUpperCase()&&null===Go(n)?e.concat(t.children):e.concat(t)}),[]).reduce((function(e,t){var n,r=(t=t.actualNode).nodeName.toUpperCase();return 1===t.nodeType&&uu(t)?(n=Do(t),("DT"!==r&&"DD"!==r||n)&&!a.includes(n)&&e.badNodes.push(t)):3===t.nodeType&&""!==t.nodeValue.trim()&&(e.hasNonEmptyTextNode=!0),e}),{badNodes:[],hasNonEmptyTextNode:!1})).badNodes.length&&this.relatedNodes(n.badNodes),!!n.badNodes.length||n.hasNonEmptyTextNode},"only-listitems-evaluate":function(e,t,n){var a=!1,r=!1,o=!0,u=[],i=[],l=[];if(n.children.forEach((function(e){var t,n,s=e.actualNode;3===s.nodeType&&""!==s.nodeValue.trim()?a=!0:1===s.nodeType&&uu(s)&&(o=!1,t="LI"===s.nodeName.toUpperCase(),n="listitem"===(e=Go(e)),t||n||u.push(s),t&&!n&&(i.push(s),l.includes(e)||l.push(e)),n)&&(r=!0)})),a||u.length)this.relatedNodes(u);else{if(o||r)return!1;this.relatedNodes(i),this.data({messageKey:"roleNotValid",roles:l.join(", ")})}return!0},"p-as-heading-evaluate":function(e,t,n){var a=(u=Array.from(e.parentNode.children)).indexOf(e),r=(t=t||{}).margins||[],o=u.slice(a+1).find((function(e){return"P"===e.nodeName.toUpperCase()})),u=u.slice(0,a).reverse().find((function(e){return"P"===e.nodeName.toUpperCase()})),i=(a=zc(e),o?zc(o):null),l=(u=u?zc(u):null,t.passLength);return t=t.failLength,e=e.textContent.trim().length,(o=null==o?void 0:o.textContent.trim().length)*l<e||!i||!$c(a,i,r)||!!((l=Ga(n,"blockquote"))&&"BLOCKQUOTE"===l.nodeName.toUpperCase()||u&&!$c(a,u,r)||o*t<e)&&void 0},"p-as-heading-matches":function(e){var t=Array.from(e.parentNode.childNodes),n=e.textContent.trim();return!(0===n.length||2<=(n.match(/[.!?:;](?![.!?:;])/g)||[]).length)&&0!==t.slice(t.indexOf(e)+1).filter((function(e){return"P"===e.nodeName.toUpperCase()&&""!==e.textContent.trim()})).length},"page-no-duplicate-after":function(e){return e.filter((function(e){return"ignored"!==e.data}))},"page-no-duplicate-evaluate":function(e,t,n){if(!t||!t.selector||"string"!=typeof t.selector)throw new TypeError("page-no-duplicate requires options.selector to be a string");var a="page-no-duplicate;"+t.selector;if(!Nn.get(a))return Nn.set(a,!0),a=Pl(o._tree[0],t.selector,uu),"string"==typeof t.nativeScopeFilter&&(a=a.filter((function(e){return e.actualNode.hasAttribute("role")||!Ga(e,t.nativeScopeFilter)}))),this.relatedNodes(a.filter((function(e){return e!==n})).map((function(e){return e.actualNode}))),a.length<=1;this.data("ignored")},"presentation-role-conflict-matches":function(e,t){return null!==zo(t,{chromiumRoles:!0})},"presentational-role-evaluate":function(e,t,n){var a=Do(n);if(["presentation","none"].includes(a)&&["iframe","frame"].includes(n.props.nodeName)&&n.hasAttr("title"))this.data({messageKey:"iframe",nodeName:n.props.nodeName});else{var r,o=Go(n);if(["presentation","none"].includes(o))return this.data({role:o}),!0;["presentation","none"].includes(a)&&(a=mo().some((function(e){return n.hasAttr(e)})),r=Eo(n),this.data({messageKey:a&&!r?"globalAria":!a&&r?"focusable":"both",role:o}))}return!1},"region-after":function(e){var t=e.filter((function(e){return e.data.isIframe}));return e.forEach((function(e){if(!e.result&&1!==e.node.ancestry.length){var n,a=e.node.ancestry.slice(0,-1),r=q(t);try{for(r.s();!(n=r.n()).done;){var o=n.value;if(Fl(a,o.node.ancestry)){e.result=o.result;break}}}catch(e){r.e(e)}finally{r.f()}}})),t.forEach((function(e){e.result||(e.result=!0)})),e},"region-evaluate":function(e,t,n){return this.data({isIframe:["iframe","frame"].includes(n.props.nodeName)}),!Nn.get("regionlessNodes",(function(){return function e(t,n){var r=t.actualNode;if("button"===Go(t)||function(e,t){var n=e.actualNode,a=Go(e);return n=(n.getAttribute("aria-live")||"").toLowerCase().trim(),!!(["assertive","polite"].includes(n)||Hc.includes(a)||Uc.includes(a)||t.regionMatcher&&qo(e,t.regionMatcher))}(t,n)||["iframe","frame"].includes(t.props.nodeName)||di(t.actualNode)&&Lr(t.actualNode,"href")||!uu(r)){for(var o=t;o;)o._hasRegionDescendant=!0,o=o.parent;return["iframe","frame"].includes(t.props.nodeName)?[t]:[]}return r!==a.body&&Uu(r,!0)?[t]:t.children.filter((function(e){return 1===(e=e.actualNode).nodeType})).map((function(t){return e(t,n)})).reduce((function(e,t){return e.concat(t)}),[])}(o._tree[0],t).map((function(e){for(;e.parent&&!e.parent._hasRegionDescendant&&e.parent.actualNode!==a.body;)e=e.parent;return e})).filter((function(e,t,n){return n.indexOf(e)===t}))})).includes(n)},"same-caption-summary-evaluate":function(e,t,n){var a;if(void 0!==n.children)return a=n.attr("summary"),!(!(n=!!(n=n.children.find(Gc))&&Fo(Qo(n)))||!a)&&Fo(a).toLowerCase()===Fo(n).toLowerCase()},"scope-value-evaluate":function(e,t){return e=e.getAttribute("scope").toLowerCase(),-1!==t.values.indexOf(e)},"scrollable-region-focusable-matches":function(e,t){if(0==!!ll(e,13))return!1;var n=Do(t);if(ao["aria-haspopup"].values.includes(n)){if(Hn(t,\'[role~="combobox"]\'))return!1;if((n=t.attr("id"))&&(e=$a(e),Array.from(e.querySelectorAll(\'[aria-owns~="\'.concat(n,\'"], [aria-controls~="\').concat(n,\'"]\'))).some((function(e){return Bi(e.getAttribute("role")).includes("combobox")}))))return!1}return!!Gl(t,"*").some((function(e){return $u(e,!0,!0)}))},"skip-link-evaluate":function(e){return!!(e=Lr(e,"href"))&&(uu(e)||void 0)},"skip-link-matches":function(e){return di(e)&&vr(e)},"structured-dlitems-evaluate":function(e,t,n){var a=n.children;if(!a||!a.length)return!1;for(var r,o=!1,u=!1,i=0;i<a.length;i++){if((o="DT"===(r=a[i].props.nodeName.toUpperCase())||o)&&"DD"===r)return!1;"DD"===r&&(u=!0)}return o||u},"svg-namespace-matches":Yc,"svg-non-empty-title-evaluate":function(e,t,n){if(n.children){if(!(n=n.children.find((function(e){return"title"===e.props.nodeName}))))return this.data({messageKey:"noTitle"}),!1;try{if(""===Qo(n,{includeHidden:!0}).trim())return this.data({messageKey:"emptyTitle"}),!1}catch(e){return}return!0}},"tabindex-evaluate":function(e,t,n){return n=parseInt(n.attr("tabindex"),10),!!isNaN(n)||n<=0},"table-or-grid-role-matches":function(e,t){return t=Go(t),["treegrid","grid","table"].includes(t)},"target-offset-evaluate":function(e,t,n){var a,r,o=(null==t?void 0:t.minOffset)||24,u=[],i=o,l=q(Tr(n,o));try{for(l.s();!(a=l.n()).done;){var s,c=a.value;"widget"===Qu(c)&&Eo(c)&&(r=$r(n,c),o<=.05+(s=Math.round(10*r)/10)||(i=Math.min(i,s),u.push(c)))}}catch(e){l.e(e)}finally{l.f()}return 0===u.length?(this.data({closestOffset:i,minOffset:o}),!0):(this.relatedNodes(u.map((function(e){return e.actualNode}))),u.some(Xu)?(this.data({closestOffset:i,minOffset:o}),!Xu(n)&&void 0):void this.data({messageKey:"nonTabbableNeighbor",closestOffset:i,minOffset:o}))},"target-size-evaluate":function(e,t,n){t=(null==t?void 0:t.minSize)||24;var a,r,o=n.boundingClientRect,u=Cc.bind(null,t),i=Tr(n),l=(a=n,i.filter((function(e){return!Fc(e,a)&&Ec(a,e)}))),s=(i=function(e,t){var n,a=[],r=[],o=q(t);try{for(o.s();!(n=o.n()).done;){var u=n.value;!Ec(e,u)&&Hr(e,u)&&"none"!==u.getComputedStylePropertyValue("pointer-events")&&(Fc(e,u)?a:r).push(u)}}catch(e){o.e(e)}finally{o.f()}return{fullyObscuringElms:a,partialObscuringElms:r}}(n,i)).fullyObscuringElms;i=i.partialObscuringElms;return s.length&&!l.length?(this.relatedNodes(xc(s)),this.data({messageKey:"obscured"}),!0):(r=!Xu(n)&&void 0,u(o)||l.length?(i=function(e,t){return e=e.boundingClientRect,0===t.length?null:function(e,t){return e.reduce((function(e,n){var a=Cc(t,e);return a!==Cc(t,n)?a?e:n:(a=e.width*e.height,n.width*n.height<a?e:n)}))}(Gr(e,t=t.map((function(e){return e.boundingClientRect}))))}(n,n=i.filter((function(e){return"widget"===Qu(e)&&Eo(e)}))),!l.length||!s.length&&u(i||o)?0===n.length||u(i)?(this.data(O({minSize:t},wc(i||o))),this.relatedNodes(xc(n)),!0):(s=n.every(Xu),u="partiallyObscured".concat(s?"":"NonTabbable"),this.data(O({messageKey:u,minSize:t},wc(i))),this.relatedNodes(xc(n)),s?r:void 0):(this.data({minSize:t,messageKey:"contentOverflow"}),void this.relatedNodes(xc(l)))):(this.data(O({minSize:t},wc(o))),r))},"td-has-header-evaluate":function(e){var t=[],n=_c(e),a=ho(e);return n.forEach((function(e){Uu(e)&&Pc(e)&&!Is(e)&&!Ic(e,a).some((function(e){return null!==e&&!!Uu(e)}))&&t.push(e)})),!t.length||(this.relatedNodes(t),!1)},"td-headers-attr-evaluate":function(e){for(var t=[],n=[],a=[],r=0;r<e.rows.length;r++)for(var o=e.rows[r],u=0;u<o.cells.length;u++)t.push(o.cells[u]);var i=t.reduce((function(e,t){return t.getAttribute("id")&&e.push(t.getAttribute("id")),e}),[]);return t.forEach((function(e){var t,r=!1;if(e.hasAttribute("headers")&&uu(e))return(t=e.getAttribute("headers").trim())?void(0!==(t=Bi(t)).length&&(e.getAttribute("id")&&(r=-1!==t.indexOf(e.getAttribute("id").trim())),t=t.some((function(e){return!i.includes(e)})),r||t)&&a.push(e)):n.push(e)})),0<a.length?(this.relatedNodes(a),!1):!n.length||void this.relatedNodes(n)},"th-has-data-cells-evaluate":function(e){var t=_c(e),n=this,a=[],r=(t=(t.forEach((function(e){var t;(t=((t=e.getAttribute("headers"))&&(a=a.concat(t.split(/\\s+/))),e.getAttribute("aria-labelledby")))&&(a=a.concat(t.split(/\\s+/)))})),t.filter((function(e){return""!==Fo(e.textContent)&&("TH"===e.nodeName.toUpperCase()||-1!==["rowheader","columnheader"].indexOf(e.getAttribute("role")))}))),ho(e)),o=!0;return t.forEach((function(e){var t,u;e.getAttribute("id")&&a.includes(e.getAttribute("id"))||(t=go(e,r),u=!1,(u=!(u=yo(e)?jc("down",t,r).find((function(t){return!yo(t)&&Ic(t,r).includes(e)})):u)&&vo(e)?jc("right",t,r).find((function(t){return!vo(t)&&Ic(t,r).includes(e)})):u)||n.relatedNodes(e),o=o&&u)})),!!o||void 0},"title-only-evaluate":function(e,t,n){var a=_u(n),r=Ko(n);return n=n.attr("aria-describedby"),!(a||!r&&!n)},"unique-frame-title-after":function(e){var t={};return e.forEach((function(e){t[e.data]=void 0!==t[e.data]?++t[e.data]:0})),e.forEach((function(e){e.result=!!t[e.data]})),e},"unique-frame-title-evaluate":function(e,t,n){return n=Fo(n.attr("title")).toLowerCase(),this.data(n),!0},"unsupportedrole-evaluate":function(e,t,n){n=Go(n,{dpub:!0,fallback:!0});var a=co(n);return a&&this.data(n),a},"valid-lang-evaluate":function(e,t,n){var a=[];return t.attributes.forEach((function(e){var r,o,u=n.attr(e);"string"==typeof u&&(r=Li(u),o=t.value?!t.value.map(Li).includes(r):!os(r),""!==r&&o||""!==u&&!Fo(u))&&a.push(e+\'="\'+n.attr(e)+\'"\')})),!!a.length&&!("html"!==n.props.nodeName&&!Hu(n)||(this.data(a),0))},"valid-scrollable-semantics-evaluate":function(e,t){return t=t,(n=Do(n=e))&&(Us[n]||t.roles.includes(n))||(t=(t=e).nodeName.toUpperCase(),$s[t])||!1;var n},"widget-not-inline-matches":function(e,t){return Xc.every((function(n){return n(e,t)}))},"window-is-top-matches":function(e){return e.ownerDocument.defaultView.self===e.ownerDocument.defaultView.top},"xml-lang-mismatch-evaluate":function(e,t,n){return Li(n.attr("lang"))===Li(n.attr("xml:lang"))},"xml-lang-mismatch-matches":function(e){var t=Li(e.getAttribute("lang"));e=Li(e.getAttribute("xml:lang"));return os(t)&&os(e)}},td=function(e){this.id=e.id,this.data=null,this.relatedNodes=[],this.result=null};function nd(e){if("string"!=typeof e)return e;if(ed[e])return ed[e];if(/^\\s*function[\\s\\w]*\\(/.test(e))return new Function("return "+e+";")();throw new ReferenceError("Function ID does not exist in the metadata-function-map: ".concat(e))}function ad(e){var t=0<arguments.length&&void 0!==e?e:{};return Array.isArray(t)||"object"!==r(t)?{value:t}:t}function rd(e){e&&(this.id=e.id,this.configure(e))}rd.prototype.enabled=!0,rd.prototype.run=function(e,t,n,a,r){var o=((t=t||{}).hasOwnProperty("enabled")?t:this).enabled,u=this.getOptions(t.options);if(o){var i;o=new td(this),t=Sn(o,t,a,r);try{i=this.evaluate.call(t,e.actualNode,u,e,n)}catch(t){return e&&e.actualNode&&(t.errorNode=new _n(e).toJSON()),void r(t)}t.isAsync||(o.result=i,a(o))}else a(null)},rd.prototype.runSync=function(e,t,n){if(!(void 0===(r=(t=t||{}).enabled)?this.enabled:r))return null;var a,r=this.getOptions(t.options),o=new td(this);(t=Sn(o,t)).async=function(){throw new Error("Cannot run async check while in a synchronous run")};try{a=this.evaluate.call(t,e.actualNode,r,e,n)}catch(t){throw e&&e.actualNode&&(t.errorNode=new _n(e).toJSON()),t}return o.result=a,o},rd.prototype.configure=function(e){var t=this;e.evaluate&&!ed[e.evaluate]||(this._internalCheck=!0),e.hasOwnProperty("enabled")&&(this.enabled=e.enabled),e.hasOwnProperty("options")&&(this._internalCheck?this.options=ad(e.options):this.options=e.options),["evaluate","after"].filter((function(t){return e.hasOwnProperty(t)})).forEach((function(n){return t[n]=nd(e[n])}))},rd.prototype.getOptions=function(e){return this._internalCheck?La(this.options,ad(e||{})):e||this.options};var od=rd,ud=function(e){this.id=e.id,this.result=Mt.NA,this.pageLevel=e.pageLevel,this.impact=null,this.nodes=[]};function id(e,t){this._audit=t,this.id=e.id,this.selector=e.selector||"*",e.impact&&(tn(Mt.impact.includes(e.impact),"Impact ".concat(e.impact," is not a valid impact")),this.impact=e.impact),this.excludeHidden="boolean"!=typeof e.excludeHidden||e.excludeHidden,this.enabled="boolean"!=typeof e.enabled||e.enabled,this.pageLevel="boolean"==typeof e.pageLevel&&e.pageLevel,this.reviewOnFail="boolean"==typeof e.reviewOnFail&&e.reviewOnFail,this.any=e.any||[],this.all=e.all||[],this.none=e.none||[],this.tags=e.tags||[],this.preload=!!e.preload,this.actIds=e.actIds,e.matches&&(this.matches=nd(e.matches))}function ld(e){var t,n;if(e.length)return t=!1,n={},e.forEach((function(e){var a=e.results.filter((function(e){return e}));(n[e.type]=a).length&&(t=!0)})),t?n:null}id.prototype.matches=function(){return!0},id.prototype.gather=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n="mark_gather_start_"+this.id,a="mark_gather_end_"+this.id,r="mark_isVisibleToScreenReaders_start_"+this.id,o="mark_isVisibleToScreenReaders_end_"+this.id,u=(t.performanceTimer&&Rl.mark(n),Xl(this.selector,e));return this.excludeHidden&&(t.performanceTimer&&Rl.mark(r),u=u.filter(uu),t.performanceTimer)&&(Rl.mark(o),Rl.measure("rule_"+this.id+"#gather_axe.utils.isVisibleToScreenReaders",r,o)),t.performanceTimer&&(Rl.mark(a),Rl.measure("rule_"+this.id+"#gather",n,a)),u},id.prototype.runChecks=function(e,t,n,a,r,o){var u=this,i=Xn();this[e].forEach((function(e){var r=u._audit.checks[e.id||e],o=Wi(r,u.id,n);i.defer((function(e,n){r.run(t,o,a,e,n)}))})),i.then((function(t){t=t.filter((function(e){return e})),r({type:e,results:t})})).catch(o)},id.prototype.runChecksSync=function(e,t,n,a){var r=this,o=[];return this[e].forEach((function(e){e=r._audit.checks[e.id||e];var u=Wi(e,r.id,n);o.push(e.runSync(t,u,a))})),{type:e,results:o=o.filter((function(e){return e}))}},id.prototype.run=function(e){var t,n=this,a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},r=2<arguments.length?arguments[2]:void 0,o=3<arguments.length?arguments[3]:void 0,i=(a.performanceTimer&&this._trackPerformance(),Xn()),l=new ud(this);try{t=this.gatherAndMatchNodes(e,a)}catch(t){return void o(new u({cause:t,ruleId:this.id}))}a.performanceTimer&&this._logGatherPerformance(t),t.forEach((function(t){i.defer((function(r,o){var u=Xn();["any","all","none"].forEach((function(r){u.defer((function(o,u){n.runChecks(r,t,a,e,o,u)}))})),u.then((function(e){var o=ld(e);o&&(o.node=new _n(t,a),l.nodes.push(o),n.reviewOnFail)&&(["any","all"].forEach((function(e){o[e].forEach((function(e){!1===e.result&&(e.result=void 0)}))})),o.none.forEach((function(e){!0===e.result&&(e.result=void 0)}))),r()})).catch((function(e){return o(e)}))}))})),i.defer((function(e){return setTimeout(e,0)})),a.performanceTimer&&this._logRulePerformance(),i.then((function(){return r(l)})).catch((function(e){return o(e)}))},id.prototype.runSync=function(e){var t,n=this,a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},r=(a.performanceTimer&&this._trackPerformance(),new ud(this));try{t=this.gatherAndMatchNodes(e,a)}catch(t){throw new u({cause:t,ruleId:this.id})}return a.performanceTimer&&this._logGatherPerformance(t),t.forEach((function(t){var o=[],u=(["any","all","none"].forEach((function(r){o.push(n.runChecksSync(r,t,a,e))})),ld(o));u&&(u.node=t.actualNode?new _n(t,a):null,r.nodes.push(u),n.reviewOnFail)&&(["any","all"].forEach((function(e){u[e].forEach((function(e){!1===e.result&&(e.result=void 0)}))})),u.none.forEach((function(e){!0===e.result&&(e.result=void 0)})))})),a.performanceTimer&&this._logRulePerformance(),r},id.prototype._trackPerformance=function(){this._markStart="mark_rule_start_"+this.id,this._markEnd="mark_rule_end_"+this.id,this._markChecksStart="mark_runchecks_start_"+this.id,this._markChecksEnd="mark_runchecks_end_"+this.id},id.prototype._logGatherPerformance=function(e){Lt("gather (",e.length,"):",Rl.timeElapsed()+"ms"),Rl.mark(this._markChecksStart)},id.prototype._logRulePerformance=function(){Rl.mark(this._markChecksEnd),Rl.mark(this._markEnd),Rl.measure("runchecks_"+this.id,this._markChecksStart,this._markChecksEnd),Rl.measure("rule_"+this.id,this._markStart,this._markEnd)},id.prototype.gatherAndMatchNodes=function(e,t){var n=this,a="mark_matches_start_"+this.id,r="mark_matches_end_"+this.id,o=this.gather(e,t);return t.performanceTimer&&Rl.mark(a),o=o.filter((function(t){return n.matches(t.actualNode,t,e)})),t.performanceTimer&&(Rl.mark(r),Rl.measure("rule_"+this.id+"#matches",a,r)),o},id.prototype.after=function(e,t){var n,a,r,o=this,u=Oa(n=this).map((function(e){return(e=n._audit.checks[e.id||e])&&"function"==typeof e.after?e:null})).filter(Boolean),i=this.id;return u.forEach((function(n){u=e.nodes,a=n.id,r=[],u.forEach((function(e){Oa(e).forEach((function(t){t.id===a&&(t.node=e.node,r.push(t))}))}));var a,r,u=r,l=Wi(n,i,t),s=n.after(u,l);o.reviewOnFail&&s.forEach((function(e){var t=(o.any.includes(e.id)||o.all.includes(e.id))&&!1===e.result,n=o.none.includes(e.id)&&!0===e.result;(t||n)&&(e.result=void 0)})),u.forEach((function(e){delete e.node,-1===s.indexOf(e)&&(e.filtered=!0)}))})),e.nodes=(a=["any","all","none"],r=(u=e).nodes.filter((function(e){var t=0;return a.forEach((function(n){e[n]=e[n].filter((function(e){return!0!==e.filtered})),t+=e[n].length})),0<t})),r=u.pageLevel&&r.length?[r.reduce((function(e,t){if(e)return a.forEach((function(n){e[n].push.apply(e[n],t[n])})),e}))]:r),e},id.prototype.configure=function(e){e.hasOwnProperty("selector")&&(this.selector=e.selector),e.hasOwnProperty("excludeHidden")&&(this.excludeHidden="boolean"!=typeof e.excludeHidden||e.excludeHidden),e.hasOwnProperty("enabled")&&(this.enabled="boolean"!=typeof e.enabled||e.enabled),e.hasOwnProperty("pageLevel")&&(this.pageLevel="boolean"==typeof e.pageLevel&&e.pageLevel),e.hasOwnProperty("reviewOnFail")&&(this.reviewOnFail="boolean"==typeof e.reviewOnFail&&e.reviewOnFail),e.hasOwnProperty("any")&&(this.any=e.any),e.hasOwnProperty("all")&&(this.all=e.all),e.hasOwnProperty("none")&&(this.none=e.none),e.hasOwnProperty("tags")&&(this.tags=e.tags),e.hasOwnProperty("actIds")&&(this.actIds=e.actIds),e.hasOwnProperty("matches")&&(this.matches=nd(e.matches)),e.impact&&(tn(Mt.impact.includes(e.impact),"Impact ".concat(e.impact," is not a valid impact")),this.impact=e.impact)};var sd=id,cd=H(Ot()),dd=/\\{\\{.+?\\}\\}/g;function pd(){return t.origin||(t.location&&t.location.origin?t.location.origin:void 0)}function Dd(e,t,n){for(var a=0,r=e.length;a<r;a++)t[n](e[a])}function fd(e){P(this,fd),this.lang="en",this.defaultConfig=e,this.standards=so,this._init(),this._defaultLocale=null}function md(e,t,n){return n.performanceTimer&&Rl.mark("mark_rule_start_"+e.id),function(a,r){e.run(t,n,(function(e){a(e)}),(function(t){n.debug?r(t):(t=Object.assign(new ud(e),{result:Mt.CANTTELL,description:"An error occured while running this rule",message:t.message,stack:t.stack,error:t,errorNode:t.errorNode}),a(t))}))}}function hd(e,t,n){var a=e.brand,r=e.application;e=e.lang;return Mt.helpUrlBase+a+"/"+(n||o.version.substring(0,o.version.lastIndexOf(".")))+"/"+t+"?application="+encodeURIComponent(r)+(e&&"en"!==e?"&lang="+encodeURIComponent(e):"")}L(fd,[{key:"_setDefaultLocale",value:function(){if(!this._defaultLocale){for(var e={checks:{},rules:{},failureSummaries:{},incompleteFallbackMessage:"",lang:this.lang},t=Object.keys(this.data.checks),n=0;n<t.length;n++){var a=t[n],r=(u=this.data.checks[a].messages).pass,o=u.fail,u=u.incomplete;e.checks[a]={pass:r,fail:o,incomplete:u}}for(var i=Object.keys(this.data.rules),l=0;l<i.length;l++){var s=i[l],c=(d=this.data.rules[s]).description,d=d.help;e.rules[s]={description:c,help:d}}for(var p=Object.keys(this.data.failureSummaries),D=0;D<p.length;D++){var f=p[D],m=this.data.failureSummaries[f].failureMessage;e.failureSummaries[f]={failureMessage:m}}e.incompleteFallbackMessage=this.data.incompleteFallbackMessage,this._defaultLocale=e}}},{key:"_resetLocale",value:function(){var e=this._defaultLocale;e&&this.applyLocale(e)}},{key:"_applyCheckLocale",value:function(e){for(var t,n,a,o=Object.keys(e),u=0;u<o.length;u++){var i=o[u];if(!this.data.checks[i])throw new Error(\'Locale provided for unknown check: "\'.concat(i,\'"\'));this.data.checks[i]=(t=this.data.checks[i],a=n=void 0,n=(i=e[i]).pass,a=i.fail,"string"==typeof n&&dd.test(n)&&(n=cd.default.compile(n)),"string"==typeof a&&dd.test(a)&&(a=cd.default.compile(a)),O({},t,{messages:{pass:n||t.messages.pass,fail:a||t.messages.fail,incomplete:"object"===r(t.messages.incomplete)?O({},t.messages.incomplete,i.incomplete):i.incomplete}}))}}},{key:"_applyRuleLocale",value:function(e){for(var t,n,a=Object.keys(e),r=0;r<a.length;r++){var o=a[r];if(!this.data.rules[o])throw new Error(\'Locale provided for unknown rule: "\'.concat(o,\'"\'));this.data.rules[o]=(t=this.data.rules[o],n=void 0,n=(o=e[o]).help,o=o.description,"string"==typeof n&&dd.test(n)&&(n=cd.default.compile(n)),"string"==typeof o&&dd.test(o)&&(o=cd.default.compile(o)),O({},t,{help:n||t.help,description:o||t.description}))}}},{key:"_applyFailureSummaries",value:function(e){for(var t=Object.keys(e),n=0;n<t.length;n++){var a=t[n];if(!this.data.failureSummaries[a])throw new Error(\'Locale provided for unknown failureMessage: "\'.concat(a,\'"\'));this.data.failureSummaries[a]=function(e,t){return O({},e,{failureMessage:(t="string"==typeof(t=t.failureMessage)&&dd.test(t)?cd.default.compile(t):t)||e.failureMessage})}(this.data.failureSummaries[a],e[a])}}},{key:"applyLocale",value:function(e){var t,n;this._setDefaultLocale(),e.checks&&this._applyCheckLocale(e.checks),e.rules&&this._applyRuleLocale(e.rules),e.failureSummaries&&this._applyFailureSummaries(e.failureSummaries,"failureSummaries"),e.incompleteFallbackMessage&&(this.data.incompleteFallbackMessage=(t=this.data.incompleteFallbackMessage,(n="string"==typeof(n=e.incompleteFallbackMessage)&&dd.test(n)?cd.default.compile(n):n)||t)),e.lang&&(this.lang=e.lang)}},{key:"setAllowedOrigins",value:function(e){var t,n=pd(),a=(this.allowedOrigins=[],q(e));try{for(a.s();!(t=a.n()).done;){var r=t.value;if(r===Mt.allOrigins)return void(this.allowedOrigins=["*"]);r!==Mt.sameOrigin?this.allowedOrigins.push(r):n&&this.allowedOrigins.push(n)}}catch(e){a.e(e)}finally{a.f()}}},{key:"_init",value:function(){(t=this.defaultConfig)?(e=In(t)).commons=t.commons:e={},e.reporter=e.reporter||null,e.noHtml=e.noHtml||!1,e.allowedOrigins||(t=pd(),e.allowedOrigins=t?[t]:[]),e.rules=e.rules||[],e.checks=e.checks||[],e.data=O({checks:{},rules:{}},e.data);var e,t=e;this.lang=t.lang||"en",this.reporter=t.reporter,this.commands={},this.rules=[],this.checks={},this.brand="axe",this.application="axeAPI",this.tagExclude=["experimental"],this.noHtml=t.noHtml,this.allowedOrigins=t.allowedOrigins,Dd(t.rules,this,"addRule"),Dd(t.checks,this,"addCheck"),this.data={},this.data.checks=t.data&&t.data.checks||{},this.data.rules=t.data&&t.data.rules||{},this.data.failureSummaries=t.data&&t.data.failureSummaries||{},this.data.incompleteFallbackMessage=t.data&&t.data.incompleteFallbackMessage||"",this._constructHelpUrls()}},{key:"registerCommand",value:function(e){this.commands[e.id]=e.callback}},{key:"addRule",value:function(e){e.metadata&&(this.data.rules[e.id]=e.metadata);var t=this.getRule(e.id);t?t.configure(e):this.rules.push(new sd(e,this))}},{key:"addCheck",value:function(e){var t=e.metadata;"object"===r(t)&&(this.data.checks[e.id]=t,"object"===r(t.messages))&&Object.keys(t.messages).filter((function(e){return t.messages.hasOwnProperty(e)&&"string"==typeof t.messages[e]})).forEach((function(e){0===t.messages[e].indexOf("function")&&(t.messages[e]=new Function("return "+t.messages[e]+";")())})),this.checks[e.id]?this.checks[e.id].configure(e):this.checks[e.id]=new od(e)}},{key:"run",value:function(e,t,n,a){this.normalizeOptions(t),o._selectCache=[],c=this.rules,r=e,u=t;var r,u,i=(c=c.reduce((function(e,t){return Kl(t,r,u)&&(t.preload?e.later:e.now).push(t),e}),{now:[],later:[]})).now,l=c.later,s=Xn(),c=(i.forEach((function(n){s.defer(md(n,e,t))})),Xn());(i=(l.length&&c.defer((function(e){$l(t).then((function(t){return e(t)})).catch((function(t){console.warn("Couldn\'t load preload assets: ",t),e(void 0)}))})),Xn())).defer(s),i.defer(c),i.then((function(r){var u,i=r.pop(),s=(i&&i.length&&(i=i[0])&&(e=O({},e,i)),r[0]);l.length?(u=Xn(),l.forEach((function(n){n=md(n,e,t),u.defer(n)})),u.then((function(e){o._selectCache=void 0,n(s.concat(e).filter((function(e){return!!e})))})).catch(a)):(o._selectCache=void 0,n(s.filter((function(e){return!!e}))))})).catch(a)}},{key:"after",value:function(e,t){var n=this.rules;return e.map((function(e){var a=_a(n,"id",e.id);if(a)return a.after(e,t);throw new Error("Result for unknown rule. You may be running mismatch axe-core versions")}))}},{key:"getRule",value:function(e){return this.rules.find((function(t){return t.id===e}))}},{key:"normalizeOptions",value:function(e){var t=[],n=[];if(this.rules.forEach((function(e){n.push(e.id),e.tags.forEach((function(e){t.includes(e)||t.push(e)}))})),["object","string"].includes(r(e.runOnly))){if("string"==typeof e.runOnly&&(e.runOnly=[e.runOnly]),Array.isArray(e.runOnly)){var a=e.runOnly.find((function(e){return t.includes(e)})),u=e.runOnly.find((function(e){return n.includes(e)}));if(a&&u)throw new Error("runOnly cannot be both rules and tags");e.runOnly=u?{type:"rule",values:e.runOnly}:{type:"tag",values:e.runOnly}}if((a=e.runOnly).value&&!a.values&&(a.values=a.value,delete a.value),!Array.isArray(a.values)||0===a.values.length)throw new Error("runOnly.values must be a non-empty array");if(["rule","rules"].includes(a.type))a.type="rule",a.values.forEach((function(e){if(!n.includes(e))throw new Error("unknown rule `"+e+"` in options.runOnly")}));else{if(!["tag","tags",void 0].includes(a.type))throw new Error("Unknown runOnly type \'".concat(a.type,"\'"));a.type="tag",0!==(u=a.values.filter((function(e){return!t.includes(e)&&!/wcag2[1-3]a{1,3}/.test(e)}))).length&&o.log("Could not find tags `"+u.join("`, `")+"`")}}return"object"===r(e.rules)&&Object.keys(e.rules).forEach((function(e){if(!n.includes(e))throw new Error("unknown rule `"+e+"` in options.rules")})),e}},{key:"setBranding",value:function(e){var t={brand:this.brand,application:this.application};"string"==typeof e&&(this.application=e),e&&e.hasOwnProperty("brand")&&e.brand&&"string"==typeof e.brand&&(this.brand=e.brand),e&&e.hasOwnProperty("application")&&e.application&&"string"==typeof e.application&&(this.application=e.application),this._constructHelpUrls(t)}},{key:"_constructHelpUrls",value:function(){var e=this,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null,n=(o.version.match(/^[1-9][0-9]*\\.[0-9]+/)||["x.y"])[0];this.rules.forEach((function(a){e.data.rules[a.id]||(e.data.rules[a.id]={});var r=e.data.rules[a.id];("string"!=typeof r.helpUrl||t&&r.helpUrl===hd(t,a.id,n))&&(r.helpUrl=hd(e,a.id,n))}))}},{key:"resetRulesAndChecks",value:function(){this._init(),this._resetLocale()}}]);var gd=fd;function bd(){Nn.get("globalDocumentSet")&&(Nn.set("globalDocumentSet",!1),a=null),Nn.get("globalWindowSet")&&(Nn.set("globalWindowSet",!1),t=null)}var yd=function(){bd(),o._memoizedFns.forEach((function(e){return e.clear()})),Nn.clear(),o._tree=void 0,o._selectorData=void 0,o._selectCache=void 0},vd=function(e,t,n,a){try{e=new ol(e),o._tree=e.flatTree,o._selectorData=Fn(e.flatTree)}catch(r){return yd(),a(r)}var r=Xn(),u=o._audit;t.performanceTimer&&Rl.auditStart(),e.frames.length&&!1!==t.iframes&&r.defer((function(n,a){Pa(e,t,"rules",null,n,a)})),r.defer((function(n,a){u.run(e,t,n,a)})),r.then((function(r){try{t.performanceTimer&&Rl.auditEnd();var o=Ia(r.map((function(e){return{results:e}})));e.initiator&&((o=u.after(o,t)).forEach(Hl),o=o.map(Jt));try{n(o,yd)}catch(r){yd(),Lt(r)}}catch(r){yd(),a(r)}})).catch((function(e){yd(),a(e)}))};function Fd(e){this._run=e.run,this._collect=e.collect,this._registry={},e.commands.forEach((function(e){o._audit.registerCommand(e)}))}function wd(e){var t,n=(e=_(e,3))[0],u=e[1],i=(e=e[2],new TypeError("axe.run arguments are invalid"));if(!Xi(t=n)&&!Qi(t)){if(void 0!==e)throw i;e=u,u=n,n=a}if("object"!==r(u)){if(void 0!==e)throw i;e=u,u={}}if("function"!=typeof e&&void 0!==e)throw i;return(u=In(u)).reporter=null!=(t=null!=(t=u.reporter)?t:null==(i=o._audit)?void 0:i.reporter)?t:"v1",{context:n,options:u,callback:e}}t.top!==t&&(ka.subscribe("axe.start",(function(e,t,n){function r(e){e instanceof Error==0&&(e=new Error(e)),n(e)}var u=n,i=e&&e.context||{},l=(i.hasOwnProperty("include")&&!i.include.length&&(i.include=[a]),e&&e.options||{});switch(e.command){case"rules":return vd(i,l,(function(e,t){u(e),t()}),r);case"cleanup-plugin":return fs(u,r);default:if(o._audit&&o._audit.commands&&o._audit.commands[e.command])return o._audit.commands[e.command](e,n)}})),ka.subscribe("axe.ping",(function(e,t,n){n({axe:!0})}))),Fd.prototype.run=function(){return this._run.apply(this,arguments)},Fd.prototype.collect=function(){return this._collect.apply(this,arguments)},Fd.prototype.cleanup=function(e){var t=o.utils.queue(),n=this;Object.keys(this._registry).forEach((function(e){t.defer((function(t){n._registry[e].cleanup(t)}))})),t.then(e)},Fd.prototype.add=function(e){this._registry[e.id]=e};var Ed=function(){};function Cd(e){var t=e.node,n=R(e,m);n.node=t.toJSON();for(var a=0,r=["any","all","none"];a<r.length;a++){var o=r[a];n[o]=n[o].map((function(e){var t=e.relatedNodes;return O({},R(e,h),{relatedNodes:t.map((function(e){return e.toJSON()}))})}))}return n}var xd=function(e,t,n){if("function"==typeof t&&(n=t,t={}),!e||!Array.isArray(e))return n(e);n(e.map((function(e){for(var t=O({},e),n=0,a=["passes","violations","incomplete","inapplicable"];n<a.length;n++){var r=a[n];t[r]&&Array.isArray(t[r])&&(t[r]=t[r].map((function(e){var t,n=e.node;e=R(e,y);return O({node:n="function"==typeof(null==(t=n)?void 0:t.toJSON)?n.toJSON():n},e)})))}return t})))};It={base:{Audit:gd,CheckResult:td,Check:od,Context:ol,RuleResult:ud,Rule:sd,metadataFunctionMap:ed},public:{reporters:ms},helpers:{failureSummary:ji,incompleteFallbackMessage:qi,processAggregate:zi},utils:{setDefaultFrameMessenger:xa,cacheNodeSelectors:Si,getNodesMatchingExpression:Ni,convertSelector:zn},commons:{dom:{nativelyHidden:tr,displayHidden:nr,visibilityHidden:ar,contentVisibiltyHidden:rr,ariaHidden:or,opacityHidden:ur,scrollHidden:ir,overflowHidden:lr,clipHidden:sr,areaHidden:cr,detailsHidden:dr}}};o._thisWillBeDeletedDoNotUse=It,o.constants=Mt,o.log=Lt,o.AbstractVirtualNode=Vt,o.SerialVirtualNode=ss,o.VirtualNode=ki,o._cache=Nn,o.imports=uo,o.cleanup=fs,o.configure=function(e){var t=o._audit;if(!t)throw new Error("No audit configured");if(e.axeVersion||e.ver){var n=e.axeVersion||e.ver;if(!/^\\d+\\.\\d+\\.\\d+(-canary)?/.test(n))throw new Error("Invalid configured version ".concat(n));var a=(r=_(n.split("-"),2))[0],r=r[1],u=(a=_(a.split(".").map(Number),3))[0],i=a[1],l=(a=a[2],(s=_(o.version.split("-"),2))[0]),s=s[1],c=(l=_(l.split(".").map(Number),3))[0],d=l[1];l=l[2];if(u!==c||d<i||d===i&&l<a||u===c&&i===d&&a===l&&r&&r!==s)throw new Error("Configured version ".concat(n," is not compatible with current axe version ").concat(o.version))}if(e.reporter&&("function"==typeof e.reporter||hs(e.reporter))&&(t.reporter=e.reporter),e.checks){if(!Array.isArray(e.checks))throw new TypeError("Checks property must be an array");e.checks.forEach((function(e){if(!e.id)throw new TypeError("Configured check ".concat(JSON.stringify(e)," is invalid. Checks must be an object with at least an id property"));t.addCheck(e)}))}var p,D=[];if(e.rules){if(!Array.isArray(e.rules))throw new TypeError("Rules property must be an array");e.rules.forEach((function(e){if(!e.id)throw new TypeError("Configured rule ".concat(JSON.stringify(e)," is invalid. Rules must be an object with at least an id property"));D.push(e.id),t.addRule(e)}))}if(e.disableOtherRules&&t.rules.forEach((function(e){!1===D.includes(e.id)&&(e.enabled=!1)})),void 0!==e.branding?t.setBranding(e.branding):t._constructHelpUrls(),e.tagExclude&&(t.tagExclude=e.tagExclude),e.locale&&t.applyLocale(e.locale),e.standards&&(p=e.standards,Object.keys(lo).forEach((function(e){p[e]&&(lo[e]=La(lo[e],p[e]))}))),e.noHtml&&(t.noHtml=!0),e.allowedOrigins){if(!Array.isArray(e.allowedOrigins))throw new TypeError("Allowed origins property must be an array");if(e.allowedOrigins.includes("*"))throw new Error(\'"*" is not allowed. Use "\'.concat(Mt.allOrigins,\'" instead\'));t.setAllowedOrigins(e.allowedOrigins)}},o.frameMessenger=function(e){ka.updateMessenger(e)},o.getRules=function(e){var t=(e=e||[]).length?o._audit.rules.filter((function(t){return!!e.filter((function(e){return-1!==t.tags.indexOf(e)})).length})):o._audit.rules,n=o._audit.data.rules||{};return t.map((function(e){var t=n[e.id]||{};return{ruleId:e.id,description:t.description,help:t.help,helpUrl:t.helpUrl,tags:e.tags,actIds:e.actIds}}))},o._load=function(e){o._audit=new gd(e)},o.plugins={},o.registerPlugin=function(e){o.plugins[e.id]=new Fd(e)},o.hasReporter=hs,o.getReporter=gs,o.addReporter=function(e,t,n){ms[e]=t,n&&(Ds=t)},o.reset=function(){var e=o._audit;if(!e)throw new Error("No audit configured");e.resetRulesAndChecks(),Object.keys(lo).forEach((function(e){lo[e]=io[e]}))},o._runRules=vd,o.runVirtualRule=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},a=(n.reporter=n.reporter||o._audit.reporter||"v1",o._selectorData={},t instanceof Vt||(t=new ss(t)),il(e));if(a)return a=(a=Object.create(a,{excludeHidden:{value:!1}})).runSync({initiator:!0,include:[t],exclude:[],frames:[],page:!1,focusable:!0,size:{},flatTree:[]},n),Hl(a),Jt(a),(a=Zt([a])).violations.forEach((function(e){return e.nodes.forEach((function(e){e.failureSummary=ji(e)}))})),O({},Ki(),a,{toolOptions:n});throw new Error("unknown rule `"+e+"`")},o.run=function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];var u=n[0],i=!!a;if(!(c=t&&"Node"in t&&"NodeList"in t)||!i){if(!u||!u.ownerDocument)throw new Error(\'Required "window" or "document" globals not defined and cannot be deduced from the context. Either set the globals before running or pass in a valid Element.\');i||(Nn.set("globalDocumentSet",!0),a=u.ownerDocument),c||(Nn.set("globalWindowSet",!0),t=a.defaultView)}u=(i=wd(n)).context;var l=i.options,s=void 0===(c=i.callback)?Ed:c,c=(i=function(e){var t,n,a;return"function"==typeof Promise&&e===Ed?t=new Promise((function(e,t){n=t,a=e})):a=n=Ed,{thenable:t,reject:n,resolve:a}}(s)).thenable,d=i.resolve,p=i.reject;try{tn(o._audit,"No audit configured"),tn(!o._running,"Axe is already running. Use `await axe.run()` to wait for the previous run to finish before starting a new run.")}catch(e){i=e;var D=s;if(bd(),"function"!=typeof D||D===Ed)throw i;return void D(i.message)}return o._running=!0,l.performanceTimer&&o.utils.performanceTimer.start(),o._runRules(u,l,(function(e,t){l.performanceTimer&&o.utils.performanceTimer.end();try{var n=e,a=l,r=function(e){o._running=!1,t();try{s(null,e)}catch(e){o.log(e)}d(e)};void 0!==(n=gs(a.reporter)(n,a,r))&&r(n)}catch(e){o._running=!1,t(),s(e),p(e)}}),(function(e){l.performanceTimer&&o.utils.performanceTimer.end(),o._running=!1,bd(),s(e),p(e)})),c},o.setup=function(e){if(o._tree)throw new Error("Axe is already setup. Call `axe.teardown()` before calling `axe.setup` again.");return o._tree=Mi(e),o._selectorData=Fn(o._tree),o._tree[0]},o.teardown=yd,o.runPartial=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var a=(r=wd(t)).options,r=r.context,u=(tn(o._audit,"Axe is not configured. Audit is missing."),tn(!o._running,"Axe is already running. Use `await axe.run()` to wait for the previous run to finish before starting a new run."),new ol(r,o._tree));return o._tree=u.flatTree,o._selectorData=Fn(u.flatTree),o._running=!0,new Promise((function(e,t){o._audit.run(u,a,e,t)})).then((function(e){e=e.map((function(e){var t=e.nodes;e=R(e,f);return O({nodes:t.map(Cd)},e)}));var t,n=u.frames.map((function(e){return e=e.node,new _n(e,a).toJSON()}));return u.initiator&&(t=Ki()),o._running=!1,yd(),{results:e,frames:n,environmentData:t}})).catch((function(e){return o._running=!1,yd(),Promise.reject(e)}))},o.finishRun=function(e){var t,n=In(n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}),a=(e.find((function(e){return e.environmentData}))||{}).environmentData;o._audit.normalizeOptions(n),n.reporter=null!=(p=null!=(p=n.reporter)?p:null==(p=o._audit)?void 0:p.reporter)?p:"v1";var r=[],u=q(p=e);try{for(u.s();!(t=u.n()).done;){var i,l=t.value,s=r.shift();l&&(l.frameSpec=null!=s?s:null,i=function(e){var t=e.frames,n=e.frameSpec;return n?t.map((function(e){return _n.mergeSpecs(e,n)})):t}(l),r.unshift.apply(r,N(i)))}}catch(e){u.e(e)}finally{u.f()}var c,d,p=Ia(e);return(p=o._audit.after(p,n)).forEach(Hl),p=p.map(Jt),c=p,d=O({environmentData:a},n),new Promise((function(e){gs(d.reporter)(c,d,e)}))},o.commons=_t,o.utils=zt,o.addReporter("na",(function(e,t,n){console.warn(\'"na" reporter will be deprecated in axe v4.0. Use the "v2" reporter instead.\'),"function"==typeof t&&(n=t,t={});var a=t.environmentData,r=R(r=t,g);n(O({},Ki(a),{toolOptions:r},zi(e,t)))})),o.addReporter("no-passes",(function(e,t,n){"function"==typeof t&&(n=t,t={});var a=t.environmentData,r=R(r=t,b);t.resultTypes=["violations"],e=zi(e,t).violations,n(O({},Ki(a),{toolOptions:r,violations:e}))})),o.addReporter("rawEnv",(function(e,t,n){"function"==typeof t&&(n=t,t={});var a=t.environmentData;t=R(t,v),xd(e,t,(function(e){var t=Ki(a);n({raw:e,env:t})}))})),o.addReporter("raw",xd),o.addReporter("v1",(function(e,t,n){function a(e){e.nodes.forEach((function(e){e.failureSummary=ji(e)}))}"function"==typeof t&&(n=t,t={});var r=t.environmentData,o=R(o=t,F);(e=zi(e,t)).incomplete.forEach(a),e.violations.forEach(a),n(O({},Ki(r),{toolOptions:o},e))})),o.addReporter("v2",(function(e,t,n){"function"==typeof t&&(n=t,t={});var a=t.environmentData,r=R(r=t,w);e=zi(e,t),n(O({},Ki(a),{toolOptions:r},e))}),!0),o._load({lang:"en",data:{rules:{accesskeys:{description:"Ensures every accesskey attribute value is unique",help:"accesskey attribute value should be unique"},"area-alt":{description:"Ensures <area> elements of image maps have alternate text",help:"Active <area> elements must have alternate text"},"aria-allowed-attr":{description:"Ensures ARIA attributes are allowed for an element\'s role",help:"Elements must only use allowed ARIA attributes"},"aria-allowed-role":{description:"Ensures role attribute has an appropriate value for the element",help:"ARIA role should be appropriate for the element"},"aria-command-name":{description:"Ensures every ARIA button, link and menuitem has an accessible name",help:"ARIA commands must have an accessible name"},"aria-dialog-name":{description:"Ensures every ARIA dialog and alertdialog node has an accessible name",help:"ARIA dialog and alertdialog nodes should have an accessible name"},"aria-hidden-body":{description:"Ensures aria-hidden=\'true\' is not present on the document body.",help:"aria-hidden=\'true\' must not be present on the document body"},"aria-hidden-focus":{description:"Ensures aria-hidden elements are not focusable nor contain focusable elements",help:"ARIA hidden element must not be focusable or contain focusable elements"},"aria-input-field-name":{description:"Ensures every ARIA input field has an accessible name",help:"ARIA input fields must have an accessible name"},"aria-meter-name":{description:"Ensures every ARIA meter node has an accessible name",help:"ARIA meter nodes must have an accessible name"},"aria-progressbar-name":{description:"Ensures every ARIA progressbar node has an accessible name",help:"ARIA progressbar nodes must have an accessible name"},"aria-required-attr":{description:"Ensures elements with ARIA roles have all required ARIA attributes",help:"Required ARIA attributes must be provided"},"aria-required-children":{description:"Ensures elements with an ARIA role that require child roles contain them",help:"Certain ARIA roles must contain particular children"},"aria-required-parent":{description:"Ensures elements with an ARIA role that require parent roles are contained by them",help:"Certain ARIA roles must be contained by particular parents"},"aria-roledescription":{description:"Ensure aria-roledescription is only used on elements with an implicit or explicit role",help:"aria-roledescription must be on elements with a semantic role"},"aria-roles":{description:"Ensures all elements with a role attribute use a valid value",help:"ARIA roles used must conform to valid values"},"aria-text":{description:\'Ensures "role=text" is used on elements with no focusable descendants\',help:\'"role=text" should have no focusable descendants\'},"aria-toggle-field-name":{description:"Ensures every ARIA toggle field has an accessible name",help:"ARIA toggle fields must have an accessible name"},"aria-tooltip-name":{description:"Ensures every ARIA tooltip node has an accessible name",help:"ARIA tooltip nodes must have an accessible name"},"aria-treeitem-name":{description:"Ensures every ARIA treeitem node has an accessible name",help:"ARIA treeitem nodes should have an accessible name"},"aria-valid-attr-value":{description:"Ensures all ARIA attributes have valid values",help:"ARIA attributes must conform to valid values"},"aria-valid-attr":{description:"Ensures attributes that begin with aria- are valid ARIA attributes",help:"ARIA attributes must conform to valid names"},"audio-caption":{description:"Ensures <audio> elements have captions",help:"<audio> elements must have a captions track"},"autocomplete-valid":{description:"Ensure the autocomplete attribute is correct and suitable for the form field",help:"autocomplete attribute must be used correctly"},"avoid-inline-spacing":{description:"Ensure that text spacing set through style attributes can be adjusted with custom stylesheets",help:"Inline text spacing must be adjustable with custom stylesheets"},blink:{description:"Ensures <blink> elements are not used",help:"<blink> elements are deprecated and must not be used"},"button-name":{description:"Ensures buttons have discernible text",help:"Buttons must have discernible text"},bypass:{description:"Ensures each page has at least one mechanism for a user to bypass navigation and jump straight to the content",help:"Page must have means to bypass repeated blocks"},"color-contrast-enhanced":{description:"Ensures the contrast between foreground and background colors meets WCAG 2 AAA contrast ratio thresholds",help:"Elements must have sufficient color contrast"},"color-contrast":{description:"Ensures the contrast between foreground and background colors meets WCAG 2 AA contrast ratio thresholds",help:"Elements must have sufficient color contrast"},"css-orientation-lock":{description:"Ensures content is not locked to any specific display orientation, and the content is operable in all display orientations",help:"CSS Media queries must not lock display orientation"},"definition-list":{description:"Ensures <dl> elements are structured correctly",help:"<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements"},dlitem:{description:"Ensures <dt> and <dd> elements are contained by a <dl>",help:"<dt> and <dd> elements must be contained by a <dl>"},"document-title":{description:"Ensures each HTML document contains a non-empty <title> element",help:"Documents must have <title> element to aid in navigation"},"duplicate-id-active":{description:"Ensures every id attribute value of active elements is unique",help:"IDs of active elements must be unique"},"duplicate-id-aria":{description:"Ensures every id attribute value used in ARIA and in labels is unique",help:"IDs used in ARIA and labels must be unique"},"duplicate-id":{description:"Ensures every id attribute value is unique",help:"id attribute value must be unique"},"empty-heading":{description:"Ensures headings have discernible text",help:"Headings should not be empty"},"empty-table-header":{description:"Ensures table headers have discernible text",help:"Table header text should not be empty"},"focus-order-semantics":{description:"Ensures elements in the focus order have a role appropriate for interactive content",help:"Elements in the focus order should have an appropriate role"},"form-field-multiple-labels":{description:"Ensures form field does not have multiple label elements",help:"Form field must not have multiple label elements"},"frame-focusable-content":{description:"Ensures <frame> and <iframe> elements with focusable content do not have tabindex=-1",help:"Frames with focusable content must not have tabindex=-1"},"frame-tested":{description:"Ensures <iframe> and <frame> elements contain the axe-core script",help:"Frames should be tested with axe-core"},"frame-title-unique":{description:"Ensures <iframe> and <frame> elements contain a unique title attribute",help:"Frames must have a unique title attribute"},"frame-title":{description:"Ensures <iframe> and <frame> elements have an accessible name",help:"Frames must have an accessible name"},"heading-order":{description:"Ensures the order of headings is semantically correct",help:"Heading levels should only increase by one"},"hidden-content":{description:"Informs users about hidden content.",help:"Hidden content on the page should be analyzed"},"html-has-lang":{description:"Ensures every HTML document has a lang attribute",help:"<html> element must have a lang attribute"},"html-lang-valid":{description:"Ensures the lang attribute of the <html> element has a valid value",help:"<html> element must have a valid value for the lang attribute"},"html-xml-lang-mismatch":{description:"Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page",help:"HTML elements with lang and xml:lang must have the same base language"},"identical-links-same-purpose":{description:"Ensure that links with the same accessible name serve a similar purpose",help:"Links with the same name must have a similar purpose"},"image-alt":{description:"Ensures <img> elements have alternate text or a role of none or presentation",help:"Images must have alternate text"},"image-redundant-alt":{description:"Ensure image alternative is not repeated as text",help:"Alternative text of images should not be repeated as text"},"input-button-name":{description:"Ensures input buttons have discernible text",help:"Input buttons must have discernible text"},"input-image-alt":{description:\'Ensures <input type="image"> elements have alternate text\',help:"Image buttons must have alternate text"},"label-content-name-mismatch":{description:"Ensures that elements labelled through their content must have their visible text as part of their accessible name",help:"Elements must have their visible text as part of their accessible name"},"label-title-only":{description:"Ensures that every form element has a visible label and is not solely labeled using hidden labels, or the title or aria-describedby attributes",help:"Form elements should have a visible label"},label:{description:"Ensures every form element has a label",help:"Form elements must have labels"},"landmark-banner-is-top-level":{description:"Ensures the banner landmark is at top level",help:"Banner landmark should not be contained in another landmark"},"landmark-complementary-is-top-level":{description:"Ensures the complementary landmark or aside is at top level",help:"Aside should not be contained in another landmark"},"landmark-contentinfo-is-top-level":{description:"Ensures the contentinfo landmark is at top level",help:"Contentinfo landmark should not be contained in another landmark"},"landmark-main-is-top-level":{description:"Ensures the main landmark is at top level",help:"Main landmark should not be contained in another landmark"},"landmark-no-duplicate-banner":{description:"Ensures the document has at most one banner landmark",help:"Document should not have more than one banner landmark"},"landmark-no-duplicate-contentinfo":{description:"Ensures the document has at most one contentinfo landmark",help:"Document should not have more than one contentinfo landmark"},"landmark-no-duplicate-main":{description:"Ensures the document has at most one main landmark",help:"Document should not have more than one main landmark"},"landmark-one-main":{description:"Ensures the document has a main landmark",help:"Document should have one main landmark"},"landmark-unique":{help:"Ensures landmarks are unique",description:"Landmarks should have a unique role or role/label/title (i.e. accessible name) combination"},"link-in-text-block":{description:"Ensure links are distinguished from surrounding text in a way that does not rely on color",help:"Links must be distinguishable without relying on color"},"link-name":{description:"Ensures links have discernible text",help:"Links must have discernible text"},list:{description:"Ensures that lists are structured correctly",help:"<ul> and <ol> must only directly contain <li>, <script> or <template> elements"},listitem:{description:"Ensures <li> elements are used semantically",help:"<li> elements must be contained in a <ul> or <ol>"},marquee:{description:"Ensures <marquee> elements are not used",help:"<marquee> elements are deprecated and must not be used"},"meta-refresh-no-exceptions":{description:\'Ensures <meta http-equiv="refresh"> is not used for delayed refresh\',help:"Delayed refresh must not be used"},"meta-refresh":{description:\'Ensures <meta http-equiv="refresh"> is not used for delayed refresh\',help:"Delayed refresh under 20 hours must not be used"},"meta-viewport-large":{description:\'Ensures <meta name="viewport"> can scale a significant amount\',help:"Users should be able to zoom and scale the text up to 500%"},"meta-viewport":{description:\'Ensures <meta name="viewport"> does not disable text scaling and zooming\',help:"Zooming and scaling must not be disabled"},"nested-interactive":{description:"Ensures interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",help:"Interactive controls must not be nested"},"no-autoplay-audio":{description:"Ensures <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",help:"<video> or <audio> elements must not play automatically"},"object-alt":{description:"Ensures <object> elements have alternate text",help:"<object> elements must have alternate text"},"p-as-heading":{description:"Ensure bold, italic text and font-size is not used to style <p> elements as a heading",help:"Styled <p> elements must not be used as headings"},"page-has-heading-one":{description:"Ensure that the page, or at least one of its frames contains a level-one heading",help:"Page should contain a level-one heading"},"presentation-role-conflict":{description:"Elements marked as presentational should not have global ARIA or tabindex to ensure all screen readers ignore them",help:"Ensure elements marked as presentational are consistently ignored"},region:{description:"Ensures all page content is contained by landmarks",help:"All page content should be contained by landmarks"},"role-img-alt":{description:"Ensures [role=\'img\'] elements have alternate text",help:"[role=\'img\'] elements must have an alternative text"},"scope-attr-valid":{description:"Ensures the scope attribute is used correctly on tables",help:"scope attribute should be used correctly"},"scrollable-region-focusable":{description:"Ensure elements that have scrollable content are accessible by keyboard",help:"Scrollable region must have keyboard access"},"select-name":{description:"Ensures select element has an accessible name",help:"Select element must have an accessible name"},"server-side-image-map":{description:"Ensures that server-side image maps are not used",help:"Server-side image maps must not be used"},"skip-link":{description:"Ensure all skip links have a focusable target",help:"The skip-link target should exist and be focusable"},"svg-img-alt":{description:"Ensures <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text",help:"<svg> elements with an img role must have an alternative text"},tabindex:{description:"Ensures tabindex attribute values are not greater than 0",help:"Elements should not have tabindex greater than zero"},"table-duplicate-name":{description:"Ensure the <caption> element does not contain the same text as the summary attribute",help:"tables should not have the same summary and caption"},"table-fake-caption":{description:"Ensure that tables with a caption use the <caption> element.",help:"Data or header cells must not be used to give caption to a data table."},"target-size":{description:"Ensure touch target have sufficient size and space",help:"All touch targets must be 24px large, or leave sufficient space"},"td-has-header":{description:"Ensure that each non-empty data cell in a <table> larger than 3 by 3 has one or more table headers",help:"Non-empty <td> elements in larger <table> must have an associated table header"},"td-headers-attr":{description:"Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table",help:"Table cells that use the headers attribute must only refer to cells in the same table"},"th-has-data-cells":{description:"Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",help:"Table headers in a data table must refer to data cells"},"valid-lang":{description:"Ensures lang attributes have valid values",help:"lang attribute must have a valid value"},"video-caption":{description:"Ensures <video> elements have captions",help:"<video> elements must have captions"}},checks:{abstractrole:{impact:"serious",messages:{pass:"Abstract roles are not used",fail:{singular:"Abstract role cannot be directly used: ${data.values}",plural:"Abstract roles cannot be directly used: ${data.values}"}}},"aria-allowed-attr":{impact:"critical",messages:{pass:"ARIA attributes are used correctly for the defined role",fail:{singular:"ARIA attribute is not allowed: ${data.values}",plural:"ARIA attributes are not allowed: ${data.values}"},incomplete:"Check that there is no problem if the ARIA attribute is ignored on this element: ${data.values}"}},"aria-allowed-role":{impact:"minor",messages:{pass:"ARIA role is allowed for given element",fail:{singular:"ARIA role ${data.values} is not allowed for given element",plural:"ARIA roles ${data.values} are not allowed for given element"},incomplete:{singular:"ARIA role ${data.values} must be removed when the element is made visible, as it is not allowed for the element",plural:"ARIA roles ${data.values} must be removed when the element is made visible, as they are not allowed for the element"}}},"aria-busy":{impact:"serious",messages:{pass:"Element has an aria-busy attribute",fail:\'Element has no aria-busy="true" attribute\'}},"aria-errormessage":{impact:"critical",messages:{pass:"aria-errormessage exists and references elements visible to screen readers that use a supported aria-errormessage technique",fail:{singular:"aria-errormessage value `${data.values}` must use a technique to announce the message (e.g., aria-live, aria-describedby, role=alert, etc.)",plural:"aria-errormessage values `${data.values}` must use a technique to announce the message (e.g., aria-live, aria-describedby, role=alert, etc.)",hidden:"aria-errormessage value `${data.values}` cannot reference a hidden element"},incomplete:{singular:"ensure aria-errormessage value `${data.values}` references an existing element",plural:"ensure aria-errormessage values `${data.values}` reference existing elements",idrefs:"unable to determine if aria-errormessage element exists on the page: ${data.values}"}}},"aria-hidden-body":{impact:"critical",messages:{pass:"No aria-hidden attribute is present on document body",fail:"aria-hidden=true should not be present on the document body"}},"aria-level":{impact:"serious",messages:{pass:"aria-level values are valid",incomplete:"aria-level values greater than 6 are not supported in all screenreader and browser combinations"}},"aria-prohibited-attr":{impact:"serious",messages:{pass:"ARIA attribute is allowed",fail:{hasRolePlural:\'${data.prohibited} attributes cannot be used with role "${data.role}".\',hasRoleSingular:\'${data.prohibited} attribute cannot be used with role "${data.role}".\',noRolePlural:"${data.prohibited} attributes cannot be used on a ${data.nodeName} with no valid role attribute.",noRoleSingular:"${data.prohibited} attribute cannot be used on a ${data.nodeName} with no valid role attribute."},incomplete:{hasRoleSingular:\'${data.prohibited} attribute is not well supported with role "${data.role}".\',hasRolePlural:\'${data.prohibited} attributes are not well supported with role "${data.role}".\',noRoleSingular:"${data.prohibited} attribute is not well supported on a ${data.nodeName} with no valid role attribute.",noRolePlural:"${data.prohibited} attributes are not well supported on a ${data.nodeName} with no valid role attribute."}}},"aria-required-attr":{impact:"critical",messages:{pass:"All required ARIA attributes are present",fail:{singular:"Required ARIA attribute not present: ${data.values}",plural:"Required ARIA attributes not present: ${data.values}"}}},"aria-required-children":{impact:"critical",messages:{pass:"Required ARIA children are present",fail:{singular:"Required ARIA child role not present: ${data.values}",plural:"Required ARIA children role not present: ${data.values}",unallowed:"Element has children which are not allowed (see related nodes)"},incomplete:{singular:"Expecting ARIA child role to be added: ${data.values}",plural:"Expecting ARIA children role to be added: ${data.values}"}}},"aria-required-parent":{impact:"critical",messages:{pass:"Required ARIA parent role present",fail:{singular:"Required ARIA parent role not present: ${data.values}",plural:"Required ARIA parents role not present: ${data.values}"}}},"aria-roledescription":{impact:"serious",messages:{pass:"aria-roledescription used on a supported semantic role",incomplete:"Check that the aria-roledescription is announced by supported screen readers",fail:"Give the element a role that supports aria-roledescription"}},"aria-unsupported-attr":{impact:"critical",messages:{pass:"ARIA attribute is supported",fail:"ARIA attribute is not widely supported in screen readers and assistive technologies: ${data.values}"}},"aria-valid-attr-value":{impact:"critical",messages:{pass:"ARIA attribute values are valid",fail:{singular:"Invalid ARIA attribute value: ${data.values}",plural:"Invalid ARIA attribute values: ${data.values}"},incomplete:{noId:"ARIA attribute element ID does not exist on the page: ${data.needsReview}",noIdShadow:"ARIA attribute element ID does not exist on the page or is a descendant of a different shadow DOM tree: ${data.needsReview}",ariaCurrent:\'ARIA attribute value is invalid and will be treated as "aria-current=true": ${data.needsReview}\',idrefs:"Unable to determine if ARIA attribute element ID exists on the page: ${data.needsReview}",empty:"ARIA attribute value is ignored while empty: ${data.needsReview}"}}},"aria-valid-attr":{impact:"critical",messages:{pass:"ARIA attribute name is valid",fail:{singular:"Invalid ARIA attribute name: ${data.values}",plural:"Invalid ARIA attribute names: ${data.values}"}}},deprecatedrole:{impact:"minor",messages:{pass:"ARIA role is not deprecated",fail:"The role used is deprecated: ${data}"}},fallbackrole:{impact:"serious",messages:{pass:"Only one role value used",fail:"Use only one role value, since fallback roles are not supported in older browsers",incomplete:"Use only role \'presentation\' or \'none\' since they are synonymous."}},"has-global-aria-attribute":{impact:"minor",messages:{pass:{singular:"Element has global ARIA attribute: ${data.values}",plural:"Element has global ARIA attributes: ${data.values}"},fail:"Element does not have global ARIA attribute"}},"has-widget-role":{impact:"minor",messages:{pass:"Element has a widget role.",fail:"Element does not have a widget role."}},invalidrole:{impact:"critical",messages:{pass:"ARIA role is valid",fail:{singular:"Role must be one of the valid ARIA roles: ${data.values}",plural:"Roles must be one of the valid ARIA roles: ${data.values}"}}},"is-element-focusable":{impact:"minor",messages:{pass:"Element is focusable.",fail:"Element is not focusable."}},"no-implicit-explicit-label":{impact:"moderate",messages:{pass:"There is no mismatch between a <label> and accessible name",incomplete:"Check that the <label> does not need be part of the ARIA ${data} field\'s name"}},unsupportedrole:{impact:"critical",messages:{pass:"ARIA role is supported",fail:"The role used is not widely supported in screen readers and assistive technologies: ${data}"}},"valid-scrollable-semantics":{impact:"minor",messages:{pass:"Element has valid semantics for an element in the focus order.",fail:"Element has invalid semantics for an element in the focus order."}},"color-contrast-enhanced":{impact:"serious",messages:{pass:"Element has sufficient color contrast of ${data.contrastRatio}",fail:{default:"Element has insufficient color contrast of ${data.contrastRatio} (foreground color: ${data.fgColor}, background color: ${data.bgColor}, font size: ${data.fontSize}, font weight: ${data.fontWeight}). Expected contrast ratio of ${data.expectedContrastRatio}",fgOnShadowColor:"Element has insufficient color contrast of ${data.contrastRatio} between the foreground and shadow color (foreground color: ${data.fgColor}, text-shadow color: ${data.shadowColor}, font size: ${data.fontSize}, font weight: ${data.fontWeight}). Expected contrast ratio of ${data.expectedContrastRatio}",shadowOnBgColor:"Element has insufficient color contrast of ${data.contrastRatio} between the shadow color and background color (text-shadow color: ${data.shadowColor}, background color: ${data.bgColor}, font size: ${data.fontSize}, font weight: ${data.fontWeight}). Expected contrast ratio of ${data.expectedContrastRatio}"},incomplete:{default:"Unable to determine contrast ratio",bgImage:"Element\'s background color could not be determined due to a background image",bgGradient:"Element\'s background color could not be determined due to a background gradient",imgNode:"Element\'s background color could not be determined because element contains an image node",bgOverlap:"Element\'s background color could not be determined because it is overlapped by another element",fgAlpha:"Element\'s foreground color could not be determined because of alpha transparency",elmPartiallyObscured:"Element\'s background color could not be determined because it\'s partially obscured by another element",elmPartiallyObscuring:"Element\'s background color could not be determined because it partially overlaps other elements",outsideViewport:"Element\'s background color could not be determined because it\'s outside the viewport",equalRatio:"Element has a 1:1 contrast ratio with the background",shortTextContent:"Element content is too short to determine if it is actual text content",nonBmp:"Element content contains only non-text characters",pseudoContent:"Element\'s background color could not be determined due to a pseudo element"}}},"color-contrast":{impact:"serious",messages:{pass:{default:"Element has sufficient color contrast of ${data.contrastRatio}",hidden:"Element is hidden"},fail:{default:"Element has insufficient color contrast of ${data.contrastRatio} (foreground color: ${data.fgColor}, background color: ${data.bgColor}, font size: ${data.fontSize}, font weight: ${data.fontWeight}). Expected contrast ratio of ${data.expectedContrastRatio}",fgOnShadowColor:"Element has insufficient color contrast of ${data.contrastRatio} between the foreground and shadow color (foreground color: ${data.fgColor}, text-shadow color: ${data.shadowColor}, font size: ${data.fontSize}, font weight: ${data.fontWeight}). Expected contrast ratio of ${data.expectedContrastRatio}",shadowOnBgColor:"Element has insufficient color contrast of ${data.contrastRatio} between the shadow color and background color (text-shadow color: ${data.shadowColor}, background color: ${data.bgColor}, font size: ${data.fontSize}, font weight: ${data.fontWeight}). Expected contrast ratio of ${data.expectedContrastRatio}"},incomplete:{default:"Unable to determine contrast ratio",bgImage:"Element\'s background color could not be determined due to a background image",bgGradient:"Element\'s background color could not be determined due to a background gradient",imgNode:"Element\'s background color could not be determined because element contains an image node",bgOverlap:"Element\'s background color could not be determined because it is overlapped by another element",fgAlpha:"Element\'s foreground color could not be determined because of alpha transparency",elmPartiallyObscured:"Element\'s background color could not be determined because it\'s partially obscured by another element",elmPartiallyObscuring:"Element\'s background color could not be determined because it partially overlaps other elements",outsideViewport:"Element\'s background color could not be determined because it\'s outside the viewport",equalRatio:"Element has a 1:1 contrast ratio with the background",shortTextContent:"Element content is too short to determine if it is actual text content",nonBmp:"Element content contains only non-text characters",pseudoContent:"Element\'s background color could not be determined due to a pseudo element"}}},"link-in-text-block-style":{impact:"serious",messages:{pass:"Links can be distinguished from surrounding text by visual styling",fail:"The link has no styling (such as underline) to distinguish it from the surrounding text"}},"link-in-text-block":{impact:"serious",messages:{pass:"Links can be distinguished from surrounding text in some way other than by color",fail:{fgContrast:"The link has insufficient color contrast of ${data.contrastRatio}:1 with the surrounding text. (Minimum contrast is ${data.requiredContrastRatio}:1, link text: ${data.nodeColor}, surrounding text: ${data.parentColor})",bgContrast:"The link background has insufficient color contrast of ${data.contrastRatio} (Minimum contrast is ${data.requiredContrastRatio}:1, link background color: ${data.nodeBackgroundColor}, surrounding background color: ${data.parentBackgroundColor})"},incomplete:{default:"Element\'s foreground contrast ratio could not be determined",bgContrast:"Element\'s background contrast ratio could not be determined",bgImage:"Element\'s contrast ratio could not be determined due to a background image",bgGradient:"Element\'s contrast ratio could not be determined due to a background gradient",imgNode:"Element\'s contrast ratio could not be determined because element contains an image node",bgOverlap:"Element\'s contrast ratio could not be determined because of element overlap"}}},"autocomplete-appropriate":{impact:"serious",messages:{pass:"the autocomplete value is on an appropriate element",fail:"the autocomplete value is inappropriate for this type of input"}},"autocomplete-valid":{impact:"serious",messages:{pass:"the autocomplete attribute is correctly formatted",fail:"the autocomplete attribute is incorrectly formatted"}},accesskeys:{impact:"serious",messages:{pass:"Accesskey attribute value is unique",fail:"Document has multiple elements with the same accesskey"}},"focusable-content":{impact:"moderate",messages:{pass:"Element contains focusable elements",fail:"Element should have focusable content"}},"focusable-disabled":{impact:"serious",messages:{pass:"No focusable elements contained within element",incomplete:"Check if the focusable elements immediately move the focus indicator",fail:"Focusable content should be disabled or be removed from the DOM"}},"focusable-element":{impact:"moderate",messages:{pass:"Element is focusable",fail:"Element should be focusable"}},"focusable-modal-open":{impact:"serious",messages:{pass:"No focusable elements while a modal is open",incomplete:"Check that focusable elements are not tabbable in the current state"}},"focusable-no-name":{impact:"serious",messages:{pass:"Element is not in tab order or has accessible text",fail:"Element is in tab order and does not have accessible text",incomplete:"Unable to determine if element has an accessible name"}},"focusable-not-tabbable":{impact:"serious",messages:{pass:"No focusable elements contained within element",incomplete:"Check if the focusable elements immediately move the focus indicator",fail:"Focusable content should have tabindex=\'-1\' or be removed from the DOM"}},"frame-focusable-content":{impact:"serious",messages:{pass:"Element does not have focusable descendants",fail:"Element has focusable descendants",incomplete:"Could not determine if element has descendants"}},"landmark-is-top-level":{impact:"moderate",messages:{pass:"The ${data.role} landmark is at the top level.",fail:"The ${data.role} landmark is contained in another landmark."}},"no-focusable-content":{impact:"serious",messages:{pass:"Element does not have focusable descendants",fail:{default:"Element has focusable descendants",notHidden:"Using a negative tabindex on an element inside an interactive control does not prevent assistive technologies from focusing the element (even with \'aria-hidden=true\')"},incomplete:"Could not determine if element has descendants"}},"page-has-heading-one":{impact:"moderate",messages:{pass:"Page has at least one level-one heading",fail:"Page must have a level-one heading"}},"page-has-main":{impact:"moderate",messages:{pass:"Document has at least one main landmark",fail:"Document does not have a main landmark"}},"page-no-duplicate-banner":{impact:"moderate",messages:{pass:"Document does not have more than one banner landmark",fail:"Document has more than one banner landmark"}},"page-no-duplicate-contentinfo":{impact:"moderate",messages:{pass:"Document does not have more than one contentinfo landmark",fail:"Document has more than one contentinfo landmark"}},"page-no-duplicate-main":{impact:"moderate",messages:{pass:"Document does not have more than one main landmark",fail:"Document has more than one main landmark"}},tabindex:{impact:"serious",messages:{pass:"Element does not have a tabindex greater than 0",fail:"Element has a tabindex greater than 0"}},"alt-space-value":{impact:"critical",messages:{pass:"Element has a valid alt attribute value",fail:"Element has an alt attribute containing only a space character, which is not ignored by all screen readers"}},"duplicate-img-label":{impact:"minor",messages:{pass:"Element does not duplicate existing text in <img> alt text",fail:"Element contains <img> element with alt text that duplicates existing text"}},"explicit-label":{impact:"critical",messages:{pass:"Form element has an explicit <label>",fail:"Form element does not have an explicit <label>",incomplete:"Unable to determine if form element has an explicit <label>"}},"help-same-as-label":{impact:"minor",messages:{pass:"Help text (title or aria-describedby) does not duplicate label text",fail:"Help text (title or aria-describedby) text is the same as the label text"}},"hidden-explicit-label":{impact:"critical",messages:{pass:"Form element has a visible explicit <label>",fail:"Form element has explicit <label> that is hidden",incomplete:"Unable to determine if form element has explicit <label> that is hidden"}},"implicit-label":{impact:"critical",messages:{pass:"Form element has an implicit (wrapped) <label>",fail:"Form element does not have an implicit (wrapped) <label>",incomplete:"Unable to determine if form element has an implicit (wrapped} <label>"}},"label-content-name-mismatch":{impact:"serious",messages:{pass:"Element contains visible text as part of it\'s accessible name",fail:"Text inside the element is not included in the accessible name"}},"multiple-label":{impact:"moderate",messages:{pass:"Form field does not have multiple label elements",incomplete:"Multiple label elements is not widely supported in assistive technologies. Ensure the first label contains all necessary information."}},"title-only":{impact:"serious",messages:{pass:"Form element does not solely use title attribute for its label",fail:"Only title used to generate label for form element"}},"landmark-is-unique":{impact:"moderate",messages:{pass:"Landmarks must have a unique role or role/label/title (i.e. accessible name) combination",fail:"The landmark must have a unique aria-label, aria-labelledby, or title to make landmarks distinguishable"}},"has-lang":{impact:"serious",messages:{pass:"The <html> element has a lang attribute",fail:{noXHTML:"The xml:lang attribute is not valid on HTML pages, use the lang attribute.",noLang:"The <html> element does not have a lang attribute"}}},"valid-lang":{impact:"serious",messages:{pass:"Value of lang attribute is included in the list of valid languages",fail:"Value of lang attribute not included in the list of valid languages"}},"xml-lang-mismatch":{impact:"moderate",messages:{pass:"Lang and xml:lang attributes have the same base language",fail:"Lang and xml:lang attributes do not have the same base language"}},dlitem:{impact:"serious",messages:{pass:"Description list item has a <dl> parent element",fail:"Description list item does not have a <dl> parent element"}},listitem:{impact:"serious",messages:{pass:\'List item has a <ul>, <ol> or role="list" parent element\',fail:{default:"List item does not have a <ul>, <ol> parent element",roleNotValid:\'List item does not have a <ul>, <ol> parent element without a role, or a role="list"\'}}},"only-dlitems":{impact:"serious",messages:{pass:"dl element only has direct children that are allowed inside; <dt>, <dd>, or <div> elements",fail:"dl element has direct children that are not allowed: ${data.values}"}},"only-listitems":{impact:"serious",messages:{pass:"List element only has direct children that are allowed inside <li> elements",fail:"List element has direct children that are not allowed: ${data.values}"}},"structured-dlitems":{impact:"serious",messages:{pass:"When not empty, element has both <dt> and <dd> elements",fail:"When not empty, element does not have at least one <dt> element followed by at least one <dd> element"}},caption:{impact:"critical",messages:{pass:"The multimedia element has a captions track",incomplete:"Check that captions is available for the element"}},"frame-tested":{impact:"critical",messages:{pass:"The iframe was tested with axe-core",fail:"The iframe could not be tested with axe-core",incomplete:"The iframe still has to be tested with axe-core"}},"no-autoplay-audio":{impact:"moderate",messages:{pass:"<video> or <audio> does not output audio for more than allowed duration or has controls mechanism",fail:"<video> or <audio> outputs audio for more than allowed duration and does not have a controls mechanism",incomplete:"Check that the <video> or <audio> does not output audio for more than allowed duration or provides a controls mechanism"}},"css-orientation-lock":{impact:"serious",messages:{pass:"Display is operable, and orientation lock does not exist",fail:"CSS Orientation lock is applied, and makes display inoperable",incomplete:"CSS Orientation lock cannot be determined"}},"meta-viewport-large":{impact:"minor",messages:{pass:"<meta> tag does not prevent significant zooming on mobile devices",fail:"<meta> tag limits zooming on mobile devices"}},"meta-viewport":{impact:"critical",messages:{pass:"<meta> tag does not disable zooming on mobile devices",fail:"${data} on <meta> tag disables zooming on mobile devices"}},"target-offset":{impact:"serious",messages:{pass:"Target has sufficient offset from its closest neighbor (${data.closestOffset}px should be at least ${data.minOffset}px)",fail:"Target has insufficient offset from its closest neighbor (${data.closestOffset}px should be at least ${data.minOffset}px)",incomplete:{default:"Element with negative tabindex has insufficient offset from its closest neighbor (${data.closestOffset}px should be at least ${data.minOffset}px). Is this a target?",nonTabbableNeighbor:"Target has insufficient offset from a neighbor with negative tabindex (${data.closestOffset}px should be at least ${data.minOffset}px). Is the neighbor a target?"}}},"target-size":{impact:"serious",messages:{pass:{default:"Control has sufficient size (${data.width}px by ${data.height}px, should be at least ${data.minSize}px by ${data.minSize}px)",obscured:"Control is ignored because it is fully obscured and thus not clickable"},fail:{default:"Target has insufficient size (${data.width}px by ${data.height}px, should be at least ${data.minSize}px by ${data.minSize}px)",partiallyObscured:"Target has insufficient size because it is partially obscured (smallest space is ${data.width}px by ${data.height}px, should be at least ${data.minSize}px by ${data.minSize}px)"},incomplete:{default:"Element with negative tabindex has insufficient size (${data.width}px by ${data.height}px, should be at least ${data.minSize}px by ${data.minSize}px). Is this a target?",contentOverflow:"Element size could not be accurately determined due to overflow content",partiallyObscured:"Element with negative tabindex has insufficient size because it is partially obscured (smallest space is ${data.width}px by ${data.height}px, should be at least ${data.minSize}px by ${data.minSize}px). Is this a target?",partiallyObscuredNonTabbable:"Target has insufficient size because it is partially obscured by a neighbor with negative tabindex (smallest space is ${data.width}px by ${data.height}px, should be at least ${data.minSize}px by ${data.minSize}px). Is the neighbor a target?"}}},"header-present":{impact:"serious",messages:{pass:"Page has a heading",fail:"Page does not have a heading"}},"heading-order":{impact:"moderate",messages:{pass:"Heading order valid",fail:"Heading order invalid",incomplete:"Unable to determine previous heading"}},"identical-links-same-purpose":{impact:"minor",messages:{pass:"There are no other links with the same name, that go to a different URL",incomplete:"Check that links have the same purpose, or are intentionally ambiguous."}},"internal-link-present":{impact:"serious",messages:{pass:"Valid skip link found",fail:"No valid skip link found"}},landmark:{impact:"serious",messages:{pass:"Page has a landmark region",fail:"Page does not have a landmark region"}},"meta-refresh-no-exceptions":{impact:"minor",messages:{pass:"<meta> tag does not immediately refresh the page",fail:"<meta> tag forces timed refresh of page"}},"meta-refresh":{impact:"critical",messages:{pass:"<meta> tag does not immediately refresh the page",fail:"<meta> tag forces timed refresh of page (less than 20 hours)"}},"p-as-heading":{impact:"serious",messages:{pass:"<p> elements are not styled as headings",fail:"Heading elements should be used instead of styled <p> elements",incomplete:"Unable to determine if <p> elements are styled as headings"}},region:{impact:"moderate",messages:{pass:"All page content is contained by landmarks",fail:"Some page content is not contained by landmarks"}},"skip-link":{impact:"moderate",messages:{pass:"Skip link target exists",incomplete:"Skip link target should become visible on activation",fail:"No skip link target"}},"unique-frame-title":{impact:"serious",messages:{pass:"Element\'s title attribute is unique",fail:"Element\'s title attribute is not unique"}},"duplicate-id-active":{impact:"serious",messages:{pass:"Document has no active elements that share the same id attribute",fail:"Document has active elements with the same id attribute: ${data}"}},"duplicate-id-aria":{impact:"critical",messages:{pass:"Document has no elements referenced with ARIA or labels that share the same id attribute",fail:"Document has multiple elements referenced with ARIA with the same id attribute: ${data}"}},"duplicate-id":{impact:"minor",messages:{pass:"Document has no static elements that share the same id attribute",fail:"Document has multiple static elements with the same id attribute: ${data}"}},"aria-label":{impact:"serious",messages:{pass:"aria-label attribute exists and is not empty",fail:"aria-label attribute does not exist or is empty"}},"aria-labelledby":{impact:"serious",messages:{pass:"aria-labelledby attribute exists and references elements that are visible to screen readers",fail:"aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty",incomplete:"ensure aria-labelledby references an existing element"}},"avoid-inline-spacing":{impact:"serious",messages:{pass:"No inline styles with \'!important\' that affect text spacing has been specified",fail:{singular:"Remove \'!important\' from inline style ${data.values}, as overriding this is not supported by most browsers",plural:"Remove \'!important\' from inline styles ${data.values}, as overriding this is not supported by most browsers"}}},"button-has-visible-text":{impact:"critical",messages:{pass:"Element has inner text that is visible to screen readers",fail:"Element does not have inner text that is visible to screen readers",incomplete:"Unable to determine if element has children"}},"doc-has-title":{impact:"serious",messages:{pass:"Document has a non-empty <title> element",fail:"Document does not have a non-empty <title> element"}},exists:{impact:"minor",messages:{pass:"Element does not exist",incomplete:"Element exists"}},"has-alt":{impact:"critical",messages:{pass:"Element has an alt attribute",fail:"Element does not have an alt attribute"}},"has-visible-text":{impact:"minor",messages:{pass:"Element has text that is visible to screen readers",fail:"Element does not have text that is visible to screen readers",incomplete:"Unable to determine if element has children"}},"important-letter-spacing":{impact:"serious",messages:{pass:"Letter-spacing in the style attribute is not set to !important, or meets the minimum",fail:"letter-spacing in the style attribute must not use !important, or be at ${data.minValue}em (current ${data.value}em)"}},"important-line-height":{impact:"serious",messages:{pass:"line-height in the style attribute is not set to !important, or meets the minimum",fail:"line-height in the style attribute must not use !important, or be at ${data.minValue}em (current ${data.value}em)"}},"important-word-spacing":{impact:"serious",messages:{pass:"word-spacing in the style attribute is not set to !important, or meets the minimum",fail:"word-spacing in the style attribute must not use !important, or be at ${data.minValue}em (current ${data.value}em)"}},"is-on-screen":{impact:"serious",messages:{pass:"Element is not visible",fail:"Element is visible"}},"non-empty-alt":{impact:"critical",messages:{pass:"Element has a non-empty alt attribute",fail:{noAttr:"Element has no alt attribute",emptyAttr:"Element has an empty alt attribute"}}},"non-empty-if-present":{impact:"critical",messages:{pass:{default:"Element does not have a value attribute","has-label":"Element has a non-empty value attribute"},fail:"Element has a value attribute and the value attribute is empty"}},"non-empty-placeholder":{impact:"serious",messages:{pass:"Element has a placeholder attribute",fail:{noAttr:"Element has no placeholder attribute",emptyAttr:"Element has an empty placeholder attribute"}}},"non-empty-title":{impact:"serious",messages:{pass:"Element has a title attribute",fail:{noAttr:"Element has no title attribute",emptyAttr:"Element has an empty title attribute"}}},"non-empty-value":{impact:"critical",messages:{pass:"Element has a non-empty value attribute",fail:{noAttr:"Element has no value attribute",emptyAttr:"Element has an empty value attribute"}}},"presentational-role":{impact:"minor",messages:{pass:\'Element\\\'s default semantics were overriden with role="${data.role}"\',fail:{default:\'Element\\\'s default semantics were not overridden with role="none" or role="presentation"\',globalAria:"Element\'s role is not presentational because it has a global ARIA attribute",focusable:"Element\'s role is not presentational because it is focusable",both:"Element\'s role is not presentational because it has a global ARIA attribute and is focusable",iframe:\'Using the "title" attribute on an ${data.nodeName} element with a presentational role behaves inconsistently between screen readers\'}}},"role-none":{impact:"minor",messages:{pass:\'Element\\\'s default semantics were overriden with role="none"\',fail:\'Element\\\'s default semantics were not overridden with role="none"\'}},"role-presentation":{impact:"minor",messages:{pass:\'Element\\\'s default semantics were overriden with role="presentation"\',fail:\'Element\\\'s default semantics were not overridden with role="presentation"\'}},"svg-non-empty-title":{impact:"serious",messages:{pass:"Element has a child that is a title",fail:{noTitle:"Element has no child that is a title",emptyTitle:"Element child title is empty"},incomplete:"Unable to determine element has a child that is a title"}},"caption-faked":{impact:"serious",messages:{pass:"The first row of a table is not used as a caption",fail:"The first child of the table should be a caption instead of a table cell"}},"html5-scope":{impact:"moderate",messages:{pass:"Scope attribute is only used on table header elements (<th>)",fail:"In HTML 5, scope attributes may only be used on table header elements (<th>)"}},"same-caption-summary":{impact:"minor",messages:{pass:"Content of summary attribute and <caption> are not duplicated",fail:"Content of summary attribute and <caption> element are identical",incomplete:"Unable to determine if <table> element has a caption"}},"scope-value":{impact:"critical",messages:{pass:"Scope attribute is used correctly",fail:"The value of the scope attribute may only be \'row\' or \'col\'"}},"td-has-header":{impact:"critical",messages:{pass:"All non-empty data cells have table headers",fail:"Some non-empty data cells do not have table headers"}},"td-headers-attr":{impact:"serious",messages:{pass:"The headers attribute is exclusively used to refer to other cells in the table",incomplete:"The headers attribute is empty",fail:"The headers attribute is not exclusively used to refer to other cells in the table"}},"th-has-data-cells":{impact:"serious",messages:{pass:"All table header cells refer to data cells",fail:"Not all table header cells refer to data cells",incomplete:"Table data cells are missing or empty"}},"hidden-content":{impact:"minor",messages:{pass:"All content on the page has been analyzed.",fail:"There were problems analyzing the content on this page.",incomplete:"There is hidden content on the page that was not analyzed. You will need to trigger the display of this content in order to analyze it."}}},failureSummaries:{any:{failureMessage:function(e){var t="Fix any of the following:",n=e;if(n)for(var a=-1,r=n.length-1;a<r;)t+="\\n "+n[a+=1].split("\\n").join("\\n ");return t}},none:{failureMessage:function(e){var t="Fix all of the following:",n=e;if(n)for(var a=-1,r=n.length-1;a<r;)t+="\\n "+n[a+=1].split("\\n").join("\\n ");return t}}},incompleteFallbackMessage:"axe couldn\'t tell the reason. Time to break out the element inspector!"},rules:[{id:"accesskeys",selector:"[accesskey]",excludeHidden:!1,tags:["cat.keyboard","best-practice"],all:[],any:[],none:["accesskeys"]},{id:"area-alt",selector:"map area[href]",excludeHidden:!1,tags:["cat.text-alternatives","wcag2a","wcag244","wcag412","section508","section508.22.a","ACT"],actIds:["c487ae"],all:[],any:[{options:{attribute:"alt"},id:"non-empty-alt"},"aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"aria-allowed-attr",matches:"aria-allowed-attr-matches",tags:["cat.aria","wcag2a","wcag412"],actIds:["5c01ea"],all:[],any:[{options:{validTreeRowAttrs:["aria-posinset","aria-setsize","aria-expanded","aria-level"]},id:"aria-allowed-attr"}],none:["aria-unsupported-attr",{options:{elementsAllowedAriaLabel:["applet","input"]},id:"aria-prohibited-attr"}]},{id:"aria-allowed-role",excludeHidden:!1,selector:"[role]",matches:"aria-allowed-role-matches",tags:["cat.aria","best-practice"],all:[],any:[{options:{allowImplicit:!0,ignoredTags:[]},id:"aria-allowed-role"}],none:[]},{id:"aria-command-name",selector:\'[role="link"], [role="button"], [role="menuitem"]\',matches:"no-naming-method-matches",tags:["cat.aria","wcag2a","wcag412","ACT"],actIds:["97a4e1"],all:[],any:["has-visible-text","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"aria-dialog-name",selector:\'[role="dialog"], [role="alertdialog"]\',matches:"no-naming-method-matches",tags:["cat.aria","best-practice"],all:[],any:["aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"aria-hidden-body",selector:"body",excludeHidden:!1,matches:"is-initiator-matches",tags:["cat.aria","wcag2a","wcag412"],all:[],any:["aria-hidden-body"],none:[]},{id:"aria-hidden-focus",selector:\'[aria-hidden="true"]\',matches:"aria-hidden-focus-matches",excludeHidden:!1,tags:["cat.name-role-value","wcag2a","wcag412"],actIds:["6cfa84"],all:["focusable-modal-open","focusable-disabled","focusable-not-tabbable"],any:[],none:[]},{id:"aria-input-field-name",selector:\'[role="combobox"], [role="listbox"], [role="searchbox"], [role="slider"], [role="spinbutton"], [role="textbox"]\',matches:"no-naming-method-matches",tags:["cat.aria","wcag2a","wcag412","ACT"],actIds:["e086e5"],all:[],any:["aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:["no-implicit-explicit-label"]},{id:"aria-meter-name",selector:\'[role="meter"]\',matches:"no-naming-method-matches",tags:["cat.aria","wcag2a","wcag111"],all:[],any:["aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"aria-progressbar-name",selector:\'[role="progressbar"]\',matches:"no-naming-method-matches",tags:["cat.aria","wcag2a","wcag111"],all:[],any:["aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"aria-required-attr",selector:"[role]",tags:["cat.aria","wcag2a","wcag412"],actIds:["4e8ab6"],all:[],any:["aria-required-attr"],none:[]},{id:"aria-required-children",selector:"[role]",matches:"aria-required-children-matches",tags:["cat.aria","wcag2a","wcag131"],actIds:["bc4a75","ff89c9"],all:[],any:[{options:{reviewEmpty:["doc-bibliography","doc-endnotes","grid","list","listbox","menu","menubar","table","tablist","tree","treegrid","rowgroup"]},id:"aria-required-children"},"aria-busy"],none:[]},{id:"aria-required-parent",selector:"[role]",matches:"aria-required-parent-matches",tags:["cat.aria","wcag2a","wcag131"],actIds:["ff89c9"],all:[],any:[{options:{ownGroupRoles:["listitem","treeitem"]},id:"aria-required-parent"}],none:[]},{id:"aria-roledescription",selector:"[aria-roledescription]",tags:["cat.aria","wcag2a","wcag412"],all:[],any:[{options:{supportedRoles:["button","img","checkbox","radio","combobox","menuitemcheckbox","menuitemradio"]},id:"aria-roledescription"}],none:[]},{id:"aria-roles",selector:"[role]",matches:"no-empty-role-matches",tags:["cat.aria","wcag2a","wcag412"],actIds:["674b10"],all:[],any:[],none:["invalidrole","abstractrole","unsupportedrole","deprecatedrole"]},{id:"aria-text",selector:"[role=text]",tags:["cat.aria","best-practice"],all:[],any:["no-focusable-content"],none:[]},{id:"aria-toggle-field-name",selector:\'[role="checkbox"], [role="menuitemcheckbox"], [role="menuitemradio"], [role="radio"], [role="switch"], [role="option"]\',matches:"no-naming-method-matches",tags:["cat.aria","wcag2a","wcag412","ACT"],actIds:["e086e5"],all:[],any:["has-visible-text","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:["no-implicit-explicit-label"]},{id:"aria-tooltip-name",selector:\'[role="tooltip"]\',matches:"no-naming-method-matches",tags:["cat.aria","wcag2a","wcag412"],all:[],any:["has-visible-text","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"aria-treeitem-name",selector:\'[role="treeitem"]\',matches:"no-naming-method-matches",tags:["cat.aria","best-practice"],all:[],any:["has-visible-text","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"aria-valid-attr-value",matches:"aria-has-attr-matches",tags:["cat.aria","wcag2a","wcag412"],actIds:["6a7281"],all:[{options:[],id:"aria-valid-attr-value"},"aria-errormessage","aria-level"],any:[],none:[]},{id:"aria-valid-attr",matches:"aria-has-attr-matches",tags:["cat.aria","wcag2a","wcag412"],actIds:["5f99a7"],all:[],any:[{options:[],id:"aria-valid-attr"}],none:[]},{id:"audio-caption",selector:"audio",enabled:!1,excludeHidden:!1,tags:["cat.time-and-media","wcag2a","wcag121","section508","section508.22.a"],actIds:["2eb176","afb423"],all:[],any:[],none:["caption"]},{id:"autocomplete-valid",matches:"autocomplete-matches",tags:["cat.forms","wcag21aa","wcag135","ACT"],actIds:["73f2c2"],all:[{options:{stateTerms:["none","false","true","disabled","enabled","undefined","null"]},id:"autocomplete-valid"}],any:[],none:[]},{id:"avoid-inline-spacing",selector:"[style]",matches:"is-visible-on-screen-matches",tags:["cat.structure","wcag21aa","wcag1412","ACT"],actIds:["24afc2","9e45ec","78fd32"],all:[{options:{cssProperty:"letter-spacing",minValue:.12},id:"important-letter-spacing"},{options:{cssProperty:"word-spacing",minValue:.16},id:"important-word-spacing"},{options:{multiLineOnly:!0,cssProperty:"line-height",minValue:1.5,normalValue:1},id:"important-line-height"}],any:[],none:[]},{id:"blink",selector:"blink",excludeHidden:!1,tags:["cat.time-and-media","wcag2a","wcag222","section508","section508.22.j"],all:[],any:[],none:["is-on-screen"]},{id:"button-name",selector:"button",matches:"no-explicit-name-required-matches",tags:["cat.name-role-value","wcag2a","wcag412","section508","section508.22.a","ACT"],actIds:["97a4e1","m6b1q3"],all:[],any:["button-has-visible-text","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"},"presentational-role"],none:[]},{id:"bypass",selector:"html",pageLevel:!0,matches:"bypass-matches",reviewOnFail:!0,tags:["cat.keyboard","wcag2a","wcag241","section508","section508.22.o"],actIds:["cf77f2","047fe0","b40fd1","3e12e1","ye5d6e"],all:[],any:["internal-link-present",{options:{selector:":is(h1, h2, h3, h4, h5, h6):not([role]), [role=heading]"},id:"header-present"},{options:{selector:"main, [role=main]"},id:"landmark"}],none:[]},{id:"color-contrast-enhanced",matches:"color-contrast-matches",excludeHidden:!1,enabled:!1,tags:["cat.color","wcag2aaa","wcag146","ACT"],actIds:["09o5cg"],all:[],any:[{options:{ignoreUnicode:!0,ignoreLength:!1,ignorePseudo:!1,boldValue:700,boldTextPt:14,largeTextPt:18,contrastRatio:{normal:{expected:7,minThreshold:4.5},large:{expected:4.5,minThreshold:3}},pseudoSizeThreshold:.25,shadowOutlineEmMax:.1,textStrokeEmMin:.03},id:"color-contrast-enhanced"}],none:[]},{id:"color-contrast",matches:"color-contrast-matches",excludeHidden:!1,tags:["cat.color","wcag2aa","wcag143","ACT"],actIds:["afw4f7","09o5cg"],all:[],any:[{options:{ignoreUnicode:!0,ignoreLength:!1,ignorePseudo:!1,boldValue:700,boldTextPt:14,largeTextPt:18,contrastRatio:{normal:{expected:4.5},large:{expected:3}},pseudoSizeThreshold:.25,shadowOutlineEmMax:.2,textStrokeEmMin:.03},id:"color-contrast"}],none:[]},{id:"css-orientation-lock",selector:"html",tags:["cat.structure","wcag134","wcag21aa","experimental"],actIds:["b33eff"],all:[{options:{degreeThreshold:2},id:"css-orientation-lock"}],any:[],none:[],preload:!0},{id:"definition-list",selector:"dl",matches:"no-role-matches",tags:["cat.structure","wcag2a","wcag131"],all:[],any:[],none:["structured-dlitems",{options:{validRoles:["definition","term","listitem"],validNodeNames:["dt","dd"],divGroups:!0},id:"only-dlitems"}]},{id:"dlitem",selector:"dd, dt",matches:"no-role-matches",tags:["cat.structure","wcag2a","wcag131"],all:[],any:["dlitem"],none:[]},{id:"document-title",selector:"html",matches:"is-initiator-matches",tags:["cat.text-alternatives","wcag2a","wcag242","ACT"],actIds:["2779a5"],all:[],any:["doc-has-title"],none:[]},{id:"duplicate-id-active",selector:"[id]",matches:"duplicate-id-active-matches",excludeHidden:!1,tags:["cat.parsing","wcag2a","wcag411"],actIds:["3ea0c8"],all:[],any:["duplicate-id-active"],none:[]},{id:"duplicate-id-aria",selector:"[id]",matches:"duplicate-id-aria-matches",excludeHidden:!1,tags:["cat.parsing","wcag2a","wcag411"],actIds:["3ea0c8"],all:[],any:["duplicate-id-aria"],none:[]},{id:"duplicate-id",selector:"[id]",matches:"duplicate-id-misc-matches",excludeHidden:!1,tags:["cat.parsing","wcag2a","wcag411"],actIds:["3ea0c8"],all:[],any:["duplicate-id"],none:[]},{id:"empty-heading",selector:\'h1, h2, h3, h4, h5, h6, [role="heading"]\',matches:"heading-matches",tags:["cat.name-role-value","best-practice"],actIds:["ffd0e9"],impact:"minor",all:[],any:["has-visible-text","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"empty-table-header",selector:\'th:not([role]), [role="rowheader"], [role="columnheader"]\',tags:["cat.name-role-value","best-practice"],all:[],any:["has-visible-text"],none:[]},{id:"focus-order-semantics",selector:"div, h1, h2, h3, h4, h5, h6, [role=heading], p, span",matches:"inserted-into-focus-order-matches",tags:["cat.keyboard","best-practice","experimental"],all:[],any:[{options:[],id:"has-widget-role"},{options:{roles:["tooltip"]},id:"valid-scrollable-semantics"}],none:[]},{id:"form-field-multiple-labels",selector:"input, select, textarea",matches:"label-matches",tags:["cat.forms","wcag2a","wcag332"],all:[],any:[],none:["multiple-label"]},{id:"frame-focusable-content",selector:"html",matches:"frame-focusable-content-matches",tags:["cat.keyboard","wcag2a","wcag211"],actIds:["akn7bn"],all:[],any:["frame-focusable-content"],none:[]},{id:"frame-tested",selector:"html, frame, iframe",tags:["cat.structure","review-item","best-practice"],all:[{options:{isViolation:!1},id:"frame-tested"}],any:[],none:[]},{id:"frame-title-unique",selector:"frame[title], iframe[title]",matches:"frame-title-has-text-matches",tags:["cat.text-alternatives","wcag412","wcag2a"],actIds:["4b1c6c"],all:[],any:[],none:["unique-frame-title"],reviewOnFail:!0},{id:"frame-title",selector:"frame, iframe",matches:"no-negative-tabindex-matches",tags:["cat.text-alternatives","wcag2a","wcag412","section508","section508.22.i"],actIds:["cae760"],all:[],any:[{options:{attribute:"title"},id:"non-empty-title"},"aria-label","aria-labelledby","presentational-role"],none:[]},{id:"heading-order",selector:"h1, h2, h3, h4, h5, h6, [role=heading]",matches:"heading-matches",tags:["cat.semantics","best-practice"],all:[],any:["heading-order"],none:[]},{id:"hidden-content",selector:"*",excludeHidden:!1,tags:["cat.structure","experimental","review-item","best-practice"],all:[],any:["hidden-content"],none:[]},{id:"html-has-lang",selector:"html",matches:"is-initiator-matches",tags:["cat.language","wcag2a","wcag311","ACT"],actIds:["b5c3f8"],all:[],any:[{options:{attributes:["lang","xml:lang"]},id:"has-lang"}],none:[]},{id:"html-lang-valid",selector:\'html[lang]:not([lang=""]), html[xml\\\\:lang]:not([xml\\\\:lang=""])\',tags:["cat.language","wcag2a","wcag311","ACT"],actIds:["bf051a"],all:[],any:[],none:[{options:{attributes:["lang","xml:lang"]},id:"valid-lang"}]},{id:"html-xml-lang-mismatch",selector:"html[lang][xml\\\\:lang]",matches:"xml-lang-mismatch-matches",tags:["cat.language","wcag2a","wcag311","ACT"],actIds:["5b7ae0"],all:["xml-lang-mismatch"],any:[],none:[]},{id:"identical-links-same-purpose",selector:\'a[href], area[href], [role="link"]\',excludeHidden:!1,enabled:!1,matches:"identical-links-same-purpose-matches",tags:["cat.semantics","wcag2aaa","wcag249"],actIds:["b20e66"],all:["identical-links-same-purpose"],any:[],none:[]},{id:"image-alt",selector:"img",matches:"no-explicit-name-required-matches",tags:["cat.text-alternatives","wcag2a","wcag111","section508","section508.22.a","ACT"],actIds:["23a2a8"],all:[],any:["has-alt","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"},"presentational-role"],none:["alt-space-value"]},{id:"image-redundant-alt",selector:"img",tags:["cat.text-alternatives","best-practice"],all:[],any:[],none:[{options:{parentSelector:"button, [role=button], a[href], p, li, td, th"},id:"duplicate-img-label"}]},{id:"input-button-name",selector:\'input[type="button"], input[type="submit"], input[type="reset"]\',matches:"no-explicit-name-required-matches",tags:["cat.name-role-value","wcag2a","wcag412","section508","section508.22.a","ACT"],actIds:["97a4e1"],all:[],any:["non-empty-if-present",{options:{attribute:"value"},id:"non-empty-value"},"aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"},"presentational-role"],none:[]},{id:"input-image-alt",selector:\'input[type="image"]\',matches:"no-explicit-name-required-matches",tags:["cat.text-alternatives","wcag2a","wcag111","wcag412","section508","section508.22.a","ACT"],actIds:["59796f"],all:[],any:[{options:{attribute:"alt"},id:"non-empty-alt"},"aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"label-content-name-mismatch",matches:"label-content-name-mismatch-matches",tags:["cat.semantics","wcag21a","wcag253","experimental"],actIds:["2ee8b8"],all:[],any:[{options:{pixelThreshold:.1,occurrenceThreshold:3},id:"label-content-name-mismatch"}],none:[]},{id:"label-title-only",selector:"input, select, textarea",matches:"label-matches",tags:["cat.forms","best-practice"],all:[],any:[],none:["title-only"]},{id:"label",selector:"input, textarea",matches:"label-matches",tags:["cat.forms","wcag2a","wcag412","section508","section508.22.n","ACT"],actIds:["e086e5"],all:[],any:["implicit-label","explicit-label","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"},{options:{attribute:"placeholder"},id:"non-empty-placeholder"},"presentational-role"],none:["help-same-as-label","hidden-explicit-label"]},{id:"landmark-banner-is-top-level",selector:"header:not([role]), [role=banner]",matches:"landmark-has-body-context-matches",tags:["cat.semantics","best-practice"],all:[],any:["landmark-is-top-level"],none:[]},{id:"landmark-complementary-is-top-level",selector:"aside:not([role]), [role=complementary]",tags:["cat.semantics","best-practice"],all:[],any:["landmark-is-top-level"],none:[]},{id:"landmark-contentinfo-is-top-level",selector:"footer:not([role]), [role=contentinfo]",matches:"landmark-has-body-context-matches",tags:["cat.semantics","best-practice"],all:[],any:["landmark-is-top-level"],none:[]},{id:"landmark-main-is-top-level",selector:"main:not([role]), [role=main]",tags:["cat.semantics","best-practice"],all:[],any:["landmark-is-top-level"],none:[]},{id:"landmark-no-duplicate-banner",selector:"header:not([role]), [role=banner]",tags:["cat.semantics","best-practice"],all:[],any:[{options:{selector:"header:not([role]), [role=banner]",nativeScopeFilter:"article, aside, main, nav, section"},id:"page-no-duplicate-banner"}],none:[]},{id:"landmark-no-duplicate-contentinfo",selector:"footer:not([role]), [role=contentinfo]",tags:["cat.semantics","best-practice"],all:[],any:[{options:{selector:"footer:not([role]), [role=contentinfo]",nativeScopeFilter:"article, aside, main, nav, section"},id:"page-no-duplicate-contentinfo"}],none:[]},{id:"landmark-no-duplicate-main",selector:"main:not([role]), [role=main]",tags:["cat.semantics","best-practice"],all:[],any:[{options:{selector:"main:not([role]), [role=\'main\']"},id:"page-no-duplicate-main"}],none:[]},{id:"landmark-one-main",selector:"html",tags:["cat.semantics","best-practice"],all:[{options:{selector:"main:not([role]), [role=\'main\']",passForModal:!0},id:"page-has-main"}],any:[],none:[]},{id:"landmark-unique",selector:"[role=banner], [role=complementary], [role=contentinfo], [role=main], [role=navigation], [role=region], [role=search], [role=form], form, footer, header, aside, main, nav, section",tags:["cat.semantics","best-practice"],matches:"landmark-unique-matches",all:[],any:["landmark-is-unique"],none:[]},{id:"link-in-text-block",selector:"a[href], [role=link]",matches:"link-in-text-block-matches",excludeHidden:!1,tags:["cat.color","wcag2a","wcag141"],all:[],any:[{options:{requiredContrastRatio:3,allowSameColor:!0},id:"link-in-text-block"},"link-in-text-block-style"],none:[]},{id:"link-name",selector:"a[href]",tags:["cat.name-role-value","wcag2a","wcag412","wcag244","section508","section508.22.a","ACT"],actIds:["c487ae"],all:[],any:["has-visible-text","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:["focusable-no-name"]},{id:"list",selector:"ul, ol",matches:"no-role-matches",tags:["cat.structure","wcag2a","wcag131"],all:[],any:[],none:[{options:{validRoles:["listitem"],validNodeNames:["li"]},id:"only-listitems"}]},{id:"listitem",selector:"li",matches:"no-role-matches",tags:["cat.structure","wcag2a","wcag131"],all:[],any:["listitem"],none:[]},{id:"marquee",selector:"marquee",excludeHidden:!1,tags:["cat.parsing","wcag2a","wcag222"],all:[],any:[],none:["is-on-screen"]},{id:"meta-refresh-no-exceptions",selector:\'meta[http-equiv="refresh"][content]\',excludeHidden:!1,enabled:!1,tags:["cat.time-and-media","wcag2aaa","wcag224","wcag325"],actIds:["bisz58"],all:[],any:[{options:{minDelay:72e3,maxDelay:!1},id:"meta-refresh-no-exceptions"}],none:[]},{id:"meta-refresh",selector:\'meta[http-equiv="refresh"][content]\',excludeHidden:!1,tags:["cat.time-and-media","wcag2a","wcag221"],actIds:["bc659a","bisz58"],all:[],any:[{options:{minDelay:0,maxDelay:72e3},id:"meta-refresh"}],none:[]},{id:"meta-viewport-large",selector:\'meta[name="viewport"]\',matches:"is-initiator-matches",excludeHidden:!1,tags:["cat.sensory-and-visual-cues","best-practice"],all:[],any:[{options:{scaleMinimum:5,lowerBound:2},id:"meta-viewport-large"}],none:[]},{id:"meta-viewport",selector:\'meta[name="viewport"]\',matches:"is-initiator-matches",excludeHidden:!1,tags:["cat.sensory-and-visual-cues","wcag2aa","wcag144","ACT"],actIds:["b4f0c3"],all:[],any:[{options:{scaleMinimum:2},id:"meta-viewport"}],none:[]},{id:"nested-interactive",matches:"nested-interactive-matches",tags:["cat.keyboard","wcag2a","wcag412"],actIds:["307n5z"],all:[],any:["no-focusable-content"],none:[]},{id:"no-autoplay-audio",excludeHidden:!1,selector:"audio[autoplay], video[autoplay]",matches:"no-autoplay-audio-matches",reviewOnFail:!0,tags:["cat.time-and-media","wcag2a","wcag142","ACT"],actIds:["80f0bf"],preload:!0,all:[{options:{allowedDuration:3},id:"no-autoplay-audio"}],any:[],none:[]},{id:"object-alt",selector:"object[data]",matches:"object-is-loaded-matches",tags:["cat.text-alternatives","wcag2a","wcag111","section508","section508.22.a"],actIds:["8fc3b6"],all:[],any:["aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"},"presentational-role"],none:[]},{id:"p-as-heading",selector:"p",matches:"p-as-heading-matches",tags:["cat.semantics","wcag2a","wcag131","experimental"],all:[{options:{margins:[{weight:150,italic:!0},{weight:150,size:1.15},{italic:!0,size:1.15},{size:1.4}],passLength:1,failLength:.5},id:"p-as-heading"}],any:[],none:[]},{id:"page-has-heading-one",selector:"html",tags:["cat.semantics","best-practice"],all:[{options:{selector:"h1:not([role], [aria-level]), :is(h1, h2, h3, h4, h5, h6):not([role])[aria-level=1], [role=heading][aria-level=1]",passForModal:!0},id:"page-has-heading-one"}],any:[],none:[]},{id:"presentation-role-conflict",selector:\'img[alt=\\\'\\\'], [role="none"], [role="presentation"]\',matches:"has-implicit-chromium-role-matches",tags:["cat.aria","best-practice","ACT"],actIds:["46ca7f"],all:[],any:[],none:["is-element-focusable","has-global-aria-attribute"]},{id:"region",selector:"body *",tags:["cat.keyboard","best-practice"],all:[],any:[{options:{regionMatcher:"dialog, [role=dialog], [role=alertdialog], svg"},id:"region"}],none:[]},{id:"role-img-alt",selector:"[role=\'img\']:not(img, area, input, object)",matches:"html-namespace-matches",tags:["cat.text-alternatives","wcag2a","wcag111","section508","section508.22.a","ACT"],actIds:["23a2a8"],all:[],any:["aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"scope-attr-valid",selector:"td[scope], th[scope]",tags:["cat.tables","best-practice"],all:["html5-scope",{options:{values:["row","col","rowgroup","colgroup"]},id:"scope-value"}],any:[],none:[]},{id:"scrollable-region-focusable",selector:"*:not(select,textarea)",matches:"scrollable-region-focusable-matches",tags:["cat.keyboard","wcag2a","wcag211"],actIds:["0ssw9k"],all:[],any:["focusable-content","focusable-element"],none:[]},{id:"select-name",selector:"select",tags:["cat.forms","wcag2a","wcag412","section508","section508.22.n","ACT"],actIds:["e086e5"],all:[],any:["implicit-label","explicit-label","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"},"presentational-role"],none:["help-same-as-label","hidden-explicit-label"]},{id:"server-side-image-map",selector:"img[ismap]",tags:["cat.text-alternatives","wcag2a","wcag211","section508","section508.22.f"],all:[],any:[],none:["exists"]},{id:"skip-link",selector:\'a[href^="#"], a[href^="/#"]\',matches:"skip-link-matches",tags:["cat.keyboard","best-practice"],all:[],any:["skip-link"],none:[]},{id:"svg-img-alt",selector:\'[role="img"], [role="graphics-symbol"], svg[role="graphics-document"]\',matches:"svg-namespace-matches",tags:["cat.text-alternatives","wcag2a","wcag111","section508","section508.22.a","ACT"],actIds:["7d6734"],all:[],any:["svg-non-empty-title","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"tabindex",selector:"[tabindex]",tags:["cat.keyboard","best-practice"],all:[],any:["tabindex"],none:[]},{id:"table-duplicate-name",selector:"table",tags:["cat.tables","best-practice"],all:[],any:[],none:["same-caption-summary"]},{id:"table-fake-caption",selector:"table",matches:"data-table-matches",tags:["cat.tables","experimental","wcag2a","wcag131","section508","section508.22.g"],all:["caption-faked"],any:[],none:[]},{id:"target-size",selector:"*",enabled:!1,matches:"widget-not-inline-matches",tags:["wcag22aa","wcag258","cat.sensory-and-visual-cues"],all:[],any:[{options:{minSize:24},id:"target-size"},{options:{minOffset:24},id:"target-offset"}],none:[]},{id:"td-has-header",selector:"table",matches:"data-table-large-matches",tags:["cat.tables","experimental","wcag2a","wcag131","section508","section508.22.g"],all:["td-has-header"],any:[],none:[]},{id:"td-headers-attr",selector:"table",matches:"table-or-grid-role-matches",tags:["cat.tables","wcag2a","wcag131","section508","section508.22.g"],actIds:["a25f45"],all:["td-headers-attr"],any:[],none:[]},{id:"th-has-data-cells",selector:"table",matches:"data-table-matches",tags:["cat.tables","wcag2a","wcag131","section508","section508.22.g"],actIds:["d0f69e"],all:["th-has-data-cells"],any:[],none:[]},{id:"valid-lang",selector:"[lang]:not(html), [xml\\\\:lang]:not(html)",tags:["cat.language","wcag2aa","wcag312","ACT"],actIds:["de46e4"],all:[],any:[],none:[{options:{attributes:["lang","xml:lang"]},id:"valid-lang"}]},{id:"video-caption",selector:"video",tags:["cat.text-alternatives","wcag2a","wcag122","section508","section508.22.a"],actIds:["eac66b"],all:[],any:[],none:["caption"]}],checks:[{id:"abstractrole",evaluate:"abstractrole-evaluate"},{id:"aria-allowed-attr",evaluate:"aria-allowed-attr-evaluate",options:{validTreeRowAttrs:["aria-posinset","aria-setsize","aria-expanded","aria-level"]}},{id:"aria-allowed-role",evaluate:"aria-allowed-role-evaluate",options:{allowImplicit:!0,ignoredTags:[]}},{id:"aria-busy",evaluate:"aria-busy-evaluate"},{id:"aria-errormessage",evaluate:"aria-errormessage-evaluate"},{id:"aria-hidden-body",evaluate:"aria-hidden-body-evaluate"},{id:"aria-level",evaluate:"aria-level-evaluate"},{id:"aria-prohibited-attr",evaluate:"aria-prohibited-attr-evaluate",options:{elementsAllowedAriaLabel:["applet","input"]}},{id:"aria-required-attr",evaluate:"aria-required-attr-evaluate"},{id:"aria-required-children",evaluate:"aria-required-children-evaluate",options:{reviewEmpty:["doc-bibliography","doc-endnotes","grid","list","listbox","menu","menubar","table","tablist","tree","treegrid","rowgroup"]}},{id:"aria-required-parent",evaluate:"aria-required-parent-evaluate",options:{ownGroupRoles:["listitem","treeitem"]}},{id:"aria-roledescription",evaluate:"aria-roledescription-evaluate",options:{supportedRoles:["button","img","checkbox","radio","combobox","menuitemcheckbox","menuitemradio"]}},{id:"aria-unsupported-attr",evaluate:"aria-unsupported-attr-evaluate"},{id:"aria-valid-attr-value",evaluate:"aria-valid-attr-value-evaluate",options:[]},{id:"aria-valid-attr",evaluate:"aria-valid-attr-evaluate",options:[]},{id:"deprecatedrole",evaluate:"deprecatedrole-evaluate"},{id:"fallbackrole",evaluate:"fallbackrole-evaluate"},{id:"has-global-aria-attribute",evaluate:"has-global-aria-attribute-evaluate"},{id:"has-widget-role",evaluate:"has-widget-role-evaluate",options:[]},{id:"invalidrole",evaluate:"invalidrole-evaluate"},{id:"is-element-focusable",evaluate:"is-element-focusable-evaluate"},{id:"no-implicit-explicit-label",evaluate:"no-implicit-explicit-label-evaluate"},{id:"unsupportedrole",evaluate:"unsupportedrole-evaluate"},{id:"valid-scrollable-semantics",evaluate:"valid-scrollable-semantics-evaluate",options:{roles:["tooltip"]}},{id:"color-contrast-enhanced",evaluate:"color-contrast-evaluate",options:{ignoreUnicode:!0,ignoreLength:!1,ignorePseudo:!1,boldValue:700,boldTextPt:14,largeTextPt:18,contrastRatio:{normal:{expected:7,minThreshold:4.5},large:{expected:4.5,minThreshold:3}},pseudoSizeThreshold:.25,shadowOutlineEmMax:.1,textStrokeEmMin:.03}},{id:"color-contrast",evaluate:"color-contrast-evaluate",options:{ignoreUnicode:!0,ignoreLength:!1,ignorePseudo:!1,boldValue:700,boldTextPt:14,largeTextPt:18,contrastRatio:{normal:{expected:4.5},large:{expected:3}},pseudoSizeThreshold:.25,shadowOutlineEmMax:.2,textStrokeEmMin:.03}},{id:"link-in-text-block-style",evaluate:"link-in-text-block-style-evaluate"},{id:"link-in-text-block",evaluate:"link-in-text-block-evaluate",options:{requiredContrastRatio:3,allowSameColor:!0}},{id:"autocomplete-appropriate",evaluate:"autocomplete-appropriate-evaluate",deprecated:!0},{id:"autocomplete-valid",evaluate:"autocomplete-valid-evaluate",options:{stateTerms:["none","false","true","disabled","enabled","undefined","null"]}},{id:"accesskeys",evaluate:"accesskeys-evaluate",after:"accesskeys-after"},{id:"focusable-content",evaluate:"focusable-content-evaluate"},{id:"focusable-disabled",evaluate:"focusable-disabled-evaluate"},{id:"focusable-element",evaluate:"focusable-element-evaluate"},{id:"focusable-modal-open",evaluate:"focusable-modal-open-evaluate"},{id:"focusable-no-name",evaluate:"focusable-no-name-evaluate"},{id:"focusable-not-tabbable",evaluate:"focusable-not-tabbable-evaluate"},{id:"frame-focusable-content",evaluate:"frame-focusable-content-evaluate"},{id:"landmark-is-top-level",evaluate:"landmark-is-top-level-evaluate"},{id:"no-focusable-content",evaluate:"no-focusable-content-evaluate"},{id:"page-has-heading-one",evaluate:"has-descendant-evaluate",after:"has-descendant-after",options:{selector:"h1:not([role], [aria-level]), :is(h1, h2, h3, h4, h5, h6):not([role])[aria-level=1], [role=heading][aria-level=1]",passForModal:!0}},{id:"page-has-main",evaluate:"has-descendant-evaluate",after:"has-descendant-after",options:{selector:"main:not([role]), [role=\'main\']",passForModal:!0}},{id:"page-no-duplicate-banner",evaluate:"page-no-duplicate-evaluate",after:"page-no-duplicate-after",options:{selector:"header:not([role]), [role=banner]",nativeScopeFilter:"article, aside, main, nav, section"}},{id:"page-no-duplicate-contentinfo",evaluate:"page-no-duplicate-evaluate",after:"page-no-duplicate-after",options:{selector:"footer:not([role]), [role=contentinfo]",nativeScopeFilter:"article, aside, main, nav, section"}},{id:"page-no-duplicate-main",evaluate:"page-no-duplicate-evaluate",after:"page-no-duplicate-after",options:{selector:"main:not([role]), [role=\'main\']"}},{id:"tabindex",evaluate:"tabindex-evaluate"},{id:"alt-space-value",evaluate:"alt-space-value-evaluate"},{id:"duplicate-img-label",evaluate:"duplicate-img-label-evaluate",options:{parentSelector:"button, [role=button], a[href], p, li, td, th"}},{id:"explicit-label",evaluate:"explicit-evaluate"},{id:"help-same-as-label",evaluate:"help-same-as-label-evaluate",enabled:!1},{id:"hidden-explicit-label",evaluate:"hidden-explicit-label-evaluate"},{id:"implicit-label",evaluate:"implicit-evaluate"},{id:"label-content-name-mismatch",evaluate:"label-content-name-mismatch-evaluate",options:{pixelThreshold:.1,occurrenceThreshold:3}},{id:"multiple-label",evaluate:"multiple-label-evaluate"},{id:"title-only",evaluate:"title-only-evaluate"},{id:"landmark-is-unique",evaluate:"landmark-is-unique-evaluate",after:"landmark-is-unique-after"},{id:"has-lang",evaluate:"has-lang-evaluate",options:{attributes:["lang","xml:lang"]}},{id:"valid-lang",evaluate:"valid-lang-evaluate",options:{attributes:["lang","xml:lang"]}},{id:"xml-lang-mismatch",evaluate:"xml-lang-mismatch-evaluate"},{id:"dlitem",evaluate:"dlitem-evaluate"},{id:"listitem",evaluate:"listitem-evaluate"},{id:"only-dlitems",evaluate:"invalid-children-evaluate",options:{validRoles:["definition","term","listitem"],validNodeNames:["dt","dd"],divGroups:!0}},{id:"only-listitems",evaluate:"invalid-children-evaluate",options:{validRoles:["listitem"],validNodeNames:["li"]}},{id:"structured-dlitems",evaluate:"structured-dlitems-evaluate"},{id:"caption",evaluate:"caption-evaluate"},{id:"frame-tested",evaluate:"frame-tested-evaluate",after:"frame-tested-after",options:{isViolation:!1}},{id:"no-autoplay-audio",evaluate:"no-autoplay-audio-evaluate",options:{allowedDuration:3}},{id:"css-orientation-lock",evaluate:"css-orientation-lock-evaluate",options:{degreeThreshold:2}},{id:"meta-viewport-large",evaluate:"meta-viewport-scale-evaluate",options:{scaleMinimum:5,lowerBound:2}},{id:"meta-viewport",evaluate:"meta-viewport-scale-evaluate",options:{scaleMinimum:2}},{id:"target-offset",evaluate:"target-offset-evaluate",options:{minOffset:24}},{id:"target-size",evaluate:"target-size-evaluate",options:{minSize:24}},{id:"header-present",evaluate:"has-descendant-evaluate",after:"has-descendant-after",options:{selector:":is(h1, h2, h3, h4, h5, h6):not([role]), [role=heading]"}},{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",after:"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",options:{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);',Qa.getNodeDetails,createAxeRuleResultArtifact,runA11yChecks]
})}}});function handlePotentialMissingNodeError(e){if(!/No node.*found/.test(e.message)&&!/Node.*does not belong to the document/.test(e.message))throw e}async function resolveNodeIdToObjectId(e,t){try{return(await e.sendCommand("DOM.resolveNode",{backendNodeId:t})).object.objectId}catch(e){return handlePotentialMissingNodeError(e)}}function collectAnchorElements(){const resolveURLOrEmpty=e=>{try{return new URL(e,window.location.href).href}catch(e){return""}};function getTruncatedOnclick(e){return(e.getAttribute("onclick")||"").slice(0,1024)}return getElementsInDocument("a").map((e=>e instanceof HTMLAnchorElement?{href:e.href,rawHref:e.getAttribute("href")||"",onclick:getTruncatedOnclick(e),role:e.getAttribute("role")||"",name:e.name,text:e.innerText,rel:e.rel,target:e.target,node:getNodeDetails(e)}:{href:resolveURLOrEmpty(e.href.baseVal),rawHref:e.getAttribute("href")||"",onclick:getTruncatedOnclick(e),role:e.getAttribute("role")||"",text:e.textContent||"",rel:"",
target:e.target.baseVal||"",node:getNodeDetails(e)}))}async function getEventListeners(e,t){const n=await async function resolveDevtoolsNodePathToObjectId(e,t){try{const{nodeId:n}=await e.sendCommand("DOM.pushNodeByPathToFrontend",{path:t}),{object:{objectId:a}}=await e.sendCommand("DOM.resolveNode",{nodeId:n});return a}catch(e){return handlePotentialMissingNodeError(e)}}(e,t);if(!n)return[];return(await e.sendCommand("DOMDebugger.getEventListeners",{objectId:n})).listeners.map((({type:e})=>({type:e})))}var Bi=Object.freeze({__proto__:null,default:class AnchorElements extends FRGatherer{meta={supportedModes:["snapshot","navigation"]};async getArtifact(e){const t=e.driver.defaultSession,n=await e.driver.executionContext.evaluate(collectAnchorElements,{args:[],useIsolation:!0,deps:[Qa.getElementsInDocument,Qa.getNodeDetails]});await t.sendCommand("DOM.enable"),await t.sendCommand("DOM.getDocument",{depth:-1,pierce:!0});const a=n.map((async e=>{
const n=await getEventListeners(t,e.node.devtoolsNodePath);return{...e,listeners:n}})),r=await Promise.all(a);return await t.sendCommand("DOM.disable"),r}}});class BFCacheFailures extends FRGatherer{meta={supportedModes:["navigation","timespan"],dependencies:{DevtoolsLog:DevtoolsLog.symbol}};static processBFCacheEventList(e){const t={Circumstantial:{},PageSupportNeeded:{},SupportPending:{}};for(const n of e){t[n.type][n.reason]=[]}return{notRestoredReasonsTree:t}}static processBFCacheEventTree(e){const t={Circumstantial:{},PageSupportNeeded:{},SupportPending:{}};return function traverse(e){for(const n of e.explanations){const a=t[n.type],r=a[n.reason]||[];r.push(e.url),a[n.reason]=r}for(const t of e.children)traverse(t)}(e),{notRestoredReasonsTree:t}}static processBFCacheEvent(e){return e?.notRestoredExplanationsTree?BFCacheFailures.processBFCacheEventTree(e.notRestoredExplanationsTree):BFCacheFailures.processBFCacheEventList(e?.notRestoredExplanations||[])}
async activelyCollectBFCacheEvent(e){const t=e.driver.defaultSession;let n;function onBfCacheNotUsed(e){n=e}t.on("Page.backForwardCacheNotUsed",onBfCacheNotUsed);const a=await t.sendCommand("Page.getNavigationHistory"),r=a.entries[a.currentIndex];await Promise.all([t.sendCommand("Page.navigate",{url:"chrome://terms"}),waitForLoadEvent(t,100).promise]);const[,o]=await Promise.all([t.sendCommand("Page.navigateToHistoryEntry",{entryId:r.id}),waitForFrameNavigated(t).promise]);if("BackForwardCacheRestore"!==o.type&&!n&&(await new Promise((e=>setTimeout(e,100))),!n))throw new Error("bfcache failed but the failure reasons were not emitted in time");return t.off("Page.backForwardCacheNotUsed",onBfCacheNotUsed),n}passivelyCollectBFCacheEvents(e){const t=[];for(const n of e.dependencies.DevtoolsLog)"Page.backForwardCacheNotUsed"===n.method&&t.push(n.params);return t}async getArtifact(e){const t=this.passivelyCollectBFCacheEvents(e)
;if("navigation"===e.gatherMode&&!e.settings.usePassiveGathering){const n=await this.activelyCollectBFCacheEvent(e);n&&t.push(n)}return t.map(BFCacheFailures.processBFCacheEvent)}async afterPass(e,t){return this.getArtifact({...e,dependencies:{DevtoolsLog:t.devtoolsLog}})}}var Ui=Object.freeze({__proto__:null,default:BFCacheFailures});function getCacheContents(){return caches.keys().then((e=>Promise.all(e.map((e=>caches.open(e)))))).then((e=>{const t=[];return Promise.all(e.map((e=>e.keys().then((e=>{t.push(...e.map((e=>e.url)))}))))).then((e=>t))}))}var ji=Object.freeze({__proto__:null,default:class CacheContents extends FRGatherer{meta={supportedModes:["snapshot","navigation"]};async getArtifact(e){const t=e.driver;return await t.executionContext.evaluate(getCacheContents,{args:[]})}}});function remoteObjectToString(e){if(void 0!==e.value||"undefined"===e.type)return String(e.value);if("string"==typeof e.description&&e.description!==e.className)return e.description
;return`[${e.subtype||e.type} ${e.className||"Object"}]`}var zi=Object.freeze({__proto__:null,default:class ConsoleMessages extends FRGatherer{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(e){const{type:t}=e;if("warning"!==t&&"error"!==t)return;const n=(e.args||[]).map(remoteObjectToString).join(" ");if(!n&&!e.stackTrace)return;const{url:a,lineNumber:r,columnNumber:o}=e.stackTrace?.callFrames[0]||{},i={eventType:"consoleAPI",source:"warning"===t?"console.warn":"console.error",level:t,text:n,stackTrace:e.stackTrace,timestamp:e.timestamp,url:a,lineNumber:r,columnNumber:o};this._logEntries.push(i)}onExceptionThrown(e){const t=e.exceptionDetails.exception?e.exceptionDetails.exception.description:e.exceptionDetails.text;if(!t)return;const n={eventType:"exception",
source:"exception",level:"error",text:t,stackTrace:e.exceptionDetails.stackTrace,timestamp:e.timestamp,url:e.exceptionDetails.url,scriptId:e.exceptionDetails.scriptId,lineNumber:e.exceptionDetails.lineNumber,columnNumber:e.exceptionDetails.columnNumber};this._logEntries.push(n)}onLogEntry(e){const{source:t,level:n,text:a,stackTrace:r,timestamp:o,url:i,lineNumber:s}=e.entry,c=e.entry.stackTrace?.callFrames[0];this._logEntries.push({eventType:"protocolLog",source:t,level:n,text:a,stackTrace:r,timestamp:o,url:i,scriptId:c?.scriptId,lineNumber:s,columnNumber:c?.columnNumber})}async startInstrumentation(e){const t=e.driver.defaultSession;t.on("Log.entryAdded",this._onLogEntryAdded),await t.sendCommand("Log.enable"),await t.sendCommand("Log.startViolationsReport",{config:[{name:"discouragedAPIUse",threshold:-1}]}),t.on("Runtime.consoleAPICalled",this._onConsoleAPICalled),t.on("Runtime.exceptionThrown",this._onExceptionThrown),await t.sendCommand("Runtime.enable")}
async stopInstrumentation({driver:e}){await e.defaultSession.sendCommand("Log.stopViolationsReport"),await e.defaultSession.off("Log.entryAdded",this._onLogEntryAdded),await e.defaultSession.sendCommand("Log.disable"),await e.defaultSession.off("Runtime.consoleAPICalled",this._onConsoleAPICalled),await e.defaultSession.off("Runtime.exceptionThrown",this._onExceptionThrown),await e.defaultSession.sendCommand("Runtime.disable")}async getArtifact(){return this._logEntries}}});var qi=Object.freeze({__proto__:null,default:class CSSUsage extends FRGatherer{constructor(){super(),this._session=void 0,this._sheetPromises=new Map,this._ruleUsage=void 0,this._onStylesheetAdded=this._onStylesheetAdded.bind(this)}meta={supportedModes:["snapshot","timespan","navigation"]};async _onStylesheetAdded(e){if(!this._session)throw new Error("Session not initialized");const t=e.header.styleSheetId,n=this._session.sendCommand("CSS.getStyleSheetText",{styleSheetId:t}).then((t=>({header:e.header,content:t.text
}))).catch((t=>(Log.warn("CSSUsage",`Error fetching content of stylesheet with URL "${e.header.sourceURL}"`),Qo.captureException(t,{tags:{gatherer:this.name},extra:{url:e.header.sourceURL},level:"error"}),t)));this._sheetPromises.set(t,n)}async startCSSUsageTracking(e){const t=e.driver.defaultSession;this._session=t,t.on("CSS.styleSheetAdded",this._onStylesheetAdded),await t.sendCommand("DOM.enable"),await t.sendCommand("CSS.enable"),await t.sendCommand("CSS.startRuleUsageTracking")}async stopCSSUsageTracking(e){const t=e.driver.defaultSession,n=await t.sendCommand("CSS.stopRuleUsageTracking");this._ruleUsage=n.ruleUsage,t.off("CSS.styleSheetAdded",this._onStylesheetAdded)}async startInstrumentation(e){"timespan"===e.gatherMode&&await this.startCSSUsageTracking(e)}async stopInstrumentation(e){"timespan"===e.gatherMode&&await this.stopCSSUsageTracking(e)}async getArtifact(e){const t=e.driver.defaultSession,n=e.driver.executionContext
;"timespan"!==e.gatherMode&&(await this.startCSSUsageTracking(e),await n.evaluateAsync("getComputedStyle(document.body)"),await this.stopCSSUsageTracking(e));const a=new Map,r=await Promise.all(this._sheetPromises.values());for(const e of r)e instanceof Error||a.set(e.content,e);if(await t.sendCommand("CSS.disable"),await t.sendCommand("DOM.disable"),!this._ruleUsage)throw new Error("Issue collecting rule usages");return{rules:this._ruleUsage,stylesheets:Array.from(a.values())}}}});var $i=Object.freeze({__proto__:null,default:class DevtoolsLogCompat extends FRGatherer{meta={supportedModes:["timespan","navigation"],dependencies:{DevtoolsLog:DevtoolsLog.symbol}};async getArtifact(e){return{defaultPass:e.dependencies.DevtoolsLog}}}});function getDoctype(){if(!document.doctype)return null;const e=document.compatMode,{name:t,publicId:n,systemId:a}=document.doctype;return{name:t,publicId:n,systemId:a,documentCompatMode:e}}var Vi=Object.freeze({__proto__:null,
default:class Doctype$1 extends FRGatherer{meta={supportedModes:["snapshot","navigation"]};getArtifact(e){return e.driver.executionContext.evaluate(getDoctype,{args:[],useIsolation:!0})}}});function getDOMStats(e=document.body,t=!0){let n=null,a=-1,r=-1,o=0,i=null;const _calcDOMWidthAndHeight=function(e,s=1){s>a&&(n=e,a=s),e.children.length>r&&(i=e,r=e.children.length);let c=e.firstElementChild;for(;c;)_calcDOMWidthAndHeight(c,s+1),t&&c.shadowRoot&&_calcDOMWidthAndHeight(c.shadowRoot,s+1),c=c.nextElementSibling,o++;return{maxDepth:a,maxWidth:r,numElements:o}},s=_calcDOMWidthAndHeight(e);return{depth:{max:s.maxDepth,...getNodeDetails(n)},width:{max:s.maxWidth,...getNodeDetails(i)},totalBodyElements:s.numElements}}var Wi=Object.freeze({__proto__:null,default:class DOMStats extends FRGatherer{meta={supportedModes:["snapshot","navigation"]};async getArtifact(e){const t=e.driver;await t.defaultSession.sendCommand("DOM.enable");const n=await t.executionContext.evaluate(getDOMStats,{args:[],
useIsolation:!0,deps:[Qa.getNodeDetails]});return await t.defaultSession.sendCommand("DOM.disable"),n}}});const Hi=/^image\/((x|ms|x-ms)-)?(png|bmp|jpeg)$/;class OptimizedImages extends FRGatherer{meta={supportedModes:["timespan","navigation"],dependencies:{DevtoolsLog:DevtoolsLog.symbol}};constructor(){super(),this._encodingStartAt=0}static filterImageRequests(e){const t=new Set;return e.reduce(((e,n)=>{if(t.has(n.url)||!n.finished||n.sessionId)return e;t.add(n.url);const a=n.resourceType===NetworkRequest.TYPES.Image&&Hi.test(n.mimeType),r=NetworkRequest.getResourceSizeOnNetwork(n);return a&&r>4096&&e.push({requestId:n.requestId,url:n.url,mimeType:n.mimeType,resourceSize:r}),e}),[])}_getEncodedResponse(e,t,n){const a={requestId:t=NetworkRequest.getRequestIdForBackend(t),encoding:n,quality:"jpeg"===n?.92:.85,sizeOnly:!0};return e.sendCommand("Audits.getEncodedResponse",a)}async calculateImageStats(e,t){const n=t.resourceSize;if(Date.now()-this._encodingStartAt>5e3||n>2048e3)return{
originalSize:n,jpegSize:void 0,webpSize:void 0};const a=await this._getEncodedResponse(e,t.requestId,"jpeg"),r=await this._getEncodedResponse(e,t.requestId,"webp");return{originalSize:n,jpegSize:a.encodedSize,webpSize:r.encodedSize}}async computeOptimizedImages(e,t){this._encodingStartAt=Date.now();const n=[];for(const a of t)try{const t={failed:!1,...await this.calculateImageStats(e,a),...a};n.push(t)}catch(e){Log.warn("optimized-images",e.message),Qo.captureException(e,{tags:{gatherer:"OptimizedImages"},extra:{imageUrl:UrlUtils.elideDataURI(a.url)},level:"warning"});const t={failed:!0,errMsg:e.message,...a};n.push(t)}return n}async _getArtifact(e,t){const n=OptimizedImages.filterImageRequests(t).sort(((e,t)=>t.resourceSize-e.resourceSize)),a=await this.computeOptimizedImages(e.driver.defaultSession,n),r=a.filter((e=>!e.failed));if(a.length&&!r.length)throw new Error("All image optimizations failed");return a}async getArtifact(e){
const t=e.dependencies.DevtoolsLog,n=await go.request(t,e);return this._getArtifact(e,n)}async afterPass(e,t){return this._getArtifact({...e,dependencies:{}},t.networkRecords)}}var Gi=Object.freeze({__proto__:null,default:OptimizedImages}),Yi={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 ZStream(){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}function arraySet(e,t,n,a,r){if(t.subarray&&e.subarray)e.set(t.subarray(n,n+a),r);else for(var o=0;o<a;o++)e[r+o]=t[n+o]}var Ki=Uint8Array,Ji=Uint16Array,Zi=Int32Array;function zero$1(e){for(var t=e.length;--t>=0;)e[t]=0}
var Xi=256,Qi=286,es=30,ts=15,ns=[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],as=[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],rs=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],os=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],is=new Array(576);zero$1(is);var ss=new Array(60);zero$1(ss);var cs=new Array(512);zero$1(cs);var ls=new Array(256);zero$1(ls);var us=new Array(29);zero$1(us);var ds,ps,gs,hs=new Array(es);function StaticTreeDesc(e,t,n,a,r){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=a,this.max_length=r,this.has_stree=e&&e.length}function TreeDesc(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function d_code(e){return e<256?cs[e]:cs[256+(e>>>7)]}function put_short(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function send_bits(e,t,n){e.bi_valid>16-n?(e.bi_buf|=t<<e.bi_valid&65535,put_short(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=n-16):(e.bi_buf|=t<<e.bi_valid&65535,
e.bi_valid+=n)}function send_code(e,t,n){send_bits(e,n[2*t],n[2*t+1])}function bi_reverse(e,t){var n=0;do{n|=1&e,e>>>=1,n<<=1}while(--t>0);return n>>>1}function gen_codes(e,t,n){var a,r,o=new Array(16),i=0;for(a=1;a<=ts;a++)o[a]=i=i+n[a-1]<<1;for(r=0;r<=t;r++){var s=e[2*r+1];0!==s&&(e[2*r]=bi_reverse(o[s]++,s))}}function init_block(e){var t;for(t=0;t<Qi;t++)e.dyn_ltree[2*t]=0;for(t=0;t<es;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function bi_windup(e){e.bi_valid>8?put_short(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 smaller(e,t,n,a){var r=2*t,o=2*n;return e[r]<e[o]||e[r]===e[o]&&a[t]<=a[n]}function pqdownheap(e,t,n){for(var a=e.heap[n],r=n<<1;r<=e.heap_len&&(r<e.heap_len&&smaller(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!smaller(t,a,e.heap[r],e.depth));)e.heap[n]=e.heap[r],n=r,r<<=1;e.heap[n]=a}function compress_block(e,t,n){var a,r,o,i,s=0
;if(0!==e.last_lit)do{a=e.pending_buf[e.d_buf+2*s]<<8|e.pending_buf[e.d_buf+2*s+1],r=e.pending_buf[e.l_buf+s],s++,0===a?send_code(e,r,t):(send_code(e,(o=ls[r])+Xi+1,t),0!==(i=ns[o])&&send_bits(e,r-=us[o],i),send_code(e,o=d_code(--a),n),0!==(i=as[o])&&send_bits(e,a-=hs[o],i))}while(s<e.last_lit);send_code(e,256,t)}function build_tree(e,t){var n,a,r,o=t.dyn_tree,i=t.stat_desc.static_tree,s=t.stat_desc.has_stree,c=t.stat_desc.elems,l=-1;for(e.heap_len=0,e.heap_max=573,n=0;n<c;n++)0!==o[2*n]?(e.heap[++e.heap_len]=l=n,e.depth[n]=0):o[2*n+1]=0;for(;e.heap_len<2;)o[2*(r=e.heap[++e.heap_len]=l<2?++l:0)]=1,e.depth[r]=0,e.opt_len--,s&&(e.static_len-=i[2*r+1]);for(t.max_code=l,n=e.heap_len>>1;n>=1;n--)pqdownheap(e,o,n);r=c;do{n=e.heap[1],e.heap[1]=e.heap[e.heap_len--],pqdownheap(e,o,1),a=e.heap[1],e.heap[--e.heap_max]=n,e.heap[--e.heap_max]=a,o[2*r]=o[2*n]+o[2*a],e.depth[r]=(e.depth[n]>=e.depth[a]?e.depth[n]:e.depth[a])+1,o[2*n+1]=o[2*a+1]=r,e.heap[1]=r++,pqdownheap(e,o,1)}while(e.heap_len>=2)
;e.heap[--e.heap_max]=e.heap[1],function gen_bitlen(e,t){var n,a,r,o,i,s,c=t.dyn_tree,l=t.max_code,u=t.stat_desc.static_tree,d=t.stat_desc.has_stree,m=t.stat_desc.extra_bits,p=t.stat_desc.extra_base,h=t.stat_desc.max_length,f=0;for(o=0;o<=ts;o++)e.bl_count[o]=0;for(c[2*e.heap[e.heap_max]+1]=0,n=e.heap_max+1;n<573;n++)(o=c[2*c[2*(a=e.heap[n])+1]+1]+1)>h&&(o=h,f++),c[2*a+1]=o,a>l||(e.bl_count[o]++,i=0,a>=p&&(i=m[a-p]),s=c[2*a],e.opt_len+=s*(o+i),d&&(e.static_len+=s*(u[2*a+1]+i)));if(0!==f){do{for(o=h-1;0===e.bl_count[o];)o--;e.bl_count[o]--,e.bl_count[o+1]+=2,e.bl_count[h]--,f-=2}while(f>0);for(o=h;0!==o;o--)for(a=e.bl_count[o];0!==a;)(r=e.heap[--n])>l||(c[2*r+1]!==o&&(e.opt_len+=(o-c[2*r+1])*c[2*r],c[2*r+1]=o),a--)}}(e,t),gen_codes(o,l,e.bl_count)}function scan_tree(e,t,n){var a,r,o=-1,i=t[1],s=0,c=7,l=4;for(0===i&&(c=138,l=3),t[2*(n+1)+1]=65535,a=0;a<=n;a++)r=i,i=t[2*(a+1)+1],++s<c&&r===i||(s<l?e.bl_tree[2*r]+=s:0!==r?(r!==o&&e.bl_tree[2*r]++,
e.bl_tree[32]++):s<=10?e.bl_tree[34]++:e.bl_tree[36]++,s=0,o=r,0===i?(c=138,l=3):r===i?(c=6,l=3):(c=7,l=4))}function send_tree(e,t,n){var a,r,o=-1,i=t[1],s=0,c=7,l=4;for(0===i&&(c=138,l=3),a=0;a<=n;a++)if(r=i,i=t[2*(a+1)+1],!(++s<c&&r===i)){if(s<l)do{send_code(e,r,e.bl_tree)}while(0!=--s);else 0!==r?(r!==o&&(send_code(e,r,e.bl_tree),s--),send_code(e,16,e.bl_tree),send_bits(e,s-3,2)):s<=10?(send_code(e,17,e.bl_tree),send_bits(e,s-3,3)):(send_code(e,18,e.bl_tree),send_bits(e,s-11,7));s=0,o=r,0===i?(c=138,l=3):r===i?(c=6,l=3):(c=7,l=4)}}zero$1(hs);var fs=!1;function _tr_init(e){fs||(!function tr_static_init(){var e,t,n,a,r,o=new Array(16);for(n=0,a=0;a<28;a++)for(us[a]=n,e=0;e<1<<ns[a];e++)ls[n++]=a;for(ls[n-1]=a,r=0,a=0;a<16;a++)for(hs[a]=r,e=0;e<1<<as[a];e++)cs[r++]=a;for(r>>=7;a<es;a++)for(hs[a]=r<<7,e=0;e<1<<as[a]-7;e++)cs[256+r++]=a;for(t=0;t<=ts;t++)o[t]=0;for(e=0;e<=143;)is[2*e+1]=8,e++,o[8]++;for(;e<=255;)is[2*e+1]=9,e++,o[9]++;for(;e<=279;)is[2*e+1]=7,e++,o[7]++
;for(;e<=287;)is[2*e+1]=8,e++,o[8]++;for(gen_codes(is,287,o),e=0;e<es;e++)ss[2*e+1]=5,ss[2*e]=bi_reverse(e,5);ds=new StaticTreeDesc(is,ns,257,Qi,ts),ps=new StaticTreeDesc(ss,as,0,es,ts),gs=new StaticTreeDesc(new Array(0),rs,0,19,7)}(),fs=!0),e.l_desc=new TreeDesc(e.dyn_ltree,ds),e.d_desc=new TreeDesc(e.dyn_dtree,ps),e.bl_desc=new TreeDesc(e.bl_tree,gs),e.bi_buf=0,e.bi_valid=0,init_block(e)}function _tr_stored_block(e,t,n,a){send_bits(e,0+(a?1:0),3),function copy_block(e,t,n,a){bi_windup(e),a&&(put_short(e,n),put_short(e,~n)),arraySet(e.pending_buf,e.window,t,n,e.pending),e.pending+=n}(e,t,n,!0)}function _tr_align(e){send_bits(e,2,3),send_code(e,256,is),function bi_flush(e){16===e.bi_valid?(put_short(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}function _tr_flush_block(e,t,n,a){var r,o,i=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=function detect_data_type(e){var t,n=4093624447;for(t=0;t<=31;t++,
n>>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<Xi;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),build_tree(e,e.l_desc),build_tree(e,e.d_desc),i=function build_bl_tree(e){var t;for(scan_tree(e,e.dyn_ltree,e.l_desc.max_code),scan_tree(e,e.dyn_dtree,e.d_desc.max_code),build_tree(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*os[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),r=e.opt_len+3+7>>>3,(o=e.static_len+3+7>>>3)<=r&&(r=o)):r=o=n+5,n+4<=r&&-1!==t?_tr_stored_block(e,t,n,a):4===e.strategy||o===r?(send_bits(e,2+(a?1:0),3),compress_block(e,is,ss)):(send_bits(e,4+(a?1:0),3),function send_all_trees(e,t,n,a){var r;for(send_bits(e,t-257,5),send_bits(e,n-1,5),send_bits(e,a-4,4),r=0;r<a;r++)send_bits(e,e.bl_tree[2*os[r]+1],3);send_tree(e,e.dyn_ltree,t-1),send_tree(e,e.dyn_dtree,n-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,i+1),compress_block(e,e.dyn_ltree,e.dyn_dtree)),init_block(e),a&&bi_windup(e)}
function _tr_tally(e,t,n){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&n,e.last_lit++,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(ls[n]+Xi+1)]++,e.dyn_dtree[2*d_code(t)]++),e.last_lit===e.lit_bufsize-1}function adler32(e,t,n,a){for(var r=65535&e|0,o=e>>>16&65535|0,i=0;0!==n;){n-=i=n>2e3?2e3:n;do{o=o+(r=r+t[a++]|0)|0}while(--i);r%=65521,o%=65521}return r|o<<16|0}var ys=function makeTable(){for(var e,t=[],n=0;n<256;n++){e=n;for(var a=0;a<8;a++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t}();function crc32(e,t,n,a){var r=ys,o=a+n;e^=-1;for(var i=a;i<o;i++)e=e>>>8^r[255&(e^t[i])];return-1^e}var bs,vs=-2,ws=258,Ds=262,Es=103,Ts=113,Ss=666;function err(e,t){return e.msg=Yi[t],t}function rank(e){return(e<<1)-(e>4?9:0)}function zero(e){for(var t=e.length;--t>=0;)e[t]=0}function flush_pending(e){var t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),
0!==n&&(arraySet(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,0===t.pending&&(t.pending_out=0))}function flush_block_only(e,t){_tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,flush_pending(e.strm)}function put_byte(e,t){e.pending_buf[e.pending++]=t}function putShortMSB(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function longest_match(e,t){var n,a,r=e.max_chain_length,o=e.strstart,i=e.prev_length,s=e.nice_match,c=e.strstart>e.w_size-Ds?e.strstart-(e.w_size-Ds):0,l=e.window,u=e.w_mask,d=e.prev,m=e.strstart+ws,p=l[o+i-1],h=l[o+i];e.prev_length>=e.good_match&&(r>>=2),s>e.lookahead&&(s=e.lookahead);do{if(l[(n=t)+i]===h&&l[n+i-1]===p&&l[n]===l[o]&&l[++n]===l[o+1]){o+=2,n++;do{}while(l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&o<m)
;if(a=ws-(m-o),o=m-ws,a>i){if(e.match_start=t,i=a,a>=s)break;p=l[o+i-1],h=l[o+i]}}}while((t=d[t&u])>c&&0!=--r);return i<=e.lookahead?i:e.lookahead}function fill_window(e){var t,n,a,r,o,i,s,c,l,u,d=e.w_size;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=d+(d-Ds)){arraySet(e.window,e.window,d,d,0),e.match_start-=d,e.strstart-=d,e.block_start-=d,t=n=e.hash_size;do{a=e.head[--t],e.head[t]=a>=d?a-d:0}while(--n);t=n=d;do{a=e.prev[--t],e.prev[t]=a>=d?a-d:0}while(--n);r+=d}if(0===e.strm.avail_in)break;if(i=e.strm,s=e.window,c=e.strstart+e.lookahead,l=r,u=void 0,(u=i.avail_in)>l&&(u=l),n=0===u?0:(i.avail_in-=u,arraySet(s,i.input,i.next_in,u,c),1===i.state.wrap?i.adler=adler32(i.adler,s,u,c):2===i.state.wrap&&(i.adler=crc32(i.adler,s,u,c)),i.next_in+=u,i.total_in+=u,u),e.lookahead+=n,e.lookahead+e.insert>=3)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+3-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<3)););}while(e.lookahead<Ds&&0!==e.strm.avail_in)}function deflate_fast(e,t){for(var n,a;;){if(e.lookahead<Ds){if(fill_window(e),e.lookahead<Ds&&0===t)return 1;if(0===e.lookahead)break}if(n=0,e.lookahead>=3&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==n&&e.strstart-n<=e.w_size-Ds&&(e.match_length=longest_match(e,n)),e.match_length>=3)if(a=_tr_tally(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-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(0!=--e.match_length);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 a=_tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(a&&(flush_block_only(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,4===t?(flush_block_only(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(flush_block_only(e,!1),0===e.strm.avail_out)?1:2}function deflate_slow(e,t){for(var n,a,r;;){if(e.lookahead<Ds){if(fill_window(e),e.lookahead<Ds&&0===t)return 1;if(0===e.lookahead)break}if(n=0,e.lookahead>=3&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-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=2,0!==n&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-Ds&&(e.match_length=longest_match(e,n),e.match_length<=5&&(1===e.strategy||3===e.match_length&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){
r=e.strstart+e.lookahead-3,a=_tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=r&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-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(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,a&&(flush_block_only(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if((a=_tr_tally(e,0,e.window[e.strstart-1]))&&flush_block_only(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(a=_tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,4===t?(flush_block_only(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(flush_block_only(e,!1),0===e.strm.avail_out)?1:2}function Config(e,t,n,a,r){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=a,this.func=r}
function DeflateState(){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=8,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 Ji(1146),this.dyn_dtree=new Ji(122),this.bl_tree=new Ji(78),zero(this.dyn_ltree),zero(this.dyn_dtree),zero(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Ji(16),this.heap=new Ji(573),zero(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Ji(573),zero(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 deflateReset(e){var t=function deflateResetKeep(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=2,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?42:Ts,e.adler=2===t.wrap?0:1,t.last_flush=0,_tr_init(t),0):err(e,vs)}(e);return 0===t&&function lm_init(e){e.window_size=2*e.w_size,zero(e.head),e.max_lazy_match=bs[e.level].max_lazy,e.good_match=bs[e.level].good_length,e.nice_match=bs[e.level].nice_length,e.max_chain_length=bs[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0}(e.state),t}function deflate(e,t){var n,a,r,o;if(!e||!e.state||t>5||t<0)return e?err(e,vs):vs;if(a=e.state,!e.output||!e.input&&0!==e.avail_in||a.status===Ss&&4!==t)return err(e,0===e.avail_out?-5:vs);if(a.strm=e,n=a.last_flush,
a.last_flush=t,42===a.status)if(2===a.wrap)e.adler=0,put_byte(a,31),put_byte(a,139),put_byte(a,8),a.gzhead?(put_byte(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),put_byte(a,255&a.gzhead.time),put_byte(a,a.gzhead.time>>8&255),put_byte(a,a.gzhead.time>>16&255),put_byte(a,a.gzhead.time>>24&255),put_byte(a,9===a.level?2:a.strategy>=2||a.level<2?4:0),put_byte(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(put_byte(a,255&a.gzhead.extra.length),put_byte(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(e.adler=crc32(e.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69):(put_byte(a,0),put_byte(a,0),put_byte(a,0),put_byte(a,0),put_byte(a,0),put_byte(a,9===a.level?2:a.strategy>=2||a.level<2?4:0),put_byte(a,3),a.status=Ts);else{var i=8+(a.w_bits-8<<4)<<8;i|=(a.strategy>=2||a.level<2?0:a.level<6?1:6===a.level?2:3)<<6,0!==a.strstart&&(i|=32),i+=31-i%31,a.status=Ts,putShortMSB(a,i),
0!==a.strstart&&(putShortMSB(a,e.adler>>>16),putShortMSB(a,65535&e.adler)),e.adler=1}if(69===a.status)if(a.gzhead.extra){for(r=a.pending;a.gzindex<(65535&a.gzhead.extra.length)&&(a.pending!==a.pending_buf_size||(a.gzhead.hcrc&&a.pending>r&&(e.adler=crc32(e.adler,a.pending_buf,a.pending-r,r)),flush_pending(e),r=a.pending,a.pending!==a.pending_buf_size));)put_byte(a,255&a.gzhead.extra[a.gzindex]),a.gzindex++;a.gzhead.hcrc&&a.pending>r&&(e.adler=crc32(e.adler,a.pending_buf,a.pending-r,r)),a.gzindex===a.gzhead.extra.length&&(a.gzindex=0,a.status=73)}else a.status=73;if(73===a.status)if(a.gzhead.name){r=a.pending;do{if(a.pending===a.pending_buf_size&&(a.gzhead.hcrc&&a.pending>r&&(e.adler=crc32(e.adler,a.pending_buf,a.pending-r,r)),flush_pending(e),r=a.pending,a.pending===a.pending_buf_size)){o=1;break}o=a.gzindex<a.gzhead.name.length?255&a.gzhead.name.charCodeAt(a.gzindex++):0,put_byte(a,o)}while(0!==o);a.gzhead.hcrc&&a.pending>r&&(e.adler=crc32(e.adler,a.pending_buf,a.pending-r,r)),
0===o&&(a.gzindex=0,a.status=91)}else a.status=91;if(91===a.status)if(a.gzhead.comment){r=a.pending;do{if(a.pending===a.pending_buf_size&&(a.gzhead.hcrc&&a.pending>r&&(e.adler=crc32(e.adler,a.pending_buf,a.pending-r,r)),flush_pending(e),r=a.pending,a.pending===a.pending_buf_size)){o=1;break}o=a.gzindex<a.gzhead.comment.length?255&a.gzhead.comment.charCodeAt(a.gzindex++):0,put_byte(a,o)}while(0!==o);a.gzhead.hcrc&&a.pending>r&&(e.adler=crc32(e.adler,a.pending_buf,a.pending-r,r)),0===o&&(a.status=Es)}else a.status=Es;if(a.status===Es&&(a.gzhead.hcrc?(a.pending+2>a.pending_buf_size&&flush_pending(e),a.pending+2<=a.pending_buf_size&&(put_byte(a,255&e.adler),put_byte(a,e.adler>>8&255),e.adler=0,a.status=Ts)):a.status=Ts),0!==a.pending){if(flush_pending(e),0===e.avail_out)return a.last_flush=-1,0}else if(0===e.avail_in&&rank(t)<=rank(n)&&4!==t)return err(e,-5);if(a.status===Ss&&0!==e.avail_in)return err(e,-5);if(0!==e.avail_in||0!==a.lookahead||0!==t&&a.status!==Ss){
var s=2===a.strategy?function deflate_huff(e,t){for(var n;;){if(0===e.lookahead&&(fill_window(e),0===e.lookahead)){if(0===t)return 1;break}if(e.match_length=0,n=_tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(flush_block_only(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(flush_block_only(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(flush_block_only(e,!1),0===e.strm.avail_out)?1:2}(a,t):3===a.strategy?function deflate_rle(e,t){for(var n,a,r,o,i=e.window;;){if(e.lookahead<=ws){if(fill_window(e),e.lookahead<=ws&&0===t)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(a=i[r=e.strstart-1])===i[++r]&&a===i[++r]&&a===i[++r]){o=e.strstart+ws;do{}while(a===i[++r]&&a===i[++r]&&a===i[++r]&&a===i[++r]&&a===i[++r]&&a===i[++r]&&a===i[++r]&&a===i[++r]&&r<o);e.match_length=ws-(o-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(n=_tr_tally(e,1,e.match_length-3),e.lookahead-=e.match_length,
e.strstart+=e.match_length,e.match_length=0):(n=_tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(flush_block_only(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(flush_block_only(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(flush_block_only(e,!1),0===e.strm.avail_out)?1:2}(a,t):bs[a.level].func(a,t);if(3!==s&&4!==s||(a.status=Ss),1===s||3===s)return 0===e.avail_out&&(a.last_flush=-1),0;if(2===s&&(1===t?_tr_align(a):5!==t&&(_tr_stored_block(a,0,0,!1),3===t&&(zero(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),flush_pending(e),0===e.avail_out))return a.last_flush=-1,0}return 4!==t?0:a.wrap<=0?1:(2===a.wrap?(put_byte(a,255&e.adler),put_byte(a,e.adler>>8&255),put_byte(a,e.adler>>16&255),put_byte(a,e.adler>>24&255),put_byte(a,255&e.total_in),put_byte(a,e.total_in>>8&255),put_byte(a,e.total_in>>16&255),put_byte(a,e.total_in>>24&255)):(putShortMSB(a,e.adler>>>16),putShortMSB(a,65535&e.adler)),flush_pending(e),a.wrap>0&&(a.wrap=-a.wrap),
0!==a.pending?0:1)}bs=[new Config(0,0,0,0,(function deflate_stored(e,t){var n=65535;for(n>e.pending_buf_size-5&&(n=e.pending_buf_size-5);;){if(e.lookahead<=1){if(fill_window(e),0===e.lookahead&&0===t)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var a=e.block_start+n;if((0===e.strstart||e.strstart>=a)&&(e.lookahead=e.strstart-a,e.strstart=a,flush_block_only(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-Ds&&(flush_block_only(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(flush_block_only(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(flush_block_only(e,!1),e.strm.avail_out),1)})),new Config(4,4,8,4,deflate_fast),new Config(4,5,16,8,deflate_fast),new Config(4,6,32,32,deflate_fast),new Config(4,4,16,16,deflate_slow),new Config(8,16,32,32,deflate_slow),new Config(8,16,128,128,deflate_slow),new Config(8,32,128,256,deflate_slow),new Config(32,128,258,1024,deflate_slow),new Config(32,258,258,4096,deflate_slow)]
;function inflate_fast(e,t){var n,a,r,o,i,s,c,l,u,d,m,p,h,f,y,b,v,w,D,E,T,S,C,_,A;n=e.state,a=e.next_in,_=e.input,r=a+(e.avail_in-5),o=e.next_out,A=e.output,i=o-(t-e.avail_out),s=o+(e.avail_out-257),c=n.dmax,l=n.wsize,u=n.whave,d=n.wnext,m=n.window,p=n.hold,h=n.bits,f=n.lencode,y=n.distcode,b=(1<<n.lenbits)-1,v=(1<<n.distbits)-1;e:do{h<15&&(p+=_[a++]<<h,h+=8,p+=_[a++]<<h,h+=8),w=f[p&b];t:for(;;){if(p>>>=D=w>>>24,h-=D,0===(D=w>>>16&255))A[o++]=65535&w;else{if(!(16&D)){if(0==(64&D)){w=f[(65535&w)+(p&(1<<D)-1)];continue t}if(32&D){n.mode=12;break e}e.msg="invalid literal/length code",n.mode=30;break e}E=65535&w,(D&=15)&&(h<D&&(p+=_[a++]<<h,h+=8),E+=p&(1<<D)-1,p>>>=D,h-=D),h<15&&(p+=_[a++]<<h,h+=8,p+=_[a++]<<h,h+=8),w=y[p&v];n:for(;;){if(p>>>=D=w>>>24,h-=D,!(16&(D=w>>>16&255))){if(0==(64&D)){w=y[(65535&w)+(p&(1<<D)-1)];continue n}e.msg="invalid distance code",n.mode=30;break e}if(T=65535&w,h<(D&=15)&&(p+=_[a++]<<h,(h+=8)<D&&(p+=_[a++]<<h,h+=8)),(T+=p&(1<<D)-1)>c){
e.msg="invalid distance too far back",n.mode=30;break e}if(p>>>=D,h-=D,T>(D=o-i)){if((D=T-D)>u&&n.sane){e.msg="invalid distance too far back",n.mode=30;break e}if(S=0,C=m,0===d){if(S+=l-D,D<E){E-=D;do{A[o++]=m[S++]}while(--D);S=o-T,C=A}}else if(d<D){if(S+=l+d-D,(D-=d)<E){E-=D;do{A[o++]=m[S++]}while(--D);if(S=0,d<E){E-=D=d;do{A[o++]=m[S++]}while(--D);S=o-T,C=A}}}else if(S+=d-D,D<E){E-=D;do{A[o++]=m[S++]}while(--D);S=o-T,C=A}for(;E>2;)A[o++]=C[S++],A[o++]=C[S++],A[o++]=C[S++],E-=3;E&&(A[o++]=C[S++],E>1&&(A[o++]=C[S++]))}else{S=o-T;do{A[o++]=A[S++],A[o++]=A[S++],A[o++]=A[S++],E-=3}while(E>2);E&&(A[o++]=A[S++],E>1&&(A[o++]=A[S++]))}break}}break}}while(a<r&&o<s);a-=E=h>>3,p&=(1<<(h-=E<<3))-1,e.next_in=a,e.next_out=o,e.avail_in=a<r?r-a+5:5-(a-r),e.avail_out=o<s?s-o+257:257-(o-s),n.hold=p,n.bits=h}
var Cs=15,_s=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],As=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],ks=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],Fs=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function inflate_table(e,t,n,a,r,o,i,s){var c,l,u,d,m,p,h,f,y,b=s.bits,v=0,w=0,D=0,E=0,T=0,S=0,C=0,_=0,A=0,k=0,F=null,R=0,x=new Ji(16),I=new Ji(16),N=null,L=0;for(v=0;v<=Cs;v++)x[v]=0;for(w=0;w<a;w++)x[t[n+w]]++;for(T=b,E=Cs;E>=1&&0===x[E];E--);if(T>E&&(T=E),0===E)return r[o++]=20971520,r[o++]=20971520,s.bits=1,0;for(D=1;D<E&&0===x[D];D++);for(T<D&&(T=D),_=1,v=1;v<=Cs;v++)if(_<<=1,(_-=x[v])<0)return-1;if(_>0&&(0===e||1!==E))return-1;for(I[1]=0,v=1;v<Cs;v++)I[v+1]=I[v]+x[v];for(w=0;w<a;w++)0!==t[n+w]&&(i[I[t[n+w]]++]=w);if(0===e?(F=N=i,p=19):1===e?(F=_s,R-=257,N=As,
L-=257,p=256):(F=ks,N=Fs,p=-1),k=0,w=0,v=D,m=o,S=T,C=0,u=-1,d=(A=1<<T)-1,1===e&&A>852||2===e&&A>592)return 1;for(;;){h=v-C,i[w]<p?(f=0,y=i[w]):i[w]>p?(f=N[L+i[w]],y=F[R+i[w]]):(f=96,y=0),c=1<<v-C,D=l=1<<S;do{r[m+(k>>C)+(l-=c)]=h<<24|f<<16|y|0}while(0!==l);for(c=1<<v-1;k&c;)c>>=1;if(0!==c?(k&=c-1,k+=c):k=0,w++,0==--x[v]){if(v===E)break;v=t[n+i[w]]}if(v>T&&(k&d)!==u){for(0===C&&(C=T),m+=D,_=1<<(S=v-C);S+C<E&&!((_-=x[S+C])<=0);)S++,_<<=1;if(A+=1<<S,1===e&&A>852||2===e&&A>592)return 1;r[u=k&d]=T<<24|S<<16|m-o|0}}return 0!==k&&(r[m+k]=v-C<<24|64<<16|0),s.bits=T,0}var Rs=-2,xs=12,Is=30;function zswap32(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function InflateState(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,
this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Ji(320),this.work=new Ji(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function inflateReset(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,function inflateResetKeep(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Zi(852),t.distcode=t.distdyn=new Zi(592),t.sane=1,t.back=-1,0):Rs}(e)):Rs}function inflateInit2(e,t){var n,a;return e?(a=new InflateState,e.state=a,a.window=null,0!==(n=function inflateReset2(e,t){var n,a;return e&&e.state?(a=e.state,t<0?(n=0,t=-t):(n=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?Rs:(null!==a.window&&a.wbits!==t&&(a.window=null),a.wrap=n,a.wbits=t,inflateReset(e))):Rs}(e,t))&&(e.state=null),n):Rs}var Ns,Ls,Ms=!0;function fixedtables(e){if(Ms){var t;for(Ns=new Zi(512),
Ls=new Zi(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(inflate_table(1,e.lens,0,288,Ns,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;inflate_table(2,e.lens,0,32,Ls,0,e.work,{bits:5}),Ms=!1}e.lencode=Ns,e.lenbits=9,e.distcode=Ls,e.distbits=5}function inflate(e,t){var n,a,r,o,i,s,c,l,u,d,m,p,h,f,y,b,v,w,D,E,T,S,C,_,A=0,k=new Ki(4),F=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return Rs;(n=e.state).mode===xs&&(n.mode=13),i=e.next_out,r=e.output,c=e.avail_out,o=e.next_in,a=e.input,s=e.avail_in,l=n.hold,u=n.bits,d=s,m=c,S=0;e:for(;;)switch(n.mode){case 1:if(0===n.wrap){n.mode=13;break}for(;u<16;){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}if(2&n.wrap&&35615===l){n.check=0,k[0]=255&l,k[1]=l>>>8&255,n.check=crc32(n.check,k,2,0),l=0,u=0,n.mode=2;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&l)<<8)+(l>>8))%31){e.msg="incorrect header check",n.mode=Is;break}
if(8!=(15&l)){e.msg="unknown compression method",n.mode=Is;break}if(u-=4,T=8+(15&(l>>>=4)),0===n.wbits)n.wbits=T;else if(T>n.wbits){e.msg="invalid window size",n.mode=Is;break}n.dmax=1<<T,e.adler=n.check=1,n.mode=512&l?10:xs,l=0,u=0;break;case 2:for(;u<16;){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}if(n.flags=l,8!=(255&n.flags)){e.msg="unknown compression method",n.mode=Is;break}if(57344&n.flags){e.msg="unknown header flags set",n.mode=Is;break}n.head&&(n.head.text=l>>8&1),512&n.flags&&(k[0]=255&l,k[1]=l>>>8&255,n.check=crc32(n.check,k,2,0)),l=0,u=0,n.mode=3;case 3:for(;u<32;){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}n.head&&(n.head.time=l),512&n.flags&&(k[0]=255&l,k[1]=l>>>8&255,k[2]=l>>>16&255,k[3]=l>>>24&255,n.check=crc32(n.check,k,4,0)),l=0,u=0,n.mode=4;case 4:for(;u<16;){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}n.head&&(n.head.xflags=255&l,n.head.os=l>>8),512&n.flags&&(k[0]=255&l,k[1]=l>>>8&255,n.check=crc32(n.check,k,2,0)),l=0,u=0,n.mode=5;case 5:if(1024&n.flags){for(;u<16;){
if(0===s)break e;s--,l+=a[o++]<<u,u+=8}n.length=l,n.head&&(n.head.extra_len=l),512&n.flags&&(k[0]=255&l,k[1]=l>>>8&255,n.check=crc32(n.check,k,2,0)),l=0,u=0}else n.head&&(n.head.extra=null);n.mode=6;case 6:if(1024&n.flags&&((p=n.length)>s&&(p=s),p&&(n.head&&(T=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),arraySet(n.head.extra,a,o,p,T)),512&n.flags&&(n.check=crc32(n.check,a,p,o)),s-=p,o+=p,n.length-=p),n.length))break e;n.length=0,n.mode=7;case 7:if(2048&n.flags){if(0===s)break e;p=0;do{T=a[o+p++],n.head&&T&&n.length<65536&&(n.head.name+=String.fromCharCode(T))}while(T&&p<s);if(512&n.flags&&(n.check=crc32(n.check,a,p,o)),s-=p,o+=p,T)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=8;case 8:if(4096&n.flags){if(0===s)break e;p=0;do{T=a[o+p++],n.head&&T&&n.length<65536&&(n.head.comment+=String.fromCharCode(T))}while(T&&p<s);if(512&n.flags&&(n.check=crc32(n.check,a,p,o)),s-=p,o+=p,T)break e}else n.head&&(n.head.comment=null);n.mode=9;case 9:
if(512&n.flags){for(;u<16;){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}if(l!==(65535&n.check)){e.msg="header crc mismatch",n.mode=Is;break}l=0,u=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=xs;break;case 10:for(;u<32;){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}e.adler=n.check=zswap32(l),l=0,u=0,n.mode=11;case 11:if(0===n.havedict)return e.next_out=i,e.avail_out=c,e.next_in=o,e.avail_in=s,n.hold=l,n.bits=u,2;e.adler=n.check=1,n.mode=xs;case xs:if(5===t||6===t)break e;case 13:if(n.last){l>>>=7&u,u-=7&u,n.mode=27;break}for(;u<3;){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}switch(n.last=1&l,u-=1,3&(l>>>=1)){case 0:n.mode=14;break;case 1:if(fixedtables(n),n.mode=20,6===t){l>>>=2,u-=2;break e}break;case 2:n.mode=17;break;case 3:e.msg="invalid block type",n.mode=Is}l>>>=2,u-=2;break;case 14:for(l>>>=7&u,u-=7&u;u<32;){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}if((65535&l)!=(l>>>16^65535)){e.msg="invalid stored block lengths",n.mode=Is;break}if(n.length=65535&l,l=0,u=0,
n.mode=15,6===t)break e;case 15:n.mode=16;case 16:if(p=n.length){if(p>s&&(p=s),p>c&&(p=c),0===p)break e;arraySet(r,a,o,p,i),s-=p,o+=p,c-=p,i+=p,n.length-=p;break}n.mode=xs;break;case 17:for(;u<14;){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}if(n.nlen=257+(31&l),l>>>=5,u-=5,n.ndist=1+(31&l),l>>>=5,u-=5,n.ncode=4+(15&l),l>>>=4,u-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=Is;break}n.have=0,n.mode=18;case 18:for(;n.have<n.ncode;){for(;u<3;){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}n.lens[F[n.have++]]=7&l,l>>>=3,u-=3}for(;n.have<19;)n.lens[F[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,C={bits:n.lenbits},S=inflate_table(0,n.lens,0,19,n.lencode,0,n.work,C),n.lenbits=C.bits,S){e.msg="invalid code lengths set",n.mode=Is;break}n.have=0,n.mode=19;case 19:for(;n.have<n.nlen+n.ndist;){for(;b=(A=n.lencode[l&(1<<n.lenbits)-1])>>>16&255,v=65535&A,!((y=A>>>24)<=u);){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}if(v<16)l>>>=y,u-=y,n.lens[n.have++]=v;else{if(16===v){
for(_=y+2;u<_;){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}if(l>>>=y,u-=y,0===n.have){e.msg="invalid bit length repeat",n.mode=Is;break}T=n.lens[n.have-1],p=3+(3&l),l>>>=2,u-=2}else if(17===v){for(_=y+3;u<_;){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}u-=y,T=0,p=3+(7&(l>>>=y)),l>>>=3,u-=3}else{for(_=y+7;u<_;){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}u-=y,T=0,p=11+(127&(l>>>=y)),l>>>=7,u-=7}if(n.have+p>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=Is;break}for(;p--;)n.lens[n.have++]=T}}if(n.mode===Is)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=Is;break}if(n.lenbits=9,C={bits:n.lenbits},S=inflate_table(1,n.lens,0,n.nlen,n.lencode,0,n.work,C),n.lenbits=C.bits,S){e.msg="invalid literal/lengths set",n.mode=Is;break}if(n.distbits=6,n.distcode=n.distdyn,C={bits:n.distbits},S=inflate_table(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,C),n.distbits=C.bits,S){e.msg="invalid distances set",n.mode=Is;break}if(n.mode=20,6===t)break e;case 20:n.mode=21;case 21:
if(s>=6&&c>=258){e.next_out=i,e.avail_out=c,e.next_in=o,e.avail_in=s,n.hold=l,n.bits=u,inflate_fast(e,m),i=e.next_out,r=e.output,c=e.avail_out,o=e.next_in,a=e.input,s=e.avail_in,l=n.hold,u=n.bits,n.mode===xs&&(n.back=-1);break}for(n.back=0;b=(A=n.lencode[l&(1<<n.lenbits)-1])>>>16&255,v=65535&A,!((y=A>>>24)<=u);){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}if(b&&0==(240&b)){for(w=y,D=b,E=v;b=(A=n.lencode[E+((l&(1<<w+D)-1)>>w)])>>>16&255,v=65535&A,!(w+(y=A>>>24)<=u);){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}l>>>=w,u-=w,n.back+=w}if(l>>>=y,u-=y,n.back+=y,n.length=v,0===b){n.mode=26;break}if(32&b){n.back=-1,n.mode=xs;break}if(64&b){e.msg="invalid literal/length code",n.mode=Is;break}n.extra=15&b,n.mode=22;case 22:if(n.extra){for(_=n.extra;u<_;){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}n.length+=l&(1<<n.extra)-1,l>>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=23;case 23:for(;b=(A=n.distcode[l&(1<<n.distbits)-1])>>>16&255,v=65535&A,!((y=A>>>24)<=u);){if(0===s)break e;s--,l+=a[o++]<<u,
u+=8}if(0==(240&b)){for(w=y,D=b,E=v;b=(A=n.distcode[E+((l&(1<<w+D)-1)>>w)])>>>16&255,v=65535&A,!(w+(y=A>>>24)<=u);){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}l>>>=w,u-=w,n.back+=w}if(l>>>=y,u-=y,n.back+=y,64&b){e.msg="invalid distance code",n.mode=Is;break}n.offset=v,n.extra=15&b,n.mode=24;case 24:if(n.extra){for(_=n.extra;u<_;){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}n.offset+=l&(1<<n.extra)-1,l>>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=Is;break}n.mode=25;case 25:if(0===c)break e;if(p=m-c,n.offset>p){if((p=n.offset-p)>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=Is;break}p>n.wnext?(p-=n.wnext,h=n.wsize-p):h=n.wnext-p,p>n.length&&(p=n.length),f=n.window}else f=r,h=i-n.offset,p=n.length;p>c&&(p=c),c-=p,n.length-=p;do{r[i++]=f[h++]}while(--p);0===n.length&&(n.mode=21);break;case 26:if(0===c)break e;r[i++]=n.length,c--,n.mode=21;break;case 27:if(n.wrap){for(;u<32;){if(0===s)break e;s--,l|=a[o++]<<u,u+=8}if(m-=c,
e.total_out+=m,n.total+=m,m&&(e.adler=n.check=n.flags?crc32(n.check,r,m,i-m):adler32(n.check,r,m,i-m)),m=c,(n.flags?l:zswap32(l))!==n.check){e.msg="incorrect data check",n.mode=Is;break}l=0,u=0}n.mode=28;case 28:if(n.wrap&&n.flags){for(;u<32;){if(0===s)break e;s--,l+=a[o++]<<u,u+=8}if(l!==(4294967295&n.total)){e.msg="incorrect length check",n.mode=Is;break}l=0,u=0}n.mode=29;case 29:S=1;break e;case Is:S=-3;break e;case 31:return-4;case 32:default:return Rs}return e.next_out=i,e.avail_out=c,e.next_in=o,e.avail_in=s,n.hold=l,n.bits=u,(n.wsize||m!==e.avail_out&&n.mode<Is&&(n.mode<27||4!==t))&&function updatewindow(e,t,n,a){var r,o=e.state;return null===o.window&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=new Ki(o.wsize)),a>=o.wsize?(arraySet(o.window,t,n-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((r=o.wsize-o.wnext)>a&&(r=a),arraySet(o.window,t,n-a,r,o.wnext),(a-=r)?(arraySet(o.window,t,n-a,a,0),o.wnext=a,o.whave=o.wsize):(o.wnext+=r,o.wnext===o.wsize&&(o.wnext=0),
o.whave<o.wsize&&(o.whave+=r))),0}(e,e.output,e.next_out,m-e.avail_out),d-=e.avail_in,m-=e.avail_out,e.total_in+=d,e.total_out+=m,n.total+=m,n.wrap&&m&&(e.adler=n.check=n.flags?crc32(n.check,r,m,e.next_out-m):adler32(n.check,r,m,e.next_out-m)),e.data_type=n.bits+(n.last?64:0)+(n.mode===xs?128:0)+(20===n.mode||15===n.mode?256:0),(0===d&&0===m||4===t)&&0===S&&(S=-5),S}var Ps;function Zlib$1(e){if(e<1||e>7)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 bufferSet(e,t){for(var n=0;n<e.length;n++)this[t+n]=e[n]}Zlib$1.prototype.init=function(e,t,n,a,r){var o;switch(this.windowBits=e,this.level=t,this.memLevel=n,this.strategy=a,3!==this.mode&&4!==this.mode||(this.windowBits+=16),7===this.mode&&(this.windowBits+=32),5!==this.mode&&6!==this.mode||(this.windowBits=-this.windowBits),this.strm=new ZStream,this.mode){case 1:case 3:case 5:
o=function deflateInit2(e,t,n,a,r,o){if(!e)return vs;var i=1;if(-1===t&&(t=6),a<0?(i=0,a=-a):a>15&&(i=2,a-=16),r<1||r>9||8!==n||a<8||a>15||t<0||t>9||o<0||o>4)return err(e,vs);8===a&&(a=9);var s=new DeflateState;return e.state=s,s.strm=e,s.wrap=i,s.gzhead=null,s.w_bits=a,s.w_size=1<<s.w_bits,s.w_mask=s.w_size-1,s.hash_bits=r+7,s.hash_size=1<<s.hash_bits,s.hash_mask=s.hash_size-1,s.hash_shift=~~((s.hash_bits+3-1)/3),s.window=new Ki(2*s.w_size),s.head=new Ji(s.hash_size),s.prev=new Ji(s.w_size),s.lit_bufsize=1<<r+6,s.pending_buf_size=4*s.lit_bufsize,s.pending_buf=new Ki(s.pending_buf_size),s.d_buf=1*s.lit_bufsize,s.l_buf=3*s.lit_bufsize,s.level=t,s.strategy=o,s.method=n,deflateReset(e)}(this.strm,this.level,8,this.windowBits,this.memLevel,this.strategy);break;case 2:case 4:case 6:case 7:o=inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}0===o?(this.write_in_progress=!1,this.init_done=!0):this._error(o)},Zlib$1.prototype.params=function(){
throw new Error("deflateParams Not supported")},Zlib$1.prototype._writeCheck=function(){if(!this.init_done)throw new Error("write before init");if(0===this.mode)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")},Zlib$1.prototype.write=function(e,t,n,a,r,o,i){this._writeCheck(),this.write_in_progress=!0;var s=this;return _.nextTick((function(){s.write_in_progress=!1;var c=s._write(e,t,n,a,r,o,i);s.callback(c[0],c[1]),s.pending_close&&s.close()})),this},Zlib$1.prototype.writeSync=function(e,t,n,a,r,o,i){return this._writeCheck(),this._write(e,t,n,a,r,o,i)},Zlib$1.prototype._write=function(e,t,n,a,r,o,i){if(this.write_in_progress=!0,0!==e&&1!==e&&2!==e&&3!==e&&4!==e&&5!==e)throw new Error("Invalid flush value");null==t&&(t=new Buffer$1(0),a=0,n=0),r._set?r.set=r._set:r.set=bufferSet;var s,c=this.strm;switch(c.avail_in=a,c.input=t,c.next_in=n,c.avail_out=i,c.output=r,
c.next_out=o,this.mode){case 1:case 3:case 5:s=deflate(c,e);break;case 7:case 2:case 4:case 6:s=inflate(c,e);break;default:throw new Error("Unknown mode "+this.mode)}return 1!==s&&0!==s&&this._error(s),this.write_in_progress=!1,[c.avail_in,c.avail_out]},Zlib$1.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,1===this.mode||3===this.mode||5===this.mode?function deflateEnd(e){var t;return e&&e.state?42!==(t=e.state.status)&&69!==t&&73!==t&&91!==t&&t!==Es&&t!==Ts&&t!==Ss?err(e,vs):(e.state=null,t===Ts?err(e,-3):0):vs}(this.strm):function inflateEnd(e){if(!e||!e.state)return Rs;var t=e.state;return t.window&&(t.window=null),e.state=null,0}(this.strm),this.mode=0)},Zlib$1.prototype.reset=function(){switch(this.mode){case 1:case 5:Ps=deflateReset(this.strm);break;case 2:case 6:Ps=inflateReset(this.strm)}0!==Ps&&this._error(Ps)},Zlib$1.prototype._error=function(e){this.onerror(Yi[e]+": "+this.strm.msg,e),this.write_in_progress=!1,
this.pending_close&&this.close()};var Os=Object.freeze({__proto__:null,NONE:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8,Zlib:Zlib$1});var Bs={};Object.keys(Os).forEach((function(e){Bs[e]=Os[e]})),Bs.Z_MIN_WINDOWBITS=8,Bs.Z_MAX_WINDOWBITS=15,Bs.Z_DEFAULT_WINDOWBITS=15,Bs.Z_MIN_CHUNK=64,Bs.Z_MAX_CHUNK=1/0,Bs.Z_DEFAULT_CHUNK=16384,Bs.Z_MIN_MEMLEVEL=1,Bs.Z_MAX_MEMLEVEL=9,Bs.Z_DEFAULT_MEMLEVEL=8,Bs.Z_MIN_LEVEL=-1,Bs.Z_MAX_LEVEL=9,Bs.Z_DEFAULT_LEVEL=Bs.Z_DEFAULT_COMPRESSION;var Us={Z_OK:Bs.Z_OK,Z_STREAM_END:Bs.Z_STREAM_END,Z_NEED_DICT:Bs.Z_NEED_DICT,Z_ERRNO:Bs.Z_ERRNO,
Z_STREAM_ERROR:Bs.Z_STREAM_ERROR,Z_DATA_ERROR:Bs.Z_DATA_ERROR,Z_MEM_ERROR:Bs.Z_MEM_ERROR,Z_BUF_ERROR:Bs.Z_BUF_ERROR,Z_VERSION_ERROR:Bs.Z_VERSION_ERROR};function gzip(e,t,n){return"function"==typeof t&&(n=t,t={}),function zlibBuffer(e,t,n){var a=[],r=0;function flow(){for(var t;null!==(t=e.read());)a.push(t),r+=t.length;e.once("readable",flow)}function onError(t){e.removeListener("end",onEnd),e.removeListener("readable",flow),n(t)}function onEnd(){var t=Buffer$1.concat(a,r);a=[],n(null,t),e.close()}e.on("error",onError),e.on("end",onEnd),e.end(t),flow()}(new Gzip(t),e,n)}function Gzip(e){if(!(this instanceof Gzip))return new Gzip(e);Zlib.call(this,e,Bs.GZIP)}function Zlib(e,t){if(this._opts=e=e||{},this._chunkSize=e.chunkSize||Bs.Z_DEFAULT_CHUNK,Transform.call(this,e),e.flush&&e.flush!==Bs.Z_NO_FLUSH&&e.flush!==Bs.Z_PARTIAL_FLUSH&&e.flush!==Bs.Z_SYNC_FLUSH&&e.flush!==Bs.Z_FULL_FLUSH&&e.flush!==Bs.Z_FINISH&&e.flush!==Bs.Z_BLOCK)throw new Error("Invalid flush flag: "+e.flush)
;if(this._flushFlag=e.flush||Bs.Z_NO_FLUSH,e.chunkSize&&(e.chunkSize<Bs.Z_MIN_CHUNK||e.chunkSize>Bs.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+e.chunkSize);if(e.windowBits&&(e.windowBits<Bs.Z_MIN_WINDOWBITS||e.windowBits>Bs.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+e.windowBits);if(e.level&&(e.level<Bs.Z_MIN_LEVEL||e.level>Bs.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+e.level);if(e.memLevel&&(e.memLevel<Bs.Z_MIN_MEMLEVEL||e.memLevel>Bs.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+e.memLevel);if(e.strategy&&e.strategy!=Bs.Z_FILTERED&&e.strategy!=Bs.Z_HUFFMAN_ONLY&&e.strategy!=Bs.Z_RLE&&e.strategy!=Bs.Z_FIXED&&e.strategy!=Bs.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+e.strategy);if(e.dictionary&&!Buffer$1.isBuffer(e.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._binding=new Bs.Zlib(t);var n=this;this._hadError=!1,this._binding.onerror=function(e,t){n._binding=null,n._hadError=!0
;var a=new Error(e);a.errno=t,a.code=Bs.codes[t],n.emit("error",a)};var a=Bs.Z_DEFAULT_COMPRESSION;"number"==typeof e.level&&(a=e.level);var r=Bs.Z_DEFAULT_STRATEGY;"number"==typeof e.strategy&&(r=e.strategy),this._binding.init(e.windowBits||Bs.Z_DEFAULT_WINDOWBITS,a,e.memLevel||Bs.Z_DEFAULT_MEMLEVEL,r,e.dictionary),this._buffer=new Buffer$1(this._chunkSize),this._offset=0,this._closed=!1,this._level=a,this._strategy=r,this.once("end",this.close)}Object.keys(Us).forEach((function(e){Us[Us[e]]=e})),_o(Zlib,Transform),Zlib.prototype.params=function(e,t,n){if(e<Bs.Z_MIN_LEVEL||e>Bs.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+e);if(t!=Bs.Z_FILTERED&&t!=Bs.Z_HUFFMAN_ONLY&&t!=Bs.Z_RLE&&t!=Bs.Z_FIXED&&t!=Bs.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+t);if(this._level!==e||this._strategy!==t){var a=this;this.flush(Bs.Z_SYNC_FLUSH,(function(){a._binding.params(e,t),a._hadError||(a._level=e,a._strategy=t,n&&n())}))}else _.nextTick(n)},
Zlib.prototype.reset=function(){return this._binding.reset()},Zlib.prototype._flush=function(e){this._transform(new Buffer$1(0),"",e)},Zlib.prototype.flush=function(e,t){var n=this._writableState;if(("function"==typeof e||void 0===e&&!t)&&(t=e,e=Bs.Z_FULL_FLUSH),n.ended)t&&_.nextTick(t);else if(n.ending)t&&this.once("end",t);else if(n.needDrain){var a=this;this.once("drain",(function(){a.flush(t)}))}else this._flushFlag=e,this.write(new Buffer$1(0),"",t)},Zlib.prototype.close=function(e){if(e&&_.nextTick(e),!this._closed){this._closed=!0,this._binding.close();var t=this;_.nextTick((function(){t.emit("close")}))}},Zlib.prototype._transform=function(e,t,n){var a,r=this._writableState,o=(r.ending||r.ended)&&(!e||r.length===e.length);if(null===!e&&!Buffer$1.isBuffer(e))return n(new Error("invalid input"));o?a=Bs.Z_FINISH:(a=this._flushFlag,e.length>=r.length&&(this._flushFlag=this._opts.flush||Bs.Z_NO_FLUSH)),this._processChunk(e,a,n)},Zlib.prototype._processChunk=function(e,t,n){
var a=e&&e.length,r=this._chunkSize-this._offset,o=0,i=this,s="function"==typeof n;if(!s){var c,l=[],u=0;this.on("error",(function(e){c=e}));do{var d=this._binding.writeSync(t,e,o,a,this._buffer,this._offset,r)}while(!this._hadError&&callback(d[0],d[1]));if(this._hadError)throw c;var m=Buffer$1.concat(l,u);return this.close(),m}var p=this._binding.write(t,e,o,a,this._buffer,this._offset,r);function callback(c,d){if(!i._hadError){var m=r-d;if(function assert$1(e,t){if(!e)throw new Error(t)}(m>=0,"have should not go down"),m>0){var p=i._buffer.slice(i._offset,i._offset+m);i._offset+=m,s?i.push(p):(l.push(p),u+=p.length)}if((0===d||i._offset>=i._chunkSize)&&(r=i._chunkSize,i._offset=0,i._buffer=new Buffer$1(i._chunkSize)),0===d){if(o+=a-c,a=c,!s)return!0;var h=i._binding.write(t,e,o,a,i._buffer,i._offset,i._chunkSize);return h.callback=callback,void(h.buffer=e)}if(!s)return!1;n()}}p.buffer=e,p.callback=callback},_o((function Deflate(e){if(!(this instanceof Deflate))return new Deflate(e)
;Zlib.call(this,e,Bs.DEFLATE)}),Zlib),_o((function Inflate(e){if(!(this instanceof Inflate))return new Inflate(e);Zlib.call(this,e,Bs.INFLATE)}),Zlib),_o(Gzip,Zlib),_o((function Gunzip(e){if(!(this instanceof Gunzip))return new Gunzip(e);Zlib.call(this,e,Bs.GUNZIP)}),Zlib),_o((function DeflateRaw(e){if(!(this instanceof DeflateRaw))return new DeflateRaw(e);Zlib.call(this,e,Bs.DEFLATERAW)}),Zlib),_o((function InflateRaw(e){if(!(this instanceof InflateRaw))return new InflateRaw(e);Zlib.call(this,e,Bs.INFLATERAW)}),Zlib),_o((function Unzip(e){if(!(this instanceof Unzip))return new Unzip(e);Zlib.call(this,e,Bs.UNZIP)}),Zlib);const js=["content-encoding","x-original-content-encoding","x-content-encoding-over-network"],zs=["gzip","br","deflate"],qs=["image","audio","video"],$s=[NetworkRequest.TYPES.Document,NetworkRequest.TYPES.Script,NetworkRequest.TYPES.Stylesheet,NetworkRequest.TYPES.XHR,NetworkRequest.TYPES.Fetch,NetworkRequest.TYPES.EventSource]
;class ResponseCompression extends FRGatherer{meta={supportedModes:["timespan","navigation"],dependencies:{DevtoolsLog:DevtoolsLog.symbol}};static filterUnoptimizedResponses(e){const t=[];return e.forEach((e=>{if(e.sessionId)return;const n=e.mimeType,a=e.resourceType||NetworkRequest.TYPES.Other,r=e.resourceSize,o=!(n&&qs.some((e=>n.startsWith(e))))&&$s.includes(a),i=e.url.startsWith("chrome-extension:");if(!o||!r||!e.finished||i||!e.transferSize||304===e.statusCode)return;(e.responseHeaders||[]).find((e=>js.includes(e.name.toLowerCase())&&zs.includes(e.value)))||t.push({requestId:e.requestId,url:e.url,mimeType:n,transferSize:e.transferSize,resourceSize:r,gzipSize:0})})),t}async _getArtifact(e,t){const n=e.driver.defaultSession,a=ResponseCompression.filterUnoptimizedResponses(t);return Promise.all(a.map((e=>fetchResponseBodyFromCache(n,e.requestId).then((t=>t?new Promise(((n,a)=>gzip(t,((t,r)=>{if(t)return a(t);e.gzipSize=Buffer$1.byteLength(r,"utf8"),n(e)
})))):e)).catch((t=>(Qo.captureException(t,{tags:{gatherer:"ResponseCompression"},extra:{url:UrlUtils.elideDataURI(e.url)},level:"warning"}),e.gzipSize=void 0,e))))))}async getArtifact(e){const t=e.dependencies.DevtoolsLog,n=await go.request(t,e);return this._getArtifact(e,n)}async afterPass(e,t){return this._getArtifact({...e,dependencies:{}},t.networkRecords)}}var Vs=Object.freeze({__proto__:null,default:ResponseCompression});function installMediaListener(){window.___linkMediaChanges=[],Object.defineProperty(HTMLLinkElement.prototype,"media",{set:function(e){const t={href:this.href,media:e,msSinceHTMLEnd:Date.now()-performance.timing.responseEnd,matches:window.matchMedia(e).matches};window.___linkMediaChanges.push(t),this.setAttribute("media",e)}})}async function collectTagsThatBlockFirstPaint(){const e=window.___linkMediaChanges;try{const t=[...document.querySelectorAll("link")].filter((e=>{
const t="stylesheet"===e.rel&&window.matchMedia(e.media).matches&&!e.disabled,n="import"===e.rel&&!e.hasAttribute("async");return t||n})).map((t=>({tagName:"LINK",url:t.href,href:t.href,rel:t.rel,media:t.media,disabled:t.disabled,mediaChanges:e.filter((e=>e.href===t.href))}))),n=[...document.querySelectorAll("head script[src]")].filter((e=>!(e instanceof SVGScriptElement)&&!(e.hasAttribute("async")||e.hasAttribute("defer")||/^data:/.test(e.src)||/^blob:/.test(e.src)||"module"===e.getAttribute("type")))).map((e=>({tagName:"SCRIPT",url:e.src,src:e.src})));return[...t,...n]}catch(e){throw new Error(`${"Unable to gather Scripts/Stylesheets/HTML Imports on the page"}: ${e.message}`)}}class TagsBlockingFirstPaint extends FRGatherer{meta={supportedModes:["navigation"],dependencies:{DevtoolsLog:DevtoolsLog.symbol}};static _filteredAndIndexedByUrl(e){const t=new Map;for(const n of e){if(!n.finished)continue;const e="parser"===n.initiator.type,a=/(css|script)/.test(n.mimeType)&&e,r=n.failed
;(n.mimeType&&n.mimeType.includes("html")||a||r&&e)&&t.set(n.url,n)}return t}static async findBlockingTags(e,t){const n=t.reduce(((e,t)=>Math.min(e,t.networkEndTime)),1/0),a=await e.executionContext.evaluate(collectTagsThatBlockFirstPaint,{args:[]}),r=TagsBlockingFirstPaint._filteredAndIndexedByUrl(t),o=[];for(const e of a){const t=r.get(e.url);if(!t||t.isLinkPreload)continue;let a,i=t.networkEndTime;if("LINK"===e.tagName){const r=e.mediaChanges.filter((e=>!e.matches)).map((e=>e.msSinceHTMLEnd));if(r.length>0){const e=Math.min(...r),a=Math.max(t.networkRequestTime,n+e/1e3);i=Math.min(i,a)}a=e.mediaChanges}const{tagName:s,url:c}=e;o.push({tag:{tagName:s,url:c,mediaChanges:a},transferSize:t.transferSize,startTime:t.networkRequestTime,endTime:i}),r.delete(e.url)}return o}async startSensitiveInstrumentation(e){const{executionContext:t}=e.driver;await t.evaluateOnNewDocument(installMediaListener,{args:[]})}async getArtifact(e){const t=e.dependencies.DevtoolsLog,n=await go.request(t,e)
;return TagsBlockingFirstPaint.findBlockingTags(e.driver,n)}afterPass(e,t){return TagsBlockingFirstPaint.findBlockingTags(e.driver,t.networkRecords)}}var Ws=Object.freeze({__proto__:null,default:TagsBlockingFirstPaint});
/**
* @license Copyright 2020 Google Inc. All Rights Reserved.
* 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.
*/function kebabCaseToCamelCase(e){return e.replace(/(-\w)/g,(e=>e[1].toUpperCase()))}function getObservedDeviceMetrics(){const e=kebabCaseToCamelCase(window.screen.orientation.type);return{width:window.outerWidth,height:window.outerHeight,screenOrientation:{type:e,angle:window.screen.orientation.angle},deviceScaleFactor:window.devicePixelRatio}}function getScreenshotAreaSize(){return{width:window.innerWidth,height:window.innerHeight}}function waitForDoubleRaf(){return new Promise((e=>{requestAnimationFrame((()=>requestAnimationFrame(e)))}))}var Hs=Object.freeze({__proto__:null,default:class FullPageScreenshot extends FRGatherer{meta={supportedModes:["snapshot","timespan","navigation"]};async _resizeViewport(e,t){const n=e.driver.defaultSession,a=await n.sendCommand("Page.getLayoutMetrics"),r=Math.round(t.height*a.cssContentSize.height/a.cssLayoutViewport.clientHeight),o=Math.min(r,16383),i=new NetworkMonitor(e.driver.targetManager),s=waitForNetworkIdle(n,i,{
pretendDCLAlreadyFired:!0,networkQuietThresholdMs:1e3,busyEvent:"network-critical-busy",idleEvent:"network-critical-idle",isIdle:e=>e.isCriticalIdle()});await i.enable(),await n.sendCommand("Emulation.setDeviceMetricsOverride",{mobile:t.mobile,deviceScaleFactor:1,height:o,width:0}),await Promise.race([new Promise((e=>setTimeout(e,5e3))),s.promise]),s.cancel(),await i.disable(),await e.driver.executionContext.evaluate(waitForDoubleRaf,{args:[]})}async _takeScreenshot(e){const t="data:image/webp;base64,"+(await e.driver.defaultSession.sendCommand("Page.captureScreenshot",{format:"webp",quality:30})).data,n=await e.driver.executionContext.evaluate(getScreenshotAreaSize,{args:[],useIsolation:!0});return{data:t,width:n.width,height:n.height}}async _resolveNodes(e){function resolveNodes(){const e={};if(!window.__lighthouseNodesDontTouchOrAllVarianceGoesAway)return e;const t=window.__lighthouseNodesDontTouchOrAllVarianceGoesAway;for(const[n,a]of t.entries()){const t=getBoundingClientRect(n)
;e[a]=t}return e}function resolveNodesInPage({useIsolation:t}){return e.driver.executionContext.evaluate(resolveNodes,{args:[],useIsolation:t,deps:[Qa.getBoundingClientRect]})}return{...await resolveNodesInPage({useIsolation:!1}),...await resolveNodesInPage({useIsolation:!0})}}async getArtifact(e){const t=e.driver.defaultSession,n=e.driver.executionContext,a=e.settings,r=!a.screenEmulation.disabled,o={...a.screenEmulation};try{if(!a.usePassiveGathering){if(!r){const e=await n.evaluate(getObservedDeviceMetrics,{args:[],useIsolation:!0,deps:[kebabCaseToCamelCase]});o.height=e.height,o.width=e.width,o.deviceScaleFactor=e.deviceScaleFactor,o.mobile="mobile"===a.formFactor}await this._resizeViewport(e,o)}const[i,s]=await Promise.all([this._takeScreenshot(e),this._resolveNodes(e)]);return{screenshot:i,nodes:s}}finally{a.usePassiveGathering||(r?await emulate(t,a):await t.sendCommand("Emulation.setDeviceMetricsOverride",{mobile:o.mobile,deviceScaleFactor:o.deviceScaleFactor,height:o.height,
width:0}))}}}});class GlobalListeners extends FRGatherer{meta={supportedModes:["snapshot","timespan","navigation"]};static _filterForAllowlistedTypes(e){return"pagehide"===e.type||"unload"===e.type||"visibilitychange"===e.type}getListenerIndentifier(e){return`${e.type}:${e.scriptId}:${e.columnNumber}:${e.lineNumber}`}dedupeListeners(e){const t=new Set;return e.filter((e=>{const n=this.getListenerIndentifier(e);return!t.has(n)&&(t.add(n),!0)}))}async getArtifact(e){const t=e.driver.defaultSession,{result:{objectId:n}}=await t.sendCommand("Runtime.evaluate",{expression:"window",returnByValue:!1});if(!n)throw new Error("Error fetching information about the global object");const{listeners:a}=await t.sendCommand("DOMDebugger.getEventListeners",{objectId:n}),r=a.filter(GlobalListeners._filterForAllowlistedTypes).map((e=>{const{type:t,scriptId:n,lineNumber:a,columnNumber:r}=e;return{type:t,scriptId:n,lineNumber:a,columnNumber:r}}));return this.dedupeListeners(r)}}var Gs=Object.freeze({
__proto__:null,default:GlobalListeners});function collectIFrameElements(){const e=window.__HTMLElementBoundingClientRect||window.HTMLElement.prototype.getBoundingClientRect;return getElementsInDocument("iframe").map((t=>{const n=e.call(t),{top:a,bottom:r,left:o,right:i,width:s,height:c}=n;return{id:t.id,src:t.src,clientRect:{top:a,bottom:r,left:o,right:i,width:s,height:c},isPositionFixed:isPositionFixed(t),node:getNodeDetails(t)}}))}var Ys=Object.freeze({__proto__:null,default:class IFrameElements extends FRGatherer{meta={supportedModes:["snapshot","navigation"]};async getArtifact(e){const t=e.driver;return await t.executionContext.evaluate(collectIFrameElements,{args:[],useIsolation:!0,deps:[Qa.getElementsInDocument,Qa.isPositionFixed,Qa.getNodeDetails]})}}});function hasFontSizeDeclaration(e){return!!e&&!!e.cssProperties.find((({name:e})=>"font-size"===e))}function findMostSpecificMatchedCSSRule(e=[],t){let n;for(let a=e.length-1;a>=0;a--)if(t(e[a].rule.style)){n=e[a].rule;break}
if(n)return{type:"Regular",...n.style,parentRule:{origin:n.origin,selectors:n.selectorList.selectors}}}function getEffectiveFontRule({attributesStyle:e,inlineStyle:t,matchedCSSRules:n,inherited:a}){if(hasFontSizeDeclaration(t))return{type:"Inline",...t};const r=findMostSpecificMatchedCSSRule(n,hasFontSizeDeclaration);if(r)return r;if(hasFontSizeDeclaration(e))return{type:"Attributes",...e};const o=function findInheritedCSSRule(e=[]){for(const{inlineStyle:t,matchedCSSRules:n}of e){if(hasFontSizeDeclaration(t))return{type:"Inline",...t};const e=findMostSpecificMatchedCSSRule(n,hasFontSizeDeclaration);if(e)return e}}(a);return o||void 0}function getTextLength(e){return e?Array.from(e.trim()).length:0}class FontSize$1 extends FRGatherer{meta={supportedModes:["snapshot","navigation"]};static async fetchFailingNodeSourceRules(e,t){const n=t.sort(((e,t)=>t.textLength-e.textLength)).slice(0,50);await e.sendCommand("DOM.getDocument",{depth:-1,pierce:!0})
;const{nodeIds:a}=await e.sendCommand("DOM.pushNodesByBackendIdsToFrontend",{backendNodeIds:n.map((e=>e.parentNode.backendNodeId))}),r=n.map((async(t,n)=>{t.nodeId=a[n];try{const r=await async function fetchSourceRule(e,t){const n=getEffectiveFontRule(await e.sendCommand("CSS.getMatchedStylesForNode",{nodeId:t}));if(n)return{type:n.type,range:n.range,styleSheetId:n.styleSheetId,parentRule:n.parentRule&&{origin:n.parentRule.origin,selectors:n.parentRule.selectors}}}(e,a[n]);t.cssRule=r}catch(e){t.cssRule=void 0}return t})),o=await Promise.all(r),i=o.reduce(((e,{textLength:t})=>e+t),0);return{analyzedFailingNodesData:o,analyzedFailingTextLength:i}}getTextNodesInLayoutFromSnapshot(e){const t=e.strings,getString=e=>t[e],n=[];for(let a=0;a<e.documents.length;a++){const r=e.documents[a];if(!(r.nodes.backendNodeId&&r.nodes.parentIndex&&r.nodes.attributes&&r.nodes.nodeName))throw new Error("Unexpected response from DOMSnapshot.captureSnapshot.");const o=r.nodes,getParentData=e=>({
backendNodeId:o.backendNodeId[e],attributes:o.attributes[e].map(getString),nodeName:getString(o.nodeName[e])});for(const e of r.textBoxes.layoutIndex){const a=t[r.layout.text[e]];if(!a)continue;const i=r.layout.nodeIndex[e],s=r.layout.styles[e],[c]=s,l=parseFloat(t[c]),u=o.parentIndex[i],d=o.parentIndex[u],m=getParentData(u),p=void 0!==d?getParentData(d):void 0;n.push({nodeIndex:i,backendNodeId:o.backendNodeId[i],fontSize:l,textLength:getTextLength(a),parentNode:{...m,parentNode:p}})}}return n}findFailingNodes(e){const t=[];let n=0,a=0;for(const r of this.getTextNodesInLayoutFromSnapshot(e))n+=r.textLength,r.fontSize<12&&(a+=r.textLength,t.push({nodeId:0,parentNode:r.parentNode,textLength:r.textLength,fontSize:r.fontSize}));return{totalTextLength:n,failingTextLength:a,failingNodes:t}}async getArtifact(e){const t=e.driver.defaultSession,n=new Map,onStylesheetAdded=e=>n.set(e.header.styleSheetId,e.header);t.on("CSS.styleSheetAdded",onStylesheetAdded),
await Promise.all([t.sendCommand("DOMSnapshot.enable"),t.sendCommand("DOM.enable"),t.sendCommand("CSS.enable")]);const a=await t.sendCommand("DOMSnapshot.captureSnapshot",{computedStyles:["font-size"]}),{totalTextLength:r,failingTextLength:o,failingNodes:i}=this.findFailingNodes(a),{analyzedFailingNodesData:s,analyzedFailingTextLength:c}=await FontSize$1.fetchFailingNodeSourceRules(t,i);return t.off("CSS.styleSheetAdded",onStylesheetAdded),s.filter((e=>e.cssRule?.styleSheetId)).forEach((e=>e.cssRule.stylesheet=n.get(e.cssRule.styleSheetId))),await Promise.all([t.sendCommand("DOMSnapshot.disable"),t.sendCommand("DOM.disable"),t.sendCommand("CSS.disable")]),{analyzedFailingNodesData:s,analyzedFailingTextLength:c,failingTextLength:o,totalTextLength:r}}}var Ks=Object.freeze({__proto__:null,default:FontSize$1,getEffectiveFontRule,findMostSpecificMatchedCSSRule});function getClientRect(e){const t=e.getBoundingClientRect();return{top:t.top,bottom:t.bottom,left:t.left,right:t.right}}
function getPosition(e,t){if(e.parentElement&&"PICTURE"===e.parentElement.tagName){return window.getComputedStyle(e.parentElement).getPropertyValue("position")}return t.getPropertyValue("position")}function getHTMLImages(e){return e.filter((e=>"img"===e.localName)).map((e=>{const t=window.getComputedStyle(e),n=!!e.parentElement&&"PICTURE"===e.parentElement.tagName,a=!n&&!e.srcset;return{src:e.currentSrc,srcset:e.srcset,displayedWidth:e.width,displayedHeight:e.height,clientRect:getClientRect(e),attributeWidth:e.getAttribute("width"),attributeHeight:e.getAttribute("height"),naturalDimensions:a?{width:e.naturalWidth,height:e.naturalHeight}:void 0,cssRules:void 0,computedStyles:{position:getPosition(e,t),objectFit:t.getPropertyValue("object-fit"),imageRendering:t.getPropertyValue("image-rendering")},isCss:!1,isPicture:n,loading:e.loading,isInShadowDOM:e.getRootNode()instanceof ShadowRoot,node:getNodeDetails(e)}}))}function getCSSImages(e){const t=/^url\("([^"]+)"\)$/,n=[]
;for(const a of e){const e=window.getComputedStyle(a);if(!e.backgroundImage||!t.test(e.backgroundImage))continue;const r=e.backgroundImage.match(t)[1];n.push({src:r,srcset:"",displayedWidth:a.clientWidth,displayedHeight:a.clientHeight,clientRect:getClientRect(a),attributeWidth:null,attributeHeight:null,naturalDimensions:void 0,cssEffectiveRules:void 0,computedStyles:{position:getPosition(a,e),objectFit:"",imageRendering:e.getPropertyValue("image-rendering")},isCss:!0,isPicture:!1,isInShadowDOM:a.getRootNode()instanceof ShadowRoot,node:getNodeDetails(a)})}return n}function collectImageElementInfo(){const e=getElementsInDocument();return getHTMLImages(e).concat(getCSSImages(e))}function determineNaturalSize(e){return new Promise(((t,n)=>{const a=new Image;a.addEventListener("error",(e=>n(new Error("determineNaturalSize failed img load")))),a.addEventListener("load",(()=>{t({naturalWidth:a.naturalWidth,naturalHeight:a.naturalHeight})})),a.src=e}))}function findSizeDeclaration(e,t){
if(!e||!e.cssProperties)return;const n=e.cssProperties.find((({name:e})=>e===t));return n?n.value:void 0}function getEffectiveSizingRule({attributesStyle:e,inlineStyle:t,matchedCSSRules:n},a){const r=findSizeDeclaration(t,a);if(r)return r;const o=findSizeDeclaration(e,a);if(o)return o;const i=function findMostSpecificCSSRule(e,t){const n=findMostSpecificMatchedCSSRule(e,(e=>findSizeDeclaration(e,t)));if(n)return findSizeDeclaration(n,t)}(n,a);return i||null}function getPixelArea(e){return e.naturalDimensions?e.naturalDimensions.height*e.naturalDimensions.width:e.displayedHeight*e.displayedWidth}var Js=Object.freeze({__proto__:null,default:class ImageElements extends FRGatherer{meta={supportedModes:["snapshot","timespan","navigation"]};constructor(){super(),this._naturalSizeCache=new Map}async fetchElementWithSizeInformation(e,t){const n=t.src;let a=this._naturalSizeCache.get(n);if(!a)try{e.defaultSession.setNextProtocolTimeout(250),
a=await e.executionContext.evaluate(determineNaturalSize,{args:[n],useIsolation:!0}),this._naturalSizeCache.set(n,a)}catch(e){}a&&(t.naturalDimensions={width:a.naturalWidth,height:a.naturalHeight})}async fetchSourceRules(e,t,n){try{const{nodeId:a}=await e.sendCommand("DOM.pushNodeByPathToFrontend",{path:t});if(!a)return;const r=await e.sendCommand("CSS.getMatchedStylesForNode",{nodeId:a}),o=getEffectiveSizingRule(r,"width"),i=getEffectiveSizingRule(r,"height"),s=getEffectiveSizingRule(r,"aspect-ratio");n.cssEffectiveRules={width:o,height:i,aspectRatio:s}}catch(e){if(/No node.*found/.test(e.message))return;throw e}}async collectExtraDetails(e,t){let n=!1;setTimeout((e=>n=!0),5e3);let a=0;for(const r of t)n?a++:(r.isInShadowDOM||r.isCss||await this.fetchSourceRules(e.defaultSession,r.node.devtoolsNodePath,r),(r.isPicture||r.isCss||r.srcset)&&await this.fetchElementWithSizeInformation(e,r))
;n&&Log.warn("ImageElements",`Reached gathering budget of 5s. Skipped extra details for ${a}/${t.length}`)}async getArtifact(e){const t=e.driver.defaultSession,n=e.driver.executionContext,a=await n.evaluate(collectImageElementInfo,{args:[],useIsolation:!0,deps:[Qa.getElementsInDocument,Qa.getBoundingClientRect,Qa.getNodeDetails,getClientRect,getPosition,getHTMLImages,getCSSImages]});return await Promise.all([t.sendCommand("DOM.enable"),t.sendCommand("CSS.enable"),t.sendCommand("DOM.getDocument",{depth:-1,pierce:!0})]),a.sort(((e,t)=>getPixelArea(t)-getPixelArea(e))),await this.collectExtraDetails(e.driver,a),await Promise.all([t.sendCommand("DOM.disable"),t.sendCommand("CSS.disable")]),a}}});function collectElements(){const e=[],t=new Map,n=new Map,a=getElementsInDocument("form");for(const e of a)t.set(e,{id:e.id,name:e.name,autocomplete:e.autocomplete,node:getNodeDetails(e)});const r=getElementsInDocument("label");for(const e of r)n.set(e,{for:e.htmlFor,node:getNodeDetails(e)})
;const o=getElementsInDocument("textarea, input, select");for(const a of o){const r=a.form,o=r?[...t.keys()].indexOf(r):void 0,i=[...a.labels||[]].map((e=>[...n.keys()].indexOf(e)));let s;a.readOnly||(s=!a.dispatchEvent(new ClipboardEvent("paste",{cancelable:!0}))),e.push({parentFormIndex:o,labelIndices:i,id:a.id,name:a.name,type:a.type,placeholder:a instanceof HTMLSelectElement?void 0:a.placeholder,autocomplete:{property:a.autocomplete,attribute:a.getAttribute("autocomplete"),prediction:a.getAttribute("autofill-prediction")},preventsPaste:s,node:getNodeDetails(a)})}return{inputs:e,forms:[...t.values()],labels:[...n.values()]}}var Zs=Object.freeze({__proto__:null,default:class Inputs extends FRGatherer{meta={supportedModes:["snapshot","navigation"]};async getArtifact(e){return e.driver.executionContext.evaluate(collectElements,{args:[],useIsolation:!0,deps:[Qa.getElementsInDocument,Qa.getNodeDetails]})}}});var Xs=Object.freeze({__proto__:null,
default:class InspectorIssues extends FRGatherer{meta={supportedModes:["timespan","navigation"],dependencies:{DevtoolsLog:DevtoolsLog.symbol}};constructor(){super(),this._issues=[],this._onIssueAdded=this.onIssueAdded.bind(this)}onIssueAdded(e){this._issues.push(e.issue)}async startInstrumentation(e){const t=e.driver.defaultSession;t.on("Audits.issueAdded",this._onIssueAdded),await t.sendCommand("Audits.enable")}async stopInstrumentation(e){const t=e.driver.defaultSession;t.off("Audits.issueAdded",this._onIssueAdded),await t.sendCommand("Audits.disable")}async _getArtifact(e){const t={attributionReportingIssue:[],blockedByResponseIssue:[],clientHintIssue:[],contentSecurityPolicyIssue:[],corsIssue:[],deprecationIssue:[],federatedAuthRequestIssue:[],genericIssue:[],heavyAdIssue:[],lowTextContrastIssue:[],mixedContentIssue:[],navigatorUserAgentIssue:[],quirksModeIssue:[],cookieIssue:[],sharedArrayBufferIssue:[],twaQualityEnforcement:[]},n=Object.keys(t);for(const a of n){
const n=`${a}Details`,r=this._issues.map((e=>e.details[n]));for(const n of r){if(!n)continue;const r="request"in n&&n.request&&n.request.requestId;r?e.find((e=>e.requestId===r))&&t[a].push(n):t[a].push(n)}}return t}async getArtifact(e){const t=e.dependencies.DevtoolsLog,n=await go.request(t,e);return this._getArtifact(n)}async afterPass(e,t){return await this.stopInstrumentation({...e,dependencies:{}}),this._getArtifact(t.networkRecords)}}});class InstallabilityErrors extends FRGatherer{meta={supportedModes:["snapshot","navigation"]};static async getInstallabilityErrors(e){const t={msg:"Get webapp installability errors",id:"lh:gather:getInstallabilityErrors"};Log.time(t);const n=(await e.sendCommand("Page.getInstallabilityErrors")).installabilityErrors;return Log.timeEnd(t),{errors:n}}async getArtifact(e){const t=e.driver;try{return await InstallabilityErrors.getInstallabilityErrors(t.defaultSession)}catch{return{errors:[{errorId:"protocol-timeout",errorArguments:[]}]}}}}
var Qs=Object.freeze({__proto__:null,default:InstallabilityErrors});var ec=Object.freeze({__proto__:null,default:class JsUsage extends FRGatherer{meta={supportedModes:["snapshot","timespan","navigation"]};constructor(){super(),this._scriptUsages=[]}async startInstrumentation(e){const t=e.driver.defaultSession;await t.sendCommand("Profiler.enable"),await t.sendCommand("Profiler.startPreciseCoverage",{detailed:!1})}async stopInstrumentation(e){const t=e.driver.defaultSession,n=await t.sendCommand("Profiler.takePreciseCoverage");this._scriptUsages=n.result,await t.sendCommand("Profiler.stopPreciseCoverage"),await t.sendCommand("Profiler.disable")}async getArtifact(){const e={};for(const t of this._scriptUsages)""!==t.url&&"_lighthouse-eval.js"!==t.url&&"__puppeteer_evaluation_script__"!==t.url&&(e[t.scriptId]=t);return e}}});function hasOwnProperty(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var tc=Array.isArray||function(e){
return"[object Array]"===Object.prototype.toString.call(e)};function stringifyPrimitive(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}}function stringify(e,t,n,a){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?map(nc(e),(function(a){var r=encodeURIComponent(stringifyPrimitive(a))+n;return tc(e[a])?map(e[a],(function(e){return r+encodeURIComponent(stringifyPrimitive(e))})).join(t):r+encodeURIComponent(stringifyPrimitive(e[a]))})).join(t):a?encodeURIComponent(stringifyPrimitive(a))+n+encodeURIComponent(stringifyPrimitive(e)):""}function map(e,t){if(e.map)return e.map(t);for(var n=[],a=0;a<e.length;a++)n.push(t(e[a],a));return n}var nc=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t};function parse$1(e,t,n,a){t=t||"&",n=n||"=";var r={};if("string"!=typeof e||0===e.length)return r;var o=/\+/g;e=e.split(t);var i=1e3
;a&&"number"==typeof a.maxKeys&&(i=a.maxKeys);var s=e.length;i>0&&s>i&&(s=i);for(var c=0;c<s;++c){var l,u,d,m,p=e[c].replace(o,"%20"),h=p.indexOf(n);h>=0?(l=p.substr(0,h),u=p.substr(h+1)):(l=p,u=""),d=decodeURIComponent(l),m=decodeURIComponent(u),hasOwnProperty(r,d)?tc(r[d])?r[d].push(m):r[d]=[r[d],m]:r[d]=m}return r}var ac={encode:stringify,stringify,decode:parse$1,parse:parse$1},rc=getAugmentedNamespace(Object.freeze({__proto__:null,stringify,parse:parse$1,default:ac,encode:stringify,decode:parse$1})),oc=function trim(e){return e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")};function Link(e){if(!(this instanceof Link))return new Link(e);this.refs=[]}Link.pattern=/(?:\<([^\>]+)\>)((\s*;\s*([a-z\*]+)=(("[^"]+")|('[^']+')|([^\,\;]+)))*)(\s*,\s*|$)/gi,Link.attrPattern=/([a-z\*]+)=(?:(?:"([^"]+)")|(?:'([^']+)')|([^\,\;]+))/gi,Link.isCompatibleEncoding=function(e){return/^utf-?8|ascii|utf-?16-?le|ucs-?2|base-?64|latin-?1$/i.test(e)},Link.formatExtendedAttribute=function(e,t){
var n=(t.encoding||"utf-8").toUpperCase();return e+"="+n+"'"+(t.language||"en")+"'"+(Buffer$1.isBuffer(t.value)&&Link.isCompatibleEncoding(n)?t.value.toString(n):Buffer$1.isBuffer(t.value)?t.value.toString("hex").replace(/[0-9a-f]{2}/gi,"%$1"):rc.escape(t.value))},Link.formatAttribute=function(e,t){return/\*$/.test(e)||"string"!=typeof t?Link.formatExtendedAttribute(e,t):(/[^a-z]/i.test(t)&&(t='"'+(t=rc.escape(t).replace(/%20/g," ").replace(/%2C/g,",").replace(/%3B/g,";"))+'"'),e+"="+t)},Link.parseExtendedValue=function(e){var t=/([^']+)?(?:'([^']+)')?(.+)/.exec(e);return{language:t[2].toLowerCase(),encoding:Link.isCompatibleEncoding(t[1])?null:t[1].toLowerCase(),value:Link.isCompatibleEncoding(t[1])?rc.unescape(t[3]):t[3]}},Link.setAttr=function(e,t,n){return"rel"===t&&null!=e[t]||(Array.isArray(e[t])?e[t].push(n):null!=e[t]?e[t]=[e[t],n]:e[t]=n),e},Link.parseParams=function(e,t){var n={},a=/(.+)\?(.+)/gi.exec(t);if(!a)return e;a=a[2].split("&");for(var r=0;r<a.length;r++){
var o=a[r].split("=");n[o[0]]=o[1]}return Link.setAttr(e,"params",n),e},Link.parseAttrs=function(e,t){var n=null,a="",r="",o="",i=/<(.*)>;\s*(.*)/gi.exec(t);for(i&&(o=i[2],e=Link.parseParams(e,i[1]));n=Link.attrPattern.exec(o);)a=n[1].toLowerCase(),r=n[4]||n[3]||n[2],/\*$/.test(a)?Link.setAttr(e,a,Link.parseExtendedValue(r)):/%/.test(r)?Link.setAttr(e,a,rc.unescape(r)):Link.setAttr(e,a,r);return e},Link.parse=function(e){return(new Link).parse(e)},Link.prototype={constructor:Link,rel:function(e){for(var t=[],n=0;n<this.refs.length;n++)this.refs[n].rel===e&&t.push(this.refs[n]);return t},get:function(e,t){e=e.toLowerCase();for(var n=[],a=0;a<this.refs.length;a++)this.refs[a][e]===t&&n.push(this.refs[a]);return n},set:function(e){return this.refs.push(e),this},has:function(e,t){return null!=this.get(e,t)},parse:function(e){e=oc(e).replace(/\r?\n[\x20\x09]+/g,"");for(var t=null;t=Link.pattern.exec(e);){var n=Link.parseAttrs({uri:t[1]},t[0]);this.refs.push(n)}return this},
toString:function(){for(var e=[],t="",n=null,a=0;a<this.refs.length;a++)n=this.refs[a],t=Object.keys(this.refs[a]).reduce((function(e,t){return"uri"===t?e:e+"; "+Link.formatAttribute(t,n[t])}),"<"+n.uri+">"),e.push(t);return e.join(", ")}};var ic=Link;const sc=makeComputedArtifact(class MainResource{static async compute_(e,t){const{mainDocumentUrl:n}=e.URL;if(!n)throw new Error("mainDocumentUrl must exist to get the main resource");const a=await go.request(e.devtoolsLog,t),r=NetworkAnalyzer.findResourceForUrl(a,n);if(!r)throw new Error("Unable to identify the main resource");return r}},["URL","devtoolsLog"]);function normalizeUrlOrNull(e,t){try{return new URL(e,t).href}catch(e){return null}}function getLinkElementsInDOM(){const e=getElementsInDocument("link"),t=[];for(const n of e){if(!(n instanceof HTMLLinkElement))continue;const e=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:e,
source:a,node:getNodeDetails(n)})}return t}class LinkElements extends FRGatherer{constructor(){super(),this.meta={supportedModes:["timespan","navigation"],dependencies:{DevtoolsLog:DevtoolsLog.symbol}}}static getLinkElementsInDOM(e){return e.driver.executionContext.evaluate(getLinkElementsInDOM,{args:[],useIsolation:!0,deps:[Qa.getNodeDetails,Qa.getElementsInDocument]})}static async getLinkElementsInHeaders(e,t){const n=await sc.request({devtoolsLog:t,URL:e.baseArtifacts.URL},e),a=[];for(const t of n.responseHeaders)if("link"===t.name.toLowerCase())for(const n of ic.parse(t.value).refs)a.push({rel:n.rel||"",href:normalizeUrlOrNull(n.uri,e.baseArtifacts.URL.finalDisplayedUrl),hrefRaw:n.uri||"",hreflang:n.hreflang||"",as:n.as||"",crossOrigin:(r=n.crossorigin,"anonymous"===r?"anonymous":"use-credentials"===r?"use-credentials":null),source:"headers",node:null});var r;return a}async _getArtifact(e,t){
const n=await LinkElements.getLinkElementsInDOM(e),a=await LinkElements.getLinkElementsInHeaders(e,t),r=n.concat(a);for(const e of r)e.rel=e.rel.toLowerCase();return r}async afterPass(e,t){return this._getArtifact({...e,dependencies:{}},t.devtoolsLog)}async getArtifact(e){return this._getArtifact(e,e.dependencies.DevtoolsLog)}}var cc=Object.freeze({__proto__:null,default:LinkElements});var lc=Object.freeze({__proto__:null,default:class MainDocumentContent extends FRGatherer{meta={supportedModes:["navigation"],dependencies:{DevtoolsLog:DevtoolsLog.symbol}};async _getArtifact(e,t){const n=await sc.request({devtoolsLog:t,URL:e.baseArtifacts.URL},e);return fetchResponseBodyFromCache(e.driver.defaultSession,n.requestId)}async getArtifact(e){const t=e.dependencies.DevtoolsLog;return this._getArtifact(e,t)}async afterPass(e,t){return this._getArtifact({...e,dependencies:{}},t.devtoolsLog)}}});function collectMetaElements(){const e={getElementsInDocument,getNodeDetails}
;return e.getElementsInDocument("head meta").map((t=>{const getAttribute=e=>{const n=t.attributes.getNamedItem(e);if(n)return n.value};return{name:t.name.toLowerCase(),content:t.content,property:getAttribute("property"),httpEquiv:t.httpEquiv?t.httpEquiv.toLowerCase():void 0,charset:getAttribute("charset"),node:e.getNodeDetails(t)}}))}var uc=Object.freeze({__proto__:null,default:class MetaElements extends FRGatherer{meta={supportedModes:["snapshot","navigation"]};getArtifact(e){return e.driver.executionContext.evaluate(collectMetaElements,{args:[],useIsolation:!0,deps:[Qa.getElementsInDocument,Qa.getNodeDetails]})}}});function collectAllScriptElements(){return getElementsInDocument("script").map((e=>({type:e.type||null,src:e.src||null,id:e.id||null,async:e.async,defer:e.defer,source:e.closest("head")?"head":"body",node:getNodeDetails(e)})))}var dc=Object.freeze({__proto__:null,default:class ScriptElements extends FRGatherer{meta={supportedModes:["timespan","navigation"],dependencies:{
DevtoolsLog:DevtoolsLog.symbol}};async _getArtifact(e,t){const n=e.driver.executionContext,a=await n.evaluate(collectAllScriptElements,{args:[],useIsolation:!0,deps:[Qa.getNodeDetails,Qa.getElementsInDocument]}),r=t.filter((e=>e.resourceType===NetworkRequest.TYPES.Script)).filter((e=>!e.sessionId));for(let e=0;e<r.length;e++){const t=r[e];a.find((e=>e.src===t.url))||a.push({type:null,src:t.url,id:null,async:!1,defer:!1,source:"network",node:null})}return a}async getArtifact(e){const t=e.dependencies.DevtoolsLog,n=await go.request(t,e);return this._getArtifact(e,n)}async afterPass(e,t){const n=t.networkRecords;return this._getArtifact({...e,dependencies:{}},n)}}});var mc=Object.freeze({__proto__:null,default:class Scripts extends FRGatherer{meta={supportedModes:["timespan","navigation"]};_scriptParsedEvents=[];_scriptContents=[];_mainSessionId=null;constructor(){super(),this.onScriptParsed=this.onScriptParsed.bind(this)}onScriptParsed(e){(function isLighthouseRuntimeEvaluateScript(e){
return!e.embedderName||e.hasSourceURL&&"_lighthouse-eval.js"===e.url})(e)||this._scriptParsedEvents.push(e)}async startInstrumentation(e){const t=e.driver.defaultSession;t.on("Debugger.scriptParsed",this.onScriptParsed),await t.sendCommand("Debugger.enable")}async stopInstrumentation(e){const t=e.driver.defaultSession,n=e.baseArtifacts.HostFormFactor;t.off("Debugger.scriptParsed",this.onScriptParsed),await t.sendCommand("Debugger.enable"),this._scriptContents=await async function runInSeriesOrParallel(e,t,n){if(n){const n=[];for(const a of e){const e=await t(a);n.push(e)}return n}{const n=e.map(t);return await Promise.all(n)}}(this._scriptParsedEvents,(({scriptId:e})=>t.sendCommand("Debugger.getScriptSource",{scriptId:e}).then((e=>e.scriptSource)).catch((()=>{}))),"mobile"===n),await t.sendCommand("Debugger.disable")}async getArtifact(){return this._scriptParsedEvents.map(((e,t)=>({name:e.url,...e,url:e.embedderName||e.url,content:this._scriptContents[t]})))}}})
;function getEmbeddedContent(){const e={getElementsInDocument,getNodeDetails};return e.getElementsInDocument("object, embed, applet").map((t=>({tagName:t.tagName,type:t.getAttribute("type"),src:t.getAttribute("src"),data:t.getAttribute("data"),code:t.getAttribute("code"),params:Array.from(t.children).filter((e=>"PARAM"===e.tagName)).map((e=>({name:e.getAttribute("name")||"",value:e.getAttribute("value")||""}))),node:e.getNodeDetails(t)})))}var pc=Object.freeze({__proto__:null,default:class EmbeddedContent extends FRGatherer{meta={supportedModes:["snapshot","navigation"]};getArtifact(e){return e.driver.executionContext.evaluate(getEmbeddedContent,{args:[],deps:[Qa.getElementsInDocument,Qa.getNodeDetails]})}}});var gc=Object.freeze({__proto__:null,default:class RobotsTxt$1 extends FRGatherer{meta={supportedModes:["snapshot","navigation"]};async getArtifact(e){const{finalDisplayedUrl:t}=e.baseArtifacts.URL,n=new URL("/robots.txt",t).href
;return e.driver.fetcher.fetchResource(n).catch((e=>({status:null,content:null,errorMessage:e.message})))}}});function rectContainsPoint(e,{x:t,y:n}){return e.left<=t&&e.right>=t&&e.top<=n&&e.bottom>=n}function rectContains(e,t){return t.top>=e.top&&t.right<=e.right&&t.bottom<=e.bottom&&t.left>=e.left}function getRectCenterPoint(e){return{x:e.left+e.width/2,y:e.top+e.height/2}}function rectsTouchOrOverlap(e,t){return e.left<=t.right&&t.left<=e.right&&e.top<=t.bottom&&t.top<=e.bottom}function getBoundingRectWithPadding(e,t){if(0===e.length)throw new Error("No rects to take bounds of");let n=Number.MAX_VALUE,a=-Number.MAX_VALUE,r=Number.MAX_VALUE,o=-Number.MAX_VALUE;for(const t of e)n=Math.min(n,t.left),a=Math.max(a,t.right),r=Math.min(r,t.top),o=Math.max(o,t.bottom);const i=t/2;return n-=i,a+=i,r-=i,o+=i,{left:n,right:a,top:r,bottom:o,width:a-n,height:o-r}}function getRectOverlapArea(e,t){const n=Math.min(e.bottom,t.bottom)-Math.max(e.top,t.top);if(n<=0)return 0
;const a=Math.min(e.right,t.right)-Math.max(e.left,t.left);return a<=0?0:a*n}function getRectArea(e){return e.width*e.height}function allRectsContainedWithinEachOther(e,t){for(const n of e)for(const e of t)if(!rectContains(n,e)&&!rectContains(e,n))return!1;return!0}const hc=["button","a","input","textarea","select","option","[role=button]","[role=checkbox]","[role=link]","[role=menuitem]","[role=menuitemcheckbox]","[role=menuitemradio]","[role=option]","[role=scrollbar]","[role=slider]","[role=spinbutton]"].join(",");function elementIsVisible(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function getClientRects(e){const t=Array.from(e.getClientRects()).map((e=>{const{width:t,height:n,left:a,top:r,right:o,bottom:i}=e;return{width:t,height:n,left:a,top:r,right:o,bottom:i}}));for(const n of e.children)t.push(...getClientRects(n));return t}function elementHasAncestorTapTarget(e,t){
return!!e.parentElement&&(!!e.parentElement.matches(t)||elementHasAncestorTapTarget(e.parentElement,t))}function hasTextNodeSiblingsFormingTextBlock(e){if(!e.parentElement)return!1;const t=e.parentElement,n=e.textContent||"";if((t.textContent||"").length-n.length<5)return!1;for(const t of e.parentElement.childNodes){if(t===e)continue;const n=(t.textContent||"").trim();if(t.nodeType===Node.TEXT_NODE&&n.length>0)return!0}return!1}function elementIsInTextBlock(e){const{display:t}=getComputedStyle(e);return("inline"===t||"inline-block"===t)&&(!!hasTextNodeSiblingsFormingTextBlock(e)||!!e.parentElement&&elementIsInTextBlock(e.parentElement))}function elementCenterIsAtZAxisTop(e,t){const n=window.innerHeight,a=Math.floor(t.y/n)*n;window.scrollY!==a&&window.scrollTo(0,a);const r=document.elementFromPoint(t.x,t.y-window.scrollY);return r===e||e.contains(r)}function disableFixedAndStickyElementPointerEvents(e){return document.querySelectorAll("*").forEach((t=>{
const n=getComputedStyle(t).position;"fixed"!==n&&"sticky"!==n||t.classList.add(e)})),function undo(){Array.from(document.getElementsByClassName(e)).forEach((t=>{t.classList.remove(e)}))}}function gatherTapTargets(e,t){const n=[];window.scrollTo(0,0);const a=getElementsInDocument(e),r=[];a.forEach((t=>{elementHasAncestorTapTarget(t,e)||elementIsInTextBlock(t)||elementIsVisible(t)&&r.push({tapTargetElement:t,clientRects:getClientRects(t)})}));const o=disableFixedAndStickyElementPointerEvents(t),i=[];r.forEach((({tapTargetElement:e,clientRects:t})=>{let n=t.filter((e=>0!==e.width&&0!==e.height));n=n.filter((t=>{const n=getRectCenterPoint(t);return elementCenterIsAtZAxisTop(e,n)})),n.length>0&&i.push({tapTargetElement:e,visibleClientRects:n})}));for(const{tapTargetElement:e,visibleClientRects:t}of i)n.push({clientRects:t,href:e.href||"",node:getNodeDetails(e)});return o(),n}function gatherTapTargetsAndResetScroll(e,t){const n={x:window.scrollX,y:window.scrollY};try{
return gatherTapTargets(e,t)}finally{window.scrollTo(n.x,n.y)}}var fc=Object.freeze({__proto__:null,default:class TapTargets$1 extends FRGatherer{constructor(){super(),this.meta={supportedModes:["snapshot","navigation"]}}async addStyleRule(e,t){const n=await e.sendCommand("Page.getFrameTree"),{styleSheetId:a}=await e.sendCommand("CSS.createStyleSheet",{frameId:n.frameTree.frame.id}),r=`.${t} { pointer-events: none !important }`;return await e.sendCommand("CSS.setStyleSheetText",{styleSheetId:a,text:r}),a}async removeStyleRule(e,t){await e.sendCommand("CSS.setStyleSheetText",{styleSheetId:t,text:""})}async getArtifact(e){const t=e.driver.defaultSession;await t.sendCommand("DOM.enable"),await t.sendCommand("CSS.enable");const n="lighthouse-disable-pointer-events",a=await this.addStyleRule(t,n),r=await e.driver.executionContext.evaluate(gatherTapTargetsAndResetScroll,{args:[hc,n],useIsolation:!0,
deps:[Qa.getNodeDetails,Qa.getElementsInDocument,disableFixedAndStickyElementPointerEvents,elementIsVisible,elementHasAncestorTapTarget,elementCenterIsAtZAxisTop,getClientRects,hasTextNodeSiblingsFormingTextBlock,elementIsInTextBlock,getRectCenterPoint,Qa.getNodePath,Qa.getNodeSelector,Qa.getNodeLabel,gatherTapTargets]});return await this.removeStyleRule(t,a),await t.sendCommand("CSS.disable"),await t.sendCommand("DOM.disable"),r}}});var yc=Object.freeze({__proto__:null,default:class ServiceWorker$1 extends FRGatherer{meta={supportedModes:["navigation"]};async beforePass(e){return this.getArtifact({...e,dependencies:{}})}async afterPass(){}async getArtifact(e){const t=e.driver.defaultSession,{versions:n}=await getServiceWorkerVersions(t),{registrations:a}=await getServiceWorkerRegistrations(t);return{versions:n,registrations:a}}}});var bc=Object.freeze({__proto__:null,default:class SourceMaps extends FRGatherer{meta={supportedModes:["timespan","navigation"]};constructor(){super(),
this._scriptParsedEvents=[],this.onScriptParsed=this.onScriptParsed.bind(this)}async fetchSourceMap(e,t){const n=await e.fetcher.fetchResource(t,{timeout:1500});if(null===n.content)throw new Error(`Failed fetching source map (${n.status})`);return JSON.parse(n.content)}parseSourceMapFromDataUrl(e){const t=Buffer.from(e.split(",")[1],"base64");return JSON.parse(t.toString())}onScriptParsed(e){e.sourceMapURL&&this._scriptParsedEvents.push(e)}_resolveUrl(e,t){try{return new URL(e,t).href}catch(e){return}}async _retrieveMapFromScriptParsedEvent(e,t){if(!t.sourceMapURL)throw new Error("precondition failed: event.sourceMapURL should exist");const n=t.sourceMapURL.startsWith("data:"),a=t.url,r=n?t.sourceMapURL:this._resolveUrl(t.sourceMapURL,t.url);if(!r)return{scriptId:t.scriptId,scriptUrl:a,errorMessage:`Could not resolve map url: ${t.sourceMapURL}`};const o=n?void 0:r;try{const i=n?this.parseSourceMapFromDataUrl(r):await this.fetchSourceMap(e,r)
;if("number"!=typeof i.version)throw new Error("Map has no numeric `version` field");if(!Array.isArray(i.sources))throw new Error("Map has no `sources` list");if("string"!=typeof i.mappings)throw new Error("Map has no `mappings` field");return i.sections&&(i.sections=i.sections.filter((e=>e.map))),{scriptId:t.scriptId,scriptUrl:a,sourceMapUrl:o,map:i}}catch(e){return{scriptId:t.scriptId,scriptUrl:a,sourceMapUrl:o,errorMessage:e.toString()}}}async startSensitiveInstrumentation(e){const t=e.driver.defaultSession;t.on("Debugger.scriptParsed",this.onScriptParsed),await t.sendCommand("Debugger.enable")}async stopSensitiveInstrumentation(e){const t=e.driver.defaultSession;await t.sendCommand("Debugger.disable"),t.off("Debugger.scriptParsed",this.onScriptParsed)}async getArtifact(e){const t=this._scriptParsedEvents.map((t=>this._retrieveMapFromScriptParsedEvent(e.driver,t)));return Promise.all(t)}}});async function detectLibraries(){
const e=[],t=d41d8cd98f00b204e9800998ecf8427e_LibraryDetectorTests;for(const[n,a]of Object.entries(t))try{let t;const r=new Promise((e=>t=setTimeout((()=>e(!1)),1e3))),o=await Promise.race([a.test(window),r]);t&&clearTimeout(t),o&&e.push({id:a.id,name:n,version:o.version,npm:a.npm})}catch(e){}return e}class Stacks extends FRGatherer{constructor(){super(),this.meta={supportedModes:["snapshot","navigation"]}}static async collectStacks(e){const t={msg:"Collect stacks",id:"lh:gather:collectStacks"};Log.time(t);const n=(await e.evaluate(detectLibraries,{args:[],
deps:['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.getElementsByTagName("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!(!e.google||!e.google.maps)&&{version:e.google.maps.version||UNKNOWN_VERSION}}},jQuery:{id:"jquery",icon:"jquery",url:"http://jquery.com",npm:"jquery",test:function(e){var t=e.jQuery||e.$;return!!(t&&t.fn&&t.fn.jquery)&&{version:t.fn.jquery.replace(/[^\\d+\\.+]/g,"")||UNKNOWN_VERSION}}},"jQuery (Fast path)":{id:"jquery-fast",icon:"jquery",url:"http://jquery.com",npm:"jquery",test:function(e){var t=e.jQuery||e.$;return!(!t||!t.fn)&&{version:UNKNOWN_VERSION}}},"jQuery UI":{id:"jquery_ui",icon:"jquery_ui",url:"http://jqueryui.com",npm:"jquery-ui",test:function(e){var t=e.jQuery||e.$||e.$jq||e.$j;if(t&&t.fn&&t.fn.jquery&&t.ui){for(var o="accordion,datepicker,dialog,draggable,droppable,progressbar,resizable,selectable,slider,menu,grid,tabs".split(","),n=[],r=0;r<o.length;r++)t.ui[o[r]]&&n.push(o[r].substr(0,1).toUpperCase()+o[r].substr(1));return{version:t.ui.version||UNKNOWN_VERSION,details:n.length?"Plugins used: "+n.join(","):""}}return!1}},Dojo:{id:"dojo",icon:"dojo",url:"http://dojotoolkit.org",npm:"dojo",test:function(e){return!(!e.dojo||!e.dojo.delegate)&&{version:e.dojo.version?e.dojo.version.toString():UNKNOWN_VERSION,details:"Details: "+(e.dijit?"Uses Dijit":"none")}}},Prototype:{id:"prototype",icon:"prototype",url:"http://prototypejs.org",test:function(e){return!(!e.Prototype||!e.Prototype.BrowserFeatures)&&{version:e.Prototype.Version||UNKNOWN_VERSION}}},Scriptaculous:{id:"scriptaculous",icon:"scriptaculous",url:"http://script.aculo.us",test:function(e){return!(!e.Scriptaculous||!e.Scriptaculous.load)&&{version:e.Scriptaculous.Version||UNKNOWN_VERSION}}},MooTools:{id:"mootools",icon:"mootools",url:"https://mootools.net/",test:function(e){return!(!e.MooTools||!e.MooTools.build)&&{version:e.MooTools.version||UNKNOWN_VERSION}}},Spry:{id:"spry",icon:"spry",url:"http://labs.adobe.com/technologies/spry",test:function(e){return!(!e.Spry||!e.Spry.Data)&&{version:UNKNOWN_VERSION}}},"YUI 2":{id:"yui",icon:"yui",url:"http://developer.yahoo.com/yui/2/",test:function(e){return!(!e.YAHOO||!e.YAHOO.util)&&{version:e.YAHOO.VERSION||UNKNOWN_VERSION}}},"YUI 3":{id:"yui3",icon:"yui3",url:"https://yuilibrary.com/",npm:"yui",test:function(e){return!(!e.YUI||!e.YUI.Env)&&{version:e.YUI.version||UNKNOWN_VERSION}}},Qooxdoo:{id:"qooxdoo",icon:"qooxdoo",url:"http://www.qooxdoo.org/",npm:"qooxdoo",test:function(e){return!(!e.qx||!e.qx.Bootstrap)&&{version:UNKNOWN_VERSION}}},"Ext JS":{id:"extjs",icon:"extjs",url:"https://www.sencha.com/products/extjs/",test:function(e){return e.Ext&&e.Ext.versions?{version:e.Ext.versions.core.version}:!!e.Ext&&{version:e.Ext.version||UNKNOWN_VERSION}}},Ezoic:{id:"ezoic",icon:"ezoic",url:"https://www.ezoic.com/",test:function(e){return!(!e.__ez||!e.__ez.template)&&{version:UNKNOWN_VERSION}}},base2:{id:"base2",icon:"base2",url:"http://code.google.com/p/base2",test:function(e){return!(!e.base2||!e.base2.dom)&&{version:e.base2.version||UNKNOWN_VERSION}}},"Closure Library":{id:"closure",icon:"closure",url:"https://developers.google.com/closure/library/",npm:"google-closure-library",test:function(e){return!(!e.goog||!e.goog.provide)&&{version:UNKNOWN_VERSION}}},"Rapha&euml;l":{id:"raphael",icon:"raphael",url:"http://dmitrybaranovskiy.github.io/raphael/",test:function(e){return!(!e.Raphael||!e.Raphael.circle)&&{version:e.Raphael.version||UNKNOWN_VERSION}}},React:{id:"react",icon:"react",url:"https://reactjs.org/",npm:"react",test:function(e){function t(e){return null!=e&&null!=e._reactRootContainer}var o=document.getElementById("react-root"),n=document.querySelector("*[data-reactroot]");return!!(t(document.body)||t(document.body.firstElementChild)||null!=document.createTreeWalker(document.body,NodeFilter.SHOW_ELEMENT,(function(e){return t(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP})).nextNode()||o&&o.innerText.length>0||n||e.React&&e.React.Component)&&{version:e.React&&e.React.version||UNKNOWN_VERSION}}},"React (Fast path)":{id:"react-fast",icon:"react",url:"https://reactjs.org/",npm:"react",test:function(e){function t(e){return null!=e&&null!=e._reactRootContainer}var o=document.getElementById("react-root"),n=document.querySelector("*[data-reactroot]");return!!(t(document.body)||t(document.body.firstElementChild)||o||n||e.React)&&{version:e.React&&e.React.version||UNKNOWN_VERSION}}},"Next.js":{id:"next",icon:"next",url:"https://nextjs.org/",npm:"next",test:function(e){return!(!e.__NEXT_DATA__||!e.__NEXT_DATA__.buildId)&&{version:window.next&&window.next.version||UNKNOWN_VERSION}}},"Next.js (Fast path)":{id:"next-fast",icon:"next",url:"https://nextjs.org/",npm:"next",test:function(e){return!!e.__NEXT_DATA__&&{version:UNKNOWN_VERSION}}},Preact:{id:"preact",icon:"preact",url:"https://preactjs.com/",npm:"preact",test:function(e){var t="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("preactattr");function o(e){return"__k"in e&&"props"in e.__k&&"type"in e.__k||("_component"in e||"__preactattr_"in e||t&&null!=e[t])}function n(e){return null!=e&&o(e)&&e}var r=n(document.body)||n(document.body.firstElementChild);if(r||(r=document.createTreeWalker(document.body,NodeFilter.SHOW_ELEMENT,(function(e){return o(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP})).nextNode()),r||e.preact){var i=UNKNOWN_VERSION;return r&&("__k"in r&&(i="10"),"__preactattr_"in r&&(i="8"),t&&null!=r[t]&&(i="7")),{version:i}}return!1}},"Preact (Fast path)":{id:"preact-fast",icon:"preact",url:"https://preactjs.com/",npm:"preact",test:function(e){var t=UNKNOWN_VERSION;function o(e){return null!=e&&function(e){return null!=e.__k?(t="10",!0):null!=e._component||null!=e.__preactattr_}(e)}return!(!o(document.body)&&!o(document.body.firstElementChild)&&!e.preact)&&{version:t}}},Modernizr:{id:"modernizr",icon:"modernizr",url:"https://modernizr.com/",npm:"modernizr",test:function(e){return!(!e.Modernizr||!e.Modernizr.addTest)&&{version:e.Modernizr._version||UNKNOWN_VERSION}}},"Processing.js":{id:"processingjs",icon:"processingjs",url:"http://processingjs.org",npm:"processing-js",test:function(e){return!(!e.Processing||!e.Processing.box)&&{version:Processing.version||UNKNOWN_VERSION}}},Backbone:{id:"backbone",icon:"backbone",url:"http://backbonejs.org/",npm:"backbone",test:function(e){return!(!e.Backbone||!e.Backbone.Model.extend)&&{version:e.Backbone.VERSION||UNKNOWN_VERSION}}},Leaflet:{id:"leaflet",icon:"leaflet",url:"http://leafletjs.com",npm:"leaflet",test:function(e){return!(!e.L||!e.L.GeoJSON||!e.L.marker&&!e.L.Marker)&&{version:e.L.version||e.L.VERSION||UNKNOWN_VERSION}}},Mapbox:{id:"mapbox",icon:"mapbox",url:"https://www.mapbox.com/",npm:"mapbox-gl",test:function(e){return!!(e.L&&e.L.mapbox&&e.L.mapbox.geocoder)&&{version:e.L.mapbox.VERSION||UNKNOWN_VERSION}}},"Lo-Dash":{id:"lodash",icon:"lodash",url:"https://lodash.com/",npm:"lodash",test:function(e){var t="function"==typeof(t=e._)&&t,o="function"==typeof(o=t&&t.chain)&&o,n=(o||t||function(){return{}})(1);return!(!t||!n.__wrapped__)&&{version:t.VERSION||UNKNOWN_VERSION}}},Underscore:{id:"underscore",icon:"underscore",url:"http://underscorejs.org/",npm:"underscore",test:function(e){return!(!e._||"function"!=typeof e._.tap||d41d8cd98f00b204e9800998ecf8427e_LibraryDetectorTests["Lo-Dash"].test(e))&&{version:e._.VERSION||UNKNOWN_VERSION}}},Sammy:{id:"sammy",icon:"sammy",url:"http://sammyjs.org",test:function(e){return!(!e.Sammy||!e.Sammy.Application.curry)&&{version:e.Sammy.VERSION||UNKNOWN_VERSION}}},Rico:{id:"rico",icon:"rico",url:"http://openrico.sourceforge.net/examples/index.html",test:function(e){return!(!e.Rico||!window.Rico.checkIfComplete)&&{version:e.Rico.Version||UNKNOWN_VERSION}}},MochiKit:{id:"mochikit",icon:"mochikit",url:"https://mochi.github.io/mochikit/",test:function(e){return!(!e.MochiKit||!e.MochiKit.Base.module)&&{version:MochiKit.VERSION||UNKNOWN_VERSION}}},"gRapha&euml;l":{id:"graphael",icon:"graphael",url:"https://github.com/DmitryBaranovskiy/g.raphael",test:function(e){return!(!e.Raphael||!e.Raphael.fn.g)&&{version:UNKNOWN_VERSION}}},Glow:{id:"glow",icon:"glow",url:"http://www.bbc.co.uk/glow/",test:function(e){return e.gloader&&e.gloader.getRequests?{version:UNKNOWN_VERSION}:e.glow&&e.glow.dom?{version:e.glow.VERSION||UNKNOWN_VERSION}:!!e.Glow&&{version:e.Glow.version||UNKNOWN_VERSION}}},"Socket.IO":{id:"socketio",icon:"socketio",url:"https://socket.io/",npm:"socket.io",test:function(e){return!(!e.io||!e.io.sockets&&!e.io.Socket)&&{version:e.io.version||UNKNOWN_VERSION}}},Mustache:{id:"mustache",icon:"mustache",url:"http://mustache.github.io/",npm:"mustache",test:function(e){return!(!e.Mustache||!e.Mustache.to_html)&&{version:e.Mustache.version||UNKNOWN_VERSION}}},"Fabric.js":{id:"fabricjs",icon:"icon38",url:"http://fabricjs.com/",npm:"fabric",test:function(e){return!(!e.fabric||!e.fabric.util)&&{version:e.fabric.version||UNKNOWN_VERSION}}},FuseJS:{id:"fusejs",icon:"fusejs",url:"http://fusejs.io/",npm:"fuse.js",test:function(e){return!!e.Fuse&&{version:UNKNOWN_VERSION}}},"Tween.js":{id:"tweenjs",icon:"icon38",url:"https://github.com/tweenjs/tween.js",npm:"tween.js",test:function(e){return!(!e.TWEEN||!e.TWEEN.Easing)&&{version:UNKNOWN_VERSION}}},SproutCore:{id:"sproutcore",icon:"sproutcore",url:"http://sproutcore.com/",test:function(e){return!(!e.SC||!e.SC.Application)&&{version:UNKNOWN_VERSION}}},"Zepto.js":{id:"zepto",icon:"zepto",url:"http://zeptojs.com",npm:"zepto",test:function(e){return!(!e.Zepto||!e.Zepto.fn)&&{version:UNKNOWN_VERSION}}},"three.js":{id:"threejs",icon:"icon38",url:"https://threejs.org/",npm:"three",test:function(e){return e.THREE&&e.THREE.REVISION?{version:"r"+e.THREE.REVISION}:!!e.THREE&&{version:UNKNOWN_VERSION}}},PhiloGL:{id:"philogl",icon:"philogl",url:"http://www.senchalabs.org/philogl/",npm:"philogl",test:function(e){return!(!e.PhiloGL||!e.PhiloGL.Camera)&&{version:e.PhiloGL.version||UNKNOWN_VERSION}}},CamanJS:{id:"camanjs",icon:"camanjs",url:"http://camanjs.com/",npm:"caman",test:function(e){return e.Caman&&e.Caman.version?{version:e.Caman.version.release}:!!e.Caman&&{version:UNKNOWN_VERSION}}},yepnope:{id:"yepnope",icon:"yepnope",url:"http://yepnopejs.com/",test:function(e){return!(!e.yepnope||!e.yepnope.injectJs)&&{version:UNKNOWN_VERSION}}},LABjs:{id:"labjs",icon:"icon38",url:"https://github.com/getify/LABjs",test:function(e){return!(!e.$LAB||!e.$LAB.setOptions)&&{version:UNKNOWN_VERSION}}},"Head JS":{id:"headjs",icon:"headjs",url:"http://headjs.com/",npm:"headjs",test:function(e){return!(!e.head||!e.head.js)&&{version:UNKNOWN_VERSION}}},ControlJS:{id:"controljs",icon:"icon38",url:"http://stevesouders.com/controljs/",test:function(e){return!(!e.CJS||!e.CJS.start)&&{version:UNKNOWN_VERSION}}},RequireJS:{id:"requirejs",icon:"requirejs",url:"http://requirejs.org/",npm:"requirejs",test:function(e){var t=e.require||e.requirejs;return!(!t||!(t.load||t.s&&t.s.contexts&&t.s.contexts._&&(t.s.contexts._.loaded||t.s.contexts._.load)))&&{version:t.version||UNKNOWN_VERSION}}},RightJS:{id:"rightjs",icon:"rightjs",url:"http://rightjs.org/",test:function(e){return!(!e.RightJS||!e.RightJS.isNode)&&{version:e.RightJS.version||UNKNOWN_VERSION}}},"jQuery Tools":{id:"jquerytools",icon:"jquerytools",url:"http://jquerytools.github.io/",test:function(e){var t=e.jQuery||e.$;return!(!t||!t.tools)&&{version:t.tools.version||UNKNOWN_VERSION}}},Pusher:{id:"pusher",icon:"pusher",url:"https://pusher.com/docs/",npm:"pusher-js",test:function(e){return!(!e.Pusher||!e.Pusher.Channel)&&{version:e.Pusher.VERSION||UNKNOWN_VERSION}}},"Paper.js":{id:"paperjs",icon:"paperjs",url:"http://paperjs.org/",npm:"paper",test:function(e){return!(!e.paper||!e.paper.Point)&&{version:e.paper.version||UNKNOWN_VERSION}}},Swiffy:{id:"swiffy",icon:"icon38",url:"https://developers.google.com/swiffy/",test:function(e){return!(!e.swiffy||!e.swiffy.Stage)&&{version:UNKNOWN_VERSION}}},Move:{id:"move",icon:"move",url:"https://github.com/rsms/move",npm:"move",test:function(e){return!(!e.move||!e.move.compile)&&{version:e.move.version()||UNKNOWN_VERSION}}},AmplifyJS:{id:"amplifyjs",icon:"amplifyjs",url:"http://amplifyjs.com/",npm:"amplifyjs",test:function(e){return!(!e.amplify||!e.amplify.publish)&&{version:UNKNOWN_VERSION}}},"Popcorn.js":{id:"popcornjs",icon:"popcornjs",url:"https://github.com/mozilla/popcorn-js/",test:function(e){return!(!e.Popcorn||!e.Popcorn.Events)&&{version:e.Popcorn.version||UNKNOWN_VERSION}}},D3:{id:"d3",icon:"d3",url:"https://d3js.org/",npm:"d3",test:function(e){return!(!e.d3||!e.d3.select)&&{version:e.d3.version||UNKNOWN_VERSION}}},Handlebars:{id:"handlebars",icon:"handlebars",url:"http://handlebarsjs.com/",npm:"handlebars",test:function(e){return!(!e.Handlebars||!e.Handlebars.compile)&&{version:e.Handlebars.VERSION||UNKNOWN_VERSION}}},Handsontable:{id:"handsontable",icon:"handsontable",url:"https://handsontable.com/",npm:"handsontable",test:function(e){return!(!e.Handsontable||!e.Handsontable.Core)&&{version:e.Handsontable.version||UNKNOWN_VERSION}}},Knockout:{id:"knockout",icon:"knockout",url:"http://knockoutjs.com/",npm:"knockout",test:function(e){return!(!e.ko||!e.ko.applyBindings)&&{version:e.ko.version||UNKNOWN_VERSION}}},Spine:{id:"spine",icon:"icon38",url:"http://spine.github.io/",test:function(e){return!(!e.Spine||!e.Spine.Controller)&&{version:e.Spine.version||UNKNOWN_VERSION}}},"jQuery Mobile":{id:"jquery-mobile",icon:"jquery_mobile",url:"http://jquerymobile.com/",npm:"jquery-mobile",test:function(e){var t=e.jQuery||e.$||e.$jq||e.$j;return!!(t&&t.fn&&t.fn.jquery&&t.mobile)&&{version:t.mobile.version||UNKNOWN_VERSION}}},"WebFont Loader":{id:"webfontloader",icon:"icon38",url:"https://github.com/typekit/webfontloader",npm:"webfontloader",test:function(e){return!(!e.WebFont||!e.WebFont.load)&&{version:UNKNOWN_VERSION}}},Angular:{id:"angular",icon:"angular",url:"https://angular.io/",npm:"@angular/core",test:function(e){var t=e.document.querySelector("[ng-version]");return t?{version:t.getAttribute("ng-version")||UNKNOWN_VERSION}:!!(e.ng&&e.ng.probe instanceof Function)&&{version:UNKNOWN_VERSION}}},AngularJS:{id:"angularjs",icon:"angularjs",url:"https://angularjs.org/",npm:"angular",test:function(e){var t=e.angular;return!!(t&&t.version&&t.version.full)&&{version:t.version.full}}},Ionic:{id:"ionic",icon:"ionic",url:"https://ionicframework.com/",npm:"@ionic/cli",test:function(e){var t=e.document.querySelector("ion-app");return!(!t||"ION-APP"!==t.nodeName)&&{version:UNKNOWN_VERSION}}},"Ember.js":{id:"emberjs",icon:"emberjs",url:"https://emberjs.com/",npm:"ember-source",test:function(e){var t=e.Ember||e.Em;return!(!t||!t.GUID_KEY)&&{version:t.VERSION||UNKNOWN_VERSION}}},"Hammer.js":{id:"hammerjs",icon:"hammerjs",url:"http://eightmedia.github.io/hammer.js/",npm:"hammerjs",test:function(e){return!(!e.Hammer||!e.Hammer.Pinch)&&{version:e.Hammer.VERSION||"&lt; 1.0.10"}}},"Visibility.js":{id:"visibilityjs",icon:"icon38",url:"https://github.com/ai/visibilityjs",npm:"visibilityjs",test:function(e){return!(!e.Visibility||!e.Visibility.every)&&{version:UNKNOWN_VERSION}}},"Velocity.js":{id:"velocityjs",icon:"icon38",url:"http://velocityjs.org/",npm:"velocity-animate",test:function(e){var t=e.jQuery||e.$,o=t?t.Velocity:e.Velocity;return o&&o.RegisterEffect&&o.version?{version:o.version.major+"."+o.version.minor+"."+o.version.patch}:!(!o||!o.RegisterEffect)&&{version:UNKNOWN_VERSION}}},"IfVisible.js":{id:"ifvisiblejs",icon:"icon38",url:"http://serkanyersen.github.io/ifvisible.js/",npm:"ifvisible.js",test:function(e){var t=e.ifvisible;return!(!t||"ifvisible.object.event.identifier"!==t.__ceGUID)&&{version:UNKNOWN_VERSION}}},"Pixi.js":{id:"pixi",icon:"pixi",url:"http://www.pixijs.com/",npm:"pixi.js",test:function(e){var t=e.PIXI;return!!(t&&t.WebGLRenderer&&t.VERSION)&&{version:t.VERSION.replace("v","")||UNKNOWN_VERSION}}},"DC.js":{id:"dcjs",icon:"dcjs",url:"http://dc-js.github.io/dc.js/",npm:"dc",test:function(e){var t=e.dc;return!(!t||!t.registerChart)&&{version:t.version||UNKNOWN_VERSION}}},"GreenSock JS":{id:"greensock",icon:"greensock",url:"https://greensock.com/gsap",npm:"gsap",test:function(e){return!(!e.TweenMax||!e.TweenMax.pauseAll)&&{version:e.TweenMax.version||UNKNOWN_VERSION}}},FastClick:{id:"fastclick",icon:"fastclick",url:"https://github.com/ftlabs/fastclick",npm:"fastclick",test:function(e){return!(!e.FastClick||!e.FastClick.notNeeded)&&{version:UNKNOWN_VERSION}}},Isotope:{id:"isotope",icon:"isotope",url:"https://isotope.metafizzy.co/",npm:"isotope-layout",test:function(e){return!!(e.Isotope||null!=e.$&&e.$.Isotope)&&{version:UNKNOWN_VERSION}}},Marionette:{id:"marionette",icon:"marionette",url:"https://marionettejs.com/",npm:"backbone.marionette",test:function(e){return!(!e.Marionette||!e.Marionette.Application)&&{version:e.Marionette.VERSION||UNKNOWN_VERSION}}},Can:{id:"canjs",icon:"canjs",url:"https://canjs.com/",npm:"can",test:function(e){return!(!e.can||!e.can.Construct)&&{version:e.can.VERSION||UNKNOWN_VERSION}}},Vue:{id:"vue",icon:"vue",url:"https://vuejs.org/",npm:"vue",test:function(e){return!(null===document.createTreeWalker(document.body,NodeFilter.SHOW_ELEMENT,(function(e){return null!=e.__vue__?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP})).nextNode()&&!e.Vue)&&{version:e.Vue&&e.Vue.version||UNKNOWN_VERSION}}},"Vue (Fast path)":{id:"vue-fast",icon:"vue",url:"https://vuejs.org/",npm:"vue",test:function(e){return!!e.Vue&&{version:e.Vue&&e.Vue.version||UNKNOWN_VERSION}}},"Nuxt.js":{id:"nuxt",icon:"nuxt",url:"https://nuxtjs.org/",npm:"nuxt",test:function(e){return!!(e.__NUXT__||e.$nuxt||[...e.document.querySelectorAll("*")].some((e=>e.__vue__?.nuxt)))&&{version:UNKNOWN_VERSION}}},"Nuxt.js (Fast path)":{id:"nuxt-fast",icon:"nuxt",url:"https://nuxtjs.org/",npm:"nuxt",test:function(e){return!(!e.__NUXT__&&!e.$nuxt)&&{version:UNKNOWN_VERSION}}},Two:{id:"two",icon:"two",url:"https://two.js.org/",npm:"two.js",test:function(e){return!(!e.Two||!e.Two.Utils)&&{version:e.Two.Version||UNKNOWN_VERSION}}},Brewser:{id:"brewser",icon:"brewser",url:"https://robertpataki.github.io/brewser/",npm:"brewser",test:function(e){return!(!e.BREWSER||!e.BREWSER.ua)&&{version:BREWSER.VERSION||UNKNOWN_VERSION}}},"Material Design Lite":{id:"materialdesignlite",icon:"mdl",url:"https://getmdl.io/",npm:"material-design-lite",test:function(e){return!(!e.componentHandler||!e.componentHandler.upgradeElement)&&{version:UNKNOWN_VERSION}}},"Kendo UI":{id:"kendoui",icon:"kendoui",url:"https://github.com/telerik/kendo-ui-core",npm:"kendo-ui-core",test:function(e){return!!(e.kendo&&e.kendo.View&&e.kendo.View.extend)&&{version:e.kendo.version||UNKNOWN_VERSION}}},"Matter.js":{id:"matterjs",icon:"matter-js",url:"http://brm.io/matter-js/",npm:"matter-js",test:function(e){return!(!e.Matter||!e.Matter.Engine)&&{version:UNKNOWN_VERSION}}},Riot:{id:"riot",icon:"riot",url:"http://riotjs.com/",npm:"riot",test:function(e){return!(!e.riot||!e.riot.mixin)&&{version:e.riot.version||UNKNOWN_VERSION}}},"Sea.js":{id:"seajs",icon:"icon38",url:"https://seajs.github.io/seajs/docs/",npm:"seajs",test:function(e){return!(!e.seajs||!e.seajs.use)&&{version:e.seajs.version||UNKNOWN_VERSION}}},"Moment.js":{id:"momentjs",icon:"momentjs",url:"http://momentjs.com/",npm:"moment",test:function(e){return!(!e.moment||!e.moment.isMoment&&!e.moment.lang)&&{version:e.moment.version||UNKNOWN_VERSION}}},"Moment Timezone":{id:"moment-timezone",icon:"momentjs",url:"http://momentjs.com/timezone/",npm:"moment-timezone",test:function(e){return!(!e.moment||!e.moment.tz)&&{version:e.moment.tz.version||UNKNOWN_VERSION}}},ScrollMagic:{id:"scrollmagic",icon:"scrollmagic",url:"http://scrollmagic.io/",npm:"scrollmagic",test:function(e){return!(!e.ScrollMagic||!e.ScrollMagic.Controller)&&{version:ScrollMagic.version||UNKNOWN_VERSION}}},SWFObject:{id:"swfobject",icon:"icon38",url:"https://github.com/swfobject/swfobject",test:function(e){return e.swfobject&&e.swfobject.embedSWF?{version:e.swfobject.version||UNKNOWN_VERSION}:!(!e.deconcept||!e.deconcept.SWFObject)&&{version:UNKNOWN_VERSION}}},FlexSlider:{id:"flexslider",icon:"icon38",url:"https://woocommerce.com/flexslider/",npm:"flexslider",test:function(e){var t=e.jQuery||e.$||e.$jq||e.$j;return!!(t&&t.fn&&t.fn.jquery&&t.flexslider)&&{version:UNKNOWN_VERSION}}},SPF:{id:"spf",icon:"icon38",url:"https://youtube.github.io/spfjs/",npm:"spf",test:function(e){return!(!e.spf||!e.spf.init)&&{version:UNKNOWN_VERSION}}},"Numeral.js":{id:"numeraljs",icon:"icon38",url:"http://numeraljs.com/",npm:"numeraljs",test:function(e){return!(!e.numeral||!e.isNumeral)&&{version:e.numeral.version||UNKNOWN_VERSION}}},"boomerang.js":{id:"boomerangjs",icon:"icon38",url:"https://soasta.github.io/boomerang/",npm:"boomerangjs",test:function(e){return!!(e.BOOMR&&e.BOOMR.utils&&e.BOOMR.init)&&{version:e.BOOMR.version||UNKNOWN_VERSION}}},Framer:{id:"framer",icon:"framer",url:"https://framer.com/",npm:"framerjs",test:function(e){return!(!e.Framer||!e.Framer.Layer)&&{version:e.Framer.Version.build||UNKNOWN_VERSION}}},Marko:{id:"marko",icon:"marko",url:"https://markojs.com/",npm:"marko",test:function(e){return!!document.querySelector("[data-marko-key], [data-marko]")&&{version:UNKNOWN_VERSION}}},AMP:{id:"amp",icon:"amp",url:"https://amp.dev/",npm:"https://www.npmjs.com/org/ampproject",test:function(e){var t=e.document.documentElement.getAttribute("amp-version");return!!t&&{version:t}}},Gatsby:{id:"gatsby",icon:"gatsby",url:"https://www.gatsbyjs.org/",npm:"gatsby",test:function(e){return!!document.getElementById("___gatsby")&&{version:UNKNOWN_VERSION}}},Shopify:{id:"shopify",icon:"shopify",url:"https://www.shopify.com/",npm:null,test:function(e){return!(!e.Shopify||!e.Shopify.shop)&&{version:UNKNOWN_VERSION}}},Magento:{id:"magento",icon:"magento",url:"https://magento.com/",npm:null,test:function(e){const t=/\\/static(?:\\/version\\d+)?\\/frontend\\/.+\\/.+\\/requirejs\\/require(?:\\.min)?\\.js/;return!!Array.from(document.querySelectorAll("script[src]")||[]).some((e=>t.test(e.src)))&&{version:2}}},WordPress:{id:"wordpress",icon:"wordpress",url:"https://wordpress.org/",npm:null,test:function(e){const t=!!document.querySelector(\'link[rel="https://api.w.org/"]\'),o=!!document.querySelectorAll(\'link[href*="wp-includes"], script[src*="wp-includes"]\').length;if(!t&&!o)return!1;const n=document.querySelector(\'meta[name=generator][content^="WordPress"]\');return{version:n?n.getAttribute("content").replace(/^\\w+\\s/,""):UNKNOWN_VERSION}}},Wix:{id:"wix",icon:"wix",url:"https://www.wix.com/",npm:null,test:function(e){return(e.wixPerformanceMeasurements&&e.wixPerformanceMeasurements.info||!(!e.wixBiSession||!e.wixBiSession.info))&&{version:UNKNOWN_VERSION}}},Workbox:{id:"workbox",icon:"workbox",url:"https://developers.google.com/web/tools/workbox/",npm:"workbox-sw",test:async function(e){var t=e.navigator;if(!("serviceWorker"in t))return!1;const{timeoutPromise:o,clearTimeout:n}=_createTimeoutHelper(),r=t.serviceWorker.getRegistration().then((function(e){var o=t.serviceWorker.controller?t.serviceWorker.controller.scriptURL:e.active.scriptURL;return fetch(o,{credentials:"include",headers:{"service-worker":"script"}}).then((function(e){return e.text()})).then((function(e){if(/new Workbox|new workbox|workbox\\.precaching\\.|workbox\\.strategies/gm.test(e)){var t=/workbox.*?\\b((0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(-(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(\\.(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\\+[0-9a-zA-Z-]+(\\.[0-9a-zA-Z-]+)*)?)\\b/gim.exec(e),o=UNKNOWN_VERSION;return Array.isArray(t)&&t.length>1&&t[1]&&(o=t[1]),{version:o}}return!1}))})).catch((function(e){return!1}));return Promise.race([r,o]).catch((function(e){return!1})).finally((e=>(n(),e)))}},Boq:{id:"boq",icon:"icon38",url:"https://github.com/johnmichel/Library-Detector-for-Chrome/pull/143",npm:null,test:function(e){return!!e.WIZ_global_data&&{version:UNKNOWN_VERSION}}},Wiz:{id:"wiz",icon:"icon38",url:"https://github.com/johnmichel/Library-Detector-for-Chrome/pull/147",npm:null,test:function(e){return!!document.__wizdispatcher&&{version:UNKNOWN_VERSION}}},"core-js":{id:"corejs",icon:"icon38",url:"https://github.com/zloirock/core-js",npm:"core-js",test:function(e){const t=e["__core-js_shared__"],o=e.core;if(t){const e=t.versions;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 App":{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}}},Joomla:{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}}}};']
})).map((e=>({detector:"js",id:e.id,name:e.name,version:"number"==typeof e.version?String(e.version):e.version||void 0,npm:e.npm||void 0})));return Log.timeEnd(t),n}async getArtifact(e){try{return await Stacks.collectStacks(e.driver.executionContext)}catch{return[]}}}var vc=Object.freeze({__proto__:null,default:Stacks});var wc=Object.freeze({__proto__:null,default:class TraceCompat extends FRGatherer{meta={supportedModes:["timespan","navigation"],dependencies:{Trace:Trace.symbol}};async getArtifact(e){return{defaultPass:e.dependencies.Trace}}}});const Dc=makeComputedArtifact(class ProcessedNavigation{static isProcessedTrace(e){return"timeOriginEvt"in e}static async compute_(e,t){if(this.isProcessedTrace(e))return LHTraceProcessor.processNavigation(e);const n=await co.request(e,t);return LHTraceProcessor.processNavigation(n)}},null),Ec=new Set(["keydown","keypress","keyup"]),Tc=new Set(["mousedown","mouseup","pointerdown","pointerup","click"]),Sc={keyboard:Ec,tapOrClick:Tc,drag:Tc}
;class Responsiveness{static getHighPercentileResponsiveness(e){const t=e.frameTreeEvents.filter((e=>"Responsiveness.Renderer.UserInteraction"===e.name)).sort(((e,t)=>t.args.data.maxDuration-e.args.data.maxDuration));if(0===t.length)return null;return t[Math.min(9,Math.floor(t.length/50))]}static findInteractionEvent(e,{traceEvents:t}){const n=t.filter((e=>"EventTiming"===e.name&&"e"!==e.ph));if(n.length&&n.every((e=>!e.args.data?.frame)))return{name:"FallbackTiming",duration:e.args.data.maxDuration};const{maxDuration:a,interactionType:r}=e.args.data;let o,i=Number.POSITIVE_INFINITY;for(const t of n){if(t.args.data.frame!==e.args.frame)continue;const{type:n,duration:s}=t.args.data,c=Sc[r];if(!c)throw new Error(`unexpected responsiveness interactionType '${r}'`);if(!c.has(n))continue;const l=Math.abs(s-a);l<i&&(o=t,i=l)}if(!o)throw new Error(`no interaction event found for responsiveness type '${r}'`)
;if(i>5)throw new Error(`no interaction event found within 5ms of responsiveness maxDuration (max: ${a}, closest ${o.args.data.duration})`);return o}static async compute_(e,t){const{settings:n,trace:a}=e;if("simulate"===n.throttlingMethod)throw new Error("Responsiveness currently unsupported by simulated throttling");const r=await co.request(a,t),o=Responsiveness.getHighPercentileResponsiveness(r);if(!o)return null;const i=Responsiveness.findInteractionEvent(o,a);return JSON.parse(JSON.stringify(i))}}const Cc=makeComputedArtifact(Responsiveness,["trace","settings"]);function getNodeDetailsData(){const e=this.nodeType===document.ELEMENT_NODE?this:this.parentElement;let t;return e&&(t={node:getNodeDetails(e)}),t}class TraceElements extends FRGatherer{meta={supportedModes:["timespan","navigation"],dependencies:{Trace:Trace.symbol}};animationIdToName=new Map;constructor(){super(),this._onAnimationStarted=this._onAnimationStarted.bind(this)}_onAnimationStarted({animation:{id:e,name:t}}){
t&&this.animationIdToName.set(e,t)}static traceRectToLHRect(e){return function addRectTopAndBottom({x:e,y:t,width:n,height:a}){return{left:e,top:t,right:e+n,bottom:t+a,width:n,height:a}}({x:e[0],y:e[1],width:e[2],height:e[3]})}static getTopLayoutShiftElements(e){const t=new Map,n=e.filter((e=>"LayoutShift"===e.name)).map((e=>e.args?.data)),a=n.findIndex((e=>e&&!e.had_recent_input));n.forEach(((e,n)=>{if(!e||!e.impacted_nodes||!e.score)return;if(-1!==a&&n>=a&&e.had_recent_input)return;let r=0;const o=new Map;e.impacted_nodes.forEach((e=>{if(!e.node_id||!e.old_rect||!e.new_rect)return;const t=TraceElements.traceRectToLHRect(e.old_rect),n=TraceElements.traceRectToLHRect(e.new_rect),a=getRectArea(t)+getRectArea(n)-getRectOverlapArea(t,n);o.set(e.node_id,a),r+=a}));for(const[n,a]of o.entries()){let o=t.get(n)||0;o+=a/r*e.score,t.set(n,o)}}));return[...t.entries()].sort(((e,t)=>t[1]-e[1])).slice(0,5).map((([e,t])=>({nodeId:e,score:t})))}static async getResponsivenessElement(e,t){
const{settings:n}=t;try{const a=await Cc.request({trace:e,settings:n},t);if(!a||"FallbackTiming"===a.name)return;return{nodeId:a.args.data.nodeId}}catch{return}}async getAnimatedElements(e){const t=new Map;for(const n of e){if("Animation"!==n.name)continue;if(!n.id2||!n.id2.local)continue;const e=n.id2.local,a=t.get(e)||{begin:void 0,status:void 0};"b"===n.ph?a.begin=n:"n"===n.ph&&n.args.data&&void 0!==n.args.data.compositeFailed&&(a.status=n),t.set(e,a)}const n=new Map;for(const{begin:e,status:a}of t.values()){const t=e?.args?.data?.nodeId,r=e?.args?.data?.id,o=a?.args?.data?.compositeFailed,i=a?.args?.data?.unsupportedProperties;if(!t||!r)continue;const s=n.get(t)||new Set;s.add({animationId:r,failureReasonsMask:o,unsupportedProperties:i}),n.set(t,s)}const a=[];for(const[e,t]of n){const n=[];for(const{animationId:e,failureReasonsMask:a,unsupportedProperties:r}of t){const t=this.animationIdToName.get(e);n.push({name:t,failureReasonsMask:a,unsupportedProperties:r})}a.push({nodeId:e,
animations:n})}return a}static async getLcpElement(e,t){let n;try{n=await Dc.request(e,t)}catch(e){if("timespan"===t.gatherMode&&e.code===LighthouseError.errors.NO_FCP.code)return;throw e}const a=n.largestContentfulPaintEvt?.args?.data;if(void 0!==a?.nodeId&&a.type)return{nodeId:a.nodeId,type:a.type}}async startInstrumentation(e){await e.driver.defaultSession.sendCommand("Animation.enable"),e.driver.defaultSession.on("Animation.animationStarted",this._onAnimationStarted)}async stopInstrumentation(e){e.driver.defaultSession.off("Animation.animationStarted",this._onAnimationStarted),await e.driver.defaultSession.sendCommand("Animation.disable")}async _getArtifact(e,t){const n=e.driver.defaultSession;if(!t)throw new Error("Trace is missing!")
;const a=await co.request(t,e),{mainThreadEvents:r}=a,o=await TraceElements.getLcpElement(t,e),i=TraceElements.getTopLayoutShiftElements(r),s=await this.getAnimatedElements(r),c=await TraceElements.getResponsivenessElement(t,e),l=new Map([["largest-contentful-paint",o?[o]:[]],["layout-shift",i],["animation",s],["responsiveness",c?[c]:[]]]),u=[];for(const[e,t]of l)for(let a=0;a<t.length;a++){const r=t[a].nodeId;let o;try{const e=await resolveNodeIdToObjectId(n,r);if(!e)continue;o=await n.sendCommand("Runtime.callFunctionOn",{objectId:e,functionDeclaration:`function () {\n ${getNodeDetailsData.toString()};\n ${Qa.getNodeDetails};\n return getNodeDetailsData.call(this);\n }`,returnByValue:!0,awaitPromise:!0})}catch(e){Qo.captureException(e,{tags:{gatherer:this.name},level:"error"});continue}o?.result?.value&&u.push({traceEventType:e,...o.result.value,score:t[a].score,animations:t[a].animations,nodeId:r,type:t[a].type})}return u}
async getArtifact(e){return this._getArtifact(e,e.dependencies.Trace)}async afterPass(e,t){const n={...e,dependencies:{}};return await this.stopInstrumentation(n),this._getArtifact(n,t.trace)}}var _c=Object.freeze({__proto__:null,default:TraceElements});function getViewportDimensions(){return{innerWidth:window.innerWidth,innerHeight:window.innerHeight,outerWidth:window.outerWidth,outerHeight:window.outerHeight,devicePixelRatio:window.devicePixelRatio}}var Ac=Object.freeze({__proto__:null,default:class ViewportDimensions extends FRGatherer{meta={supportedModes:["snapshot","timespan","navigation"]};async getArtifact(e){const t=e.driver,n=await t.executionContext.evaluate(getViewportDimensions,{args:[],useIsolation:!0});if(!Object.values(n).every(Number.isFinite)){const e=JSON.stringify(n);throw new Error(`ViewportDimensions results were not numeric: ${e}`)}return n}}})
;const kc=["fullscreen","standalone","minimal-ui","browser"],Fc="browser",Rc=["any","natural","landscape","portrait","portrait-primary","portrait-secondary","landscape-primary","landscape-secondary"];function parseString(e,t){let n,a;return"string"==typeof e?n=t?e.trim():e:(void 0!==e&&(a="ERROR: expected a string."),n=void 0),{raw:e,value:n,warning:a}}function parseColor(e){const t=parseString(e);return t.value,t}function parseName(e){return parseString(e.name,!0)}function parseShortName(e){return parseString(e.short_name,!0)}function parseStartUrl(e,t,n){const a=e.start_url;if(""===a)return{raw:a,value:n,warning:"ERROR: start_url string empty"};if(void 0===a)return{raw:a,value:n};if("string"!=typeof a)return{raw:a,value:n,warning:"ERROR: expected a string."};let r;try{r=new URL(a,t).href}catch(e){return{raw:a,value:n,warning:`ERROR: invalid start_url relative to ${t}`}}return function checkSameOrigin(e,t){const n=new URL(e),a=new URL(t);return n.origin===a.origin}(r,n)?{raw:a,value:r
}:{raw:a,value:n,warning:"ERROR: start_url must be same-origin as document"}}function parseDisplay(e){const t=parseString(e.display,!0),n=t.value;if(!n)return{raw:e,value:Fc,warning:t.warning};const a=n.toLowerCase();return kc.includes(a)?{raw:e,value:a,warning:void 0}:{raw:e,value:Fc,warning:"ERROR: 'display' has invalid value "+a+". will fall back to browser."}}function parseOrientation(e){const t=parseString(e.orientation,!0);return t.value&&!Rc.includes(t.value.toLowerCase())&&(t.value=void 0,t.warning="ERROR: 'orientation' has an invalid value, will be ignored."),t}function parseIcons(e,t){const n=e.icons;if(void 0===n)return{raw:n,value:[],warning:void 0};if(!Array.isArray(n))return{raw:n,value:[],warning:"ERROR: 'icons' expected to be an array but is not."};const a=n.filter((e=>void 0!==e.src)).map((e=>function parseIcon(e,t){const n=parseString(e.src,!0);if(""===n.value&&(n.value=void 0),n.value)try{n.value=new URL(n.value,t).href}catch(t){
n.warning=`ERROR: invalid icon url will be ignored: '${e.src}'`,n.value=void 0}const a=parseString(e.type,!0),r=parseString(e.purpose),o={raw:e.purpose,value:["any"],warning:void 0};void 0!==r.value&&(o.value=r.value.split(/\s+/).map((e=>e.toLowerCase())));const i={raw:e.density,value:1,warning:void 0};let s;void 0!==i.raw&&(i.value=parseFloat(i.raw),(isNaN(i.value)||!isFinite(i.value)||i.value<=0)&&(i.value=1,i.warning="ERROR: icon density cannot be NaN, +∞, or less than or equal to +0."));const c=parseString(e.sizes);if(void 0!==c.value){const t=new Set;c.value.trim().split(/\s+/).forEach((e=>t.add(e.toLowerCase()))),s={raw:e.sizes,value:t.size>0?Array.from(t):void 0,warning:void 0}}else s={...c,value:void 0};return{raw:e,value:{src:n,type:a,density:i,sizes:s,purpose:o},warning:void 0}}(e,t))),r=a.filter((e=>{const t=[e.warning,e.value.type.warning,e.value.src.warning,e.value.sizes.warning,e.value.density.warning].filter(Boolean),n=!!e.value.src.value;return!!t.length&&!n}));return{
raw:n,value:a.filter((e=>void 0!==e.value.src.value)),warning:r.length?"WARNING: Some icons were ignored due to warnings.":void 0}}function parseApplication(e){const t=parseString(e.platform,!0),n=parseString(e.id,!0),a=parseString(e.url,!0);if(a.value)try{a.value=new URL(a.value).href}catch(t){a.value=void 0,a.warning=`ERROR: invalid application URL ${e.url}`}return{raw:e,value:{platform:t,id:n,url:a},warning:void 0}}function parseRelatedApplications(e){const t=e.related_applications;if(void 0===t)return{raw:t,value:void 0,warning:void 0};if(!Array.isArray(t))return{raw:t,value:void 0,warning:"ERROR: 'related_applications' expected to be an array but is not."};const n=t.filter((e=>!!e.platform)).map(parseApplication).filter((e=>!!e.value.id.value||!!e.value.url.value));return{raw:t,value:n,warning:void 0}}function parsePreferRelatedApplications(e){const t=e.prefer_related_applications;let n,a
;return"boolean"==typeof t?n=t:(void 0!==t&&(a="ERROR: 'prefer_related_applications' expected to be a boolean."),n=void 0),{raw:t,value:n,warning:a}}function parseThemeColor(e){return parseColor(e.theme_color)}function parseBackgroundColor(e){return parseColor(e.background_color)}class WebAppManifest extends FRGatherer{meta={supportedModes:["snapshot","navigation"]};static async fetchAppManifest(e){let t;e.setNextProtocolTimeout(1e4);try{t=await e.sendCommand("Page.getAppManifest")}catch(e){if("PROTOCOL_TIMEOUT"===e.code)return Log.error("WebAppManifest","Failed fetching manifest",e),null;throw e}let n=t.data;if(!n)return null;return 65279===n.charCodeAt(0)&&(n=Buffer.from(n).slice(3).toString()),{...t,data:n}}static async getWebAppManifest(e,t){const n={msg:"Get webapp manifest",id:"lh:gather:getWebAppManifest"};Log.time(n);const a=await WebAppManifest.fetchAppManifest(e);if(!a)return null;const r=function parseManifest(e,t,n){
if(void 0===t||void 0===n)throw new Error("Manifest and document URLs required for manifest parsing.");let a;try{a=JSON.parse(e)}catch(n){return{raw:e,value:void 0,warning:"ERROR: file isn't valid JSON: "+n,url:t}}const r={name:parseName(a),short_name:parseShortName(a),start_url:parseStartUrl(a,t,n),display:parseDisplay(a),orientation:parseOrientation(a),icons:parseIcons(a,t),related_applications:parseRelatedApplications(a),prefer_related_applications:parsePreferRelatedApplications(a),theme_color:parseThemeColor(a),background_color:parseBackgroundColor(a)};let o;try{new URL(t).protocol.startsWith("http")||(o="WARNING: manifest URL not available over a valid network protocol")}catch(e){o=`ERROR: invalid manifest URL: '${t}'`}return{raw:e,value:r,warning:o,url:t}}(a.data,a.url,t);return Log.timeEnd(n),r}async getArtifact(e){const t=e.driver,{finalDisplayedUrl:n}=e.baseArtifacts.URL;try{return await WebAppManifest.getWebAppManifest(t.defaultSession,n)}catch{return null}}}
var xc=Object.freeze({__proto__:null,default:WebAppManifest});const Ic={failingElementsHeader:"Failing Elements"},Nc=createIcuMessageFn("core/audits/accessibility/axe-audit.js",Ic);class AxeAudit extends Audit{static audit(e){if((e.Accessibility.notApplicable||[]).find((e=>e.id===this.meta.id)))return{score:null,notApplicable:!0};const t=e.Accessibility.incomplete||[],n=t.find((e=>e.id===this.meta.id));if(n?.error)return{score:null,errorMessage:`axe-core Error: ${n.error.message||"Unknown error"}`};const a=this.meta.scoreDisplayMode===Audit.SCORING_MODES.INFORMATIVE,r=e.Accessibility.violations||[],o=(a?r.concat(t):r).find((e=>e.id===this.meta.id)),i=o?.impact,s=o?.tags;if(a&&!o)return{score:null,notApplicable:!0};let c=[];o?.nodes&&(c=o.nodes.map((e=>({node:{...Audit.makeNodeItem(e.node),explanation:e.failureSummary},subItems:e.relatedNodes.length?{type:"subitems",items:e.relatedNodes.map((e=>({relatedNode:Audit.makeNodeItem(e)})))}:void 0}))));const l=[{key:"node",valueType:"node",
subItemsHeading:{key:"relatedNode",valueType:"node"},label:Nc(Ic.failingElementsHeader)}];let u;return(i||s)&&(u={type:"debugdata",impact:i,tags:s}),{score:Number(void 0===o),details:{...Audit.makeTableDetails(l,c),debugData:u}}}}const Lc={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.6/accesskeys)."},Mc=createIcuMessageFn("core/audits/accessibility/accesskeys.js",Lc);var Pc=Object.freeze({__proto__:null,default:class Accesskeys extends AxeAudit{static get meta(){return{id:"accesskeys",title:Mc(Lc.title),failureTitle:Mc(Lc.failureTitle),description:Mc(Lc.description),requiredArtifacts:["Accessibility"]}}},UIStrings:Lc});const Oc={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.6/aria-allowed-attr)."},Bc=createIcuMessageFn("core/audits/accessibility/aria-allowed-attr.js",Oc);var Uc=Object.freeze({__proto__:null,default:class ARIAAllowedAttr extends AxeAudit{static get meta(){return{id:"aria-allowed-attr",title:Bc(Oc.title),failureTitle:Bc(Oc.failureTitle),description:Bc(Oc.description),requiredArtifacts:["Accessibility"]}}},UIStrings:Oc});const jc={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.6/aria-command-name)."},zc=createIcuMessageFn("core/audits/accessibility/aria-command-name.js",jc);var qc=Object.freeze({__proto__:null,default:class AriaCommandName extends AxeAudit{static get meta(){return{id:"aria-command-name",title:zc(jc.title),failureTitle:zc(jc.failureTitle),description:zc(jc.description),requiredArtifacts:["Accessibility"]}}},UIStrings:jc});const $c={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.6/aria-hidden-body).'},Vc=createIcuMessageFn("core/audits/accessibility/aria-hidden-body.js",$c);var Wc=Object.freeze({__proto__:null,default:class AriaHiddenBody extends AxeAudit{static get meta(){return{id:"aria-hidden-body",title:Vc($c.title),failureTitle:Vc($c.failureTitle),description:Vc($c.description),requiredArtifacts:["Accessibility"]}}},UIStrings:$c});const Hc={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.6/aria-hidden-focus).'},Gc=createIcuMessageFn("core/audits/accessibility/aria-hidden-focus.js",Hc);var Yc=Object.freeze({__proto__:null,default:class AriaHiddenFocus extends AxeAudit{static get meta(){return{id:"aria-hidden-focus",title:Gc(Hc.title),failureTitle:Gc(Hc.failureTitle),description:Gc(Hc.description),requiredArtifacts:["Accessibility"]}}},UIStrings:Hc});const Kc={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.6/aria-input-field-name)."},Jc=createIcuMessageFn("core/audits/accessibility/aria-input-field-name.js",Kc);var Zc=Object.freeze({__proto__:null,default:class AriaInputFieldName extends AxeAudit{static get meta(){return{id:"aria-input-field-name",title:Jc(Kc.title),failureTitle:Jc(Kc.failureTitle),description:Jc(Kc.description),requiredArtifacts:["Accessibility"]}}},UIStrings:Kc});const Xc={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.6/aria-meter-name)."},Qc=createIcuMessageFn("core/audits/accessibility/aria-meter-name.js",Xc);var el=Object.freeze({__proto__:null,default:class AriaMeterName extends AxeAudit{static get meta(){return{id:"aria-meter-name",title:Qc(Xc.title),failureTitle:Qc(Xc.failureTitle),description:Qc(Xc.description),requiredArtifacts:["Accessibility"]}}},UIStrings:Xc});const tl={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.6/aria-progressbar-name)."},nl=createIcuMessageFn("core/audits/accessibility/aria-progressbar-name.js",tl);var al=Object.freeze({__proto__:null,default:class AriaProgressbarName extends AxeAudit{static get meta(){return{id:"aria-progressbar-name",title:nl(tl.title),failureTitle:nl(tl.failureTitle),description:nl(tl.description),requiredArtifacts:["Accessibility"]}}},UIStrings:tl});const rl={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.6/aria-required-attr)."},ol=createIcuMessageFn("core/audits/accessibility/aria-required-attr.js",rl);var il=Object.freeze({__proto__:null,default:class ARIARequiredAttr extends AxeAudit{static get meta(){return{id:"aria-required-attr",title:ol(rl.title),failureTitle:ol(rl.failureTitle),description:ol(rl.description),requiredArtifacts:["Accessibility"]}}},UIStrings:rl});const sl={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.6/aria-required-children)."},cl=createIcuMessageFn("core/audits/accessibility/aria-required-children.js",sl);var ll=Object.freeze({__proto__:null,default:class AriaRequiredChildren extends AxeAudit{static get meta(){return{id:"aria-required-children",title:cl(sl.title),failureTitle:cl(sl.failureTitle),description:cl(sl.description),requiredArtifacts:["Accessibility"]}}},UIStrings:sl});const ul={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.6/aria-required-parent)."},dl=createIcuMessageFn("core/audits/accessibility/aria-required-parent.js",ul);var ml=Object.freeze({__proto__:null,default:class AriaRequiredParent extends AxeAudit{static get meta(){return{id:"aria-required-parent",title:dl(ul.title),failureTitle:dl(ul.failureTitle),description:dl(ul.description),requiredArtifacts:["Accessibility"]}}},UIStrings:ul});const pl={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.6/aria-roles)."},gl=createIcuMessageFn("core/audits/accessibility/aria-roles.js",pl);var hl=Object.freeze({
__proto__:null,default:class AriaRoles extends AxeAudit{static get meta(){return{id:"aria-roles",title:gl(pl.title),failureTitle:gl(pl.failureTitle),description:gl(pl.description),requiredArtifacts:["Accessibility"]}}},UIStrings:pl});const fl={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.6/aria-toggle-field-name)."},yl=createIcuMessageFn("core/audits/accessibility/aria-toggle-field-name.js",fl);var bl=Object.freeze({__proto__:null,default:class AriaToggleFieldName extends AxeAudit{static get meta(){return{id:"aria-toggle-field-name",title:yl(fl.title),failureTitle:yl(fl.failureTitle),description:yl(fl.description),requiredArtifacts:["Accessibility"]}}},UIStrings:fl});const vl={
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.6/aria-tooltip-name)."},wl=createIcuMessageFn("core/audits/accessibility/aria-tooltip-name.js",vl);var Dl=Object.freeze({__proto__:null,default:class AriaTooltipName extends AxeAudit{static get meta(){return{id:"aria-tooltip-name",title:wl(vl.title),failureTitle:wl(vl.failureTitle),description:wl(vl.description),requiredArtifacts:["Accessibility"]}}},UIStrings:vl});const El={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.6/aria-treeitem-name)."},Tl=createIcuMessageFn("core/audits/accessibility/aria-treeitem-name.js",El);var Sl=Object.freeze({__proto__:null,default:class AriaTreeitemName extends AxeAudit{static get meta(){return{id:"aria-treeitem-name",title:Tl(El.title),failureTitle:Tl(El.failureTitle),description:Tl(El.description),requiredArtifacts:["Accessibility"]}}},UIStrings:El});const Cl={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.6/aria-valid-attr-value)."
},_l=createIcuMessageFn("core/audits/accessibility/aria-valid-attr-value.js",Cl);var Al=Object.freeze({__proto__:null,default:class ARIAValidAttr$1 extends AxeAudit{static get meta(){return{id:"aria-valid-attr-value",title:_l(Cl.title),failureTitle:_l(Cl.failureTitle),description:_l(Cl.description),requiredArtifacts:["Accessibility"]}}},UIStrings:Cl});const kl={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.6/aria-valid-attr)."},Fl=createIcuMessageFn("core/audits/accessibility/aria-valid-attr.js",kl);var Rl=Object.freeze({__proto__:null,default:class ARIAValidAttr extends AxeAudit{static get meta(){return{id:"aria-valid-attr",title:Fl(kl.title),failureTitle:Fl(kl.failureTitle),description:Fl(kl.description),
requiredArtifacts:["Accessibility"]}}},UIStrings:kl});const xl={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.6/button-name).'},Il=createIcuMessageFn("core/audits/accessibility/button-name.js",xl);var Nl=Object.freeze({__proto__:null,default:class ButtonName extends AxeAudit{static get meta(){return{id:"button-name",title:Il(xl.title),failureTitle:Il(xl.failureTitle),description:Il(xl.description),requiredArtifacts:["Accessibility"]}}},UIStrings:xl});const Ll={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.6/bypass)."},Ml=createIcuMessageFn("core/audits/accessibility/bypass.js",Ll);var Pl=Object.freeze({__proto__:null,default:class Bypass extends AxeAudit{static get meta(){return{id:"bypass",title:Ml(Ll.title),failureTitle:Ml(Ll.failureTitle),description:Ml(Ll.description),scoreDisplayMode:AxeAudit.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},UIStrings:Ll});const Ol={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.6/color-contrast)."},Bl=createIcuMessageFn("core/audits/accessibility/color-contrast.js",Ol)
;var Ul=Object.freeze({__proto__:null,default:class ColorContrast extends AxeAudit{static get meta(){return{id:"color-contrast",title:Bl(Ol.title),failureTitle:Bl(Ol.failureTitle),description:Bl(Ol.description),requiredArtifacts:["Accessibility"]}}},UIStrings:Ol});const jl={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.6/definition-list)."},zl=createIcuMessageFn("core/audits/accessibility/definition-list.js",jl);var ql=Object.freeze({__proto__:null,default:class DefinitionList extends AxeAudit{static get meta(){return{id:"definition-list",title:zl(jl.title),
failureTitle:zl(jl.failureTitle),description:zl(jl.description),requiredArtifacts:["Accessibility"]}}},UIStrings:jl});const $l={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.6/dlitem)."},Vl=createIcuMessageFn("core/audits/accessibility/dlitem.js",$l);var Wl=Object.freeze({__proto__:null,default:class DLItem extends AxeAudit{static get meta(){return{id:"dlitem",title:Vl($l.title),failureTitle:Vl($l.failureTitle),description:Vl($l.description),requiredArtifacts:["Accessibility"]}}},UIStrings:$l});const Hl={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.6/document-title)."},Gl=createIcuMessageFn("core/audits/accessibility/document-title.js",Hl);var Yl=Object.freeze({__proto__:null,default:class DocumentTitle extends AxeAudit{static get meta(){return{id:"document-title",title:Gl(Hl.title),failureTitle:Gl(Hl.failureTitle),description:Gl(Hl.description),requiredArtifacts:["Accessibility"]}}},UIStrings:Hl});const Kl={title:"`[id]` attributes on active, focusable elements are unique",failureTitle:"`[id]` attributes on active, focusable elements are not unique",description:"All focusable elements must have a unique `id` to ensure that they're visible to assistive technologies. [Learn how to fix duplicate `id`s](https://dequeuniversity.com/rules/axe/4.6/duplicate-id-active)."
},Jl=createIcuMessageFn("core/audits/accessibility/duplicate-id-active.js",Kl);var Zl=Object.freeze({__proto__:null,default:class DuplicateIdActive extends AxeAudit{static get meta(){return{id:"duplicate-id-active",title:Jl(Kl.title),failureTitle:Jl(Kl.failureTitle),description:Jl(Kl.description),requiredArtifacts:["Accessibility"]}}},UIStrings:Kl});const Xl={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.6/duplicate-id-aria)."},Ql=createIcuMessageFn("core/audits/accessibility/duplicate-id-aria.js",Xl);var eu=Object.freeze({__proto__:null,default:class DuplicateIdAria extends AxeAudit{static get meta(){return{id:"duplicate-id-aria",title:Ql(Xl.title),failureTitle:Ql(Xl.failureTitle),description:Ql(Xl.description),requiredArtifacts:["Accessibility"]}}},UIStrings:Xl
});const tu={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.6/form-field-multiple-labels)."},nu=createIcuMessageFn("core/audits/accessibility/form-field-multiple-labels.js",tu);var au=Object.freeze({__proto__:null,default:class FormFieldMultipleLabels extends AxeAudit{static get meta(){return{id:"form-field-multiple-labels",title:nu(tu.title),failureTitle:nu(tu.failureTitle),description:nu(tu.description),scoreDisplayMode:AxeAudit.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},UIStrings:tu});const ru={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.6/frame-title)."},ou=createIcuMessageFn("core/audits/accessibility/frame-title.js",ru);var iu=Object.freeze({__proto__:null,default:class FrameTitle extends AxeAudit{static get meta(){return{id:"frame-title",title:ou(ru.title),failureTitle:ou(ru.failureTitle),description:ou(ru.description),requiredArtifacts:["Accessibility"]}}},UIStrings:ru});const su={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.6/heading-order)."
},cu=createIcuMessageFn("core/audits/accessibility/heading-order.js",su);var lu=Object.freeze({__proto__:null,default:class HeadingOrder extends AxeAudit{static get meta(){return{id:"heading-order",title:cu(su.title),failureTitle:cu(su.failureTitle),description:cu(su.description),requiredArtifacts:["Accessibility"]}}},UIStrings:su});const uu={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.6/html-has-lang)."},du=createIcuMessageFn("core/audits/accessibility/html-has-lang.js",uu);var mu=Object.freeze({__proto__:null,
default:class HTMLHasLang extends AxeAudit{static get meta(){return{id:"html-has-lang",title:du(uu.title),failureTitle:du(uu.failureTitle),description:du(uu.description),requiredArtifacts:["Accessibility"]}}},UIStrings:uu});const pu={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.6/html-lang-valid)."},gu=createIcuMessageFn("core/audits/accessibility/html-lang-valid.js",pu);var hu=Object.freeze({__proto__:null,default:class HTMLLangValid extends AxeAudit{static get meta(){return{id:"html-lang-valid",title:gu(pu.title),failureTitle:gu(pu.failureTitle),description:gu(pu.description),requiredArtifacts:["Accessibility"]}}},
UIStrings:pu});const fu={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.6/image-alt)."},yu=createIcuMessageFn("core/audits/accessibility/image-alt.js",fu);var bu=Object.freeze({__proto__:null,default:class ImageAlt extends AxeAudit{static get meta(){return{id:"image-alt",title:yu(fu.title),failureTitle:yu(fu.failureTitle),description:yu(fu.description),requiredArtifacts:["Accessibility"]}}},UIStrings:fu});const vu={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.6/input-image-alt)."},wu=createIcuMessageFn("core/audits/accessibility/input-image-alt.js",vu);var Du=Object.freeze({__proto__:null,default:class InputImageAlt extends AxeAudit{static get meta(){return{id:"input-image-alt",title:wu(vu.title),failureTitle:wu(vu.failureTitle),description:wu(vu.description),requiredArtifacts:["Accessibility"]}}},UIStrings:vu});const Eu={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.6/label)."},Tu=createIcuMessageFn("core/audits/accessibility/label.js",Eu)
;var Su=Object.freeze({__proto__:null,default:class Label extends AxeAudit{static get meta(){return{id:"label",title:Tu(Eu.title),failureTitle:Tu(Eu.failureTitle),description:Tu(Eu.description),requiredArtifacts:["Accessibility"]}}},UIStrings:Eu});const Cu={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.6/link-name)."},_u=createIcuMessageFn("core/audits/accessibility/link-name.js",Cu);var Au=Object.freeze({__proto__:null,default:class LinkName extends AxeAudit{static get meta(){return{id:"link-name",title:_u(Cu.title),failureTitle:_u(Cu.failureTitle),description:_u(Cu.description),requiredArtifacts:["Accessibility"]}}},UIStrings:Cu});const ku={
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.6/list)."},Fu=createIcuMessageFn("core/audits/accessibility/list.js",ku);var Ru=Object.freeze({__proto__:null,default:class List extends AxeAudit{static get meta(){return{id:"list",title:Fu(ku.title),failureTitle:Fu(ku.failureTitle),description:Fu(ku.description),requiredArtifacts:["Accessibility"]}}},UIStrings:ku});const xu={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.6/listitem)."},Iu=createIcuMessageFn("core/audits/accessibility/listitem.js",xu);var Nu=Object.freeze({__proto__:null,default:class ListItem extends AxeAudit{static get meta(){return{id:"listitem",title:Iu(xu.title),failureTitle:Iu(xu.failureTitle),description:Iu(xu.description),requiredArtifacts:["Accessibility"]}}},UIStrings:xu});class ManualAudit extends Audit{static get partialMeta(){return{scoreDisplayMode:Audit.SCORING_MODES.MANUAL,requiredArtifacts:[]}}static audit(){return{score:0}}}var Lu=Object.freeze({__proto__:null,default:class CustomControlsLabels extends ManualAudit{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)}}});var Mu=Object.freeze({__proto__:null,default:class CustomControlsRoles extends ManualAudit{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)}}});var Pu=Object.freeze({__proto__:null,default:class FocusTraps extends ManualAudit{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)}}});var Ou=Object.freeze({__proto__:null,default:class FocusableControls extends ManualAudit{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)}}});var Bu=Object.freeze({__proto__:null,default:class InteractiveElementAffordance extends ManualAudit{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)}}});var Uu=Object.freeze({__proto__:null,default:class LogicalTabOrder extends ManualAudit{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)}}});var ju=Object.freeze({__proto__:null,default:class ManagedFocus extends ManualAudit{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)}}});var zu=Object.freeze({__proto__:null,default:class OffscreenContentHidden extends ManualAudit{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)}}});var qu=Object.freeze({__proto__:null,default:class UseLandmarks extends ManualAudit{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)}}});var $u=Object.freeze({__proto__:null,default:class VisualOrderFollowsDOM extends ManualAudit{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)}}});const Vu={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.6/meta-refresh)."},Wu=createIcuMessageFn("core/audits/accessibility/meta-refresh.js",Vu);var Hu=Object.freeze({__proto__:null,default:class MetaRefresh extends AxeAudit{static get meta(){return{id:"meta-refresh",title:Wu(Vu.title),failureTitle:Wu(Vu.failureTitle),description:Wu(Vu.description),requiredArtifacts:["Accessibility"]}}},UIStrings:Vu});const Gu={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.6/meta-viewport)."},Yu=createIcuMessageFn("core/audits/accessibility/meta-viewport.js",Gu);var Ku=Object.freeze({__proto__:null,default:class MetaViewport extends AxeAudit{static get meta(){return{id:"meta-viewport",title:Yu(Gu.title),failureTitle:Yu(Gu.failureTitle),description:Yu(Gu.description),requiredArtifacts:["Accessibility"]}}},UIStrings:Gu});const Ju={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.6/object-alt)."
},Zu=createIcuMessageFn("core/audits/accessibility/object-alt.js",Ju);var Xu=Object.freeze({__proto__:null,default:class ObjectAlt extends AxeAudit{static get meta(){return{id:"object-alt",title:Zu(Ju.title),failureTitle:Zu(Ju.failureTitle),description:Zu(Ju.description),requiredArtifacts:["Accessibility"]}}},UIStrings:Ju});const Qu={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.6/tabindex)."},ed=createIcuMessageFn("core/audits/accessibility/tabindex.js",Qu);var td=Object.freeze({__proto__:null,default:class TabIndex extends AxeAudit{static get meta(){return{id:"tabindex",title:ed(Qu.title),failureTitle:ed(Qu.failureTitle),
description:ed(Qu.description),requiredArtifacts:["Accessibility"]}}},UIStrings:Qu});const nd={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.6/td-headers-attr)."},ad=createIcuMessageFn("core/audits/accessibility/td-headers-attr.js",nd);var rd=Object.freeze({__proto__:null,default:class TDHeadersAttr extends AxeAudit{static get meta(){return{id:"td-headers-attr",title:ad(nd.title),failureTitle:ad(nd.failureTitle),description:ad(nd.description),requiredArtifacts:["Accessibility"]}}
},UIStrings:nd});const od={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.6/th-has-data-cells)."},id=createIcuMessageFn("core/audits/accessibility/th-has-data-cells.js",od);var sd=Object.freeze({__proto__:null,default:class THHasDataCells extends AxeAudit{static get meta(){return{id:"th-has-data-cells",title:id(od.title),failureTitle:id(od.failureTitle),description:id(od.description),scoreDisplayMode:AxeAudit.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},UIStrings:od});const 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.6/valid-lang)."},ld=createIcuMessageFn("core/audits/accessibility/valid-lang.js",cd);var ud=Object.freeze({__proto__:null,default:class ValidLang extends AxeAudit{static get meta(){return{id:"valid-lang",title:ld(cd.title),failureTitle:ld(cd.failureTitle),description:ld(cd.description),requiredArtifacts:["Accessibility"]}}},UIStrings:cd});const dd={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.6/video-caption)."},md=createIcuMessageFn("core/audits/accessibility/video-caption.js",dd);var pd=Object.freeze({__proto__:null,default:class VideoCaption extends AxeAudit{static get meta(){return{id:"video-caption",title:md(dd.title),failureTitle:md(dd.failureTitle),description:md(dd.description),scoreDisplayMode:AxeAudit.SCORING_MODES.INFORMATIVE,requiredArtifacts:["Accessibility"]}}},UIStrings:dd});const gd={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"
},hd=createIcuMessageFn("core/audits/autocomplete.js",gd),fd=["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"],yd=["NO_SERVER_DATA","UNKNOWN_TYPE","EMPTY_TYPE","HTML_TYPE_UNSPECIFIED","HTML_TYPE_UNRECOGNIZED"],bd={
NO_SERVER_DATA:hd(gd.manualReview),UNKNOWN_TYPE:hd(gd.manualReview),EMPTY_TYPE:hd(gd.manualReview),NAME_FIRST:"given-name",NAME_MIDDLE:"additional-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:hd(gd.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:hd(gd.manualReview),HTML_TYPE_ONE_TIME_CODE:"one-time-code",HTML_TYPE_UNRECOGNIZED:hd(gd.manualReview),HTML_TYPE_TRANSACTION_AMOUNT:"transaction-amount",HTML_TYPE_TRANSACTION_CURRENCY:"transaction-currency"};var vd=Object.freeze({__proto__:null,default:class AutocompleteAudit extends Audit{static get meta(){return{id:"autocomplete",title:hd(gd.title),failureTitle:hd(gd.failureTitle),description:hd(gd.description),requiredArtifacts:["Inputs"]}}static checkAttributeValidity(e){if(!e.autocomplete.attribute)return{hasValidTokens:!1};const t=e.autocomplete.attribute.split(" ");for(const e of t)if("section-"!==e.slice(0,8)&&!fd.includes(e))return{hasValidTokens:!1};return e.autocomplete.property?{hasValidTokens:!0,isValidOrder:!0}:{hasValidTokens:!0,isValidOrder:!1}}static audit(e){const t=[],n=[];let a=!1
;for(const r of e.Inputs.inputs){const e=this.checkAttributeValidity(r);if(e.hasValidTokens&&e.isValidOrder)continue;if(!r.autocomplete.prediction)continue;if(yd.includes(r.autocomplete.prediction)&&!r.autocomplete.attribute)continue;a=!0;let o=bd[r.autocomplete.prediction];r.autocomplete.attribute||(r.autocomplete.attribute=""),r.autocomplete.attribute&&n.push(hd(gd.warningInvalid,{token:r.autocomplete.attribute,snippet:r.node.snippet})),!1===e.isValidOrder&&(n.push(hd(gd.warningOrder,{tokens:r.autocomplete.attribute,snippet:r.node.snippet})),o=gd.reviewOrder),r.autocomplete.prediction in bd||!e.isValidOrder?t.push({node:Audit.makeNodeItem(r.node),suggestion:o,current:r.autocomplete.attribute}):Log.warn(`Autocomplete prediction (${r.autocomplete.prediction})\n not found in our mapping`)}const r=[{key:"node",valueType:"node",label:hd(Dr.columnFailingElem)},{key:"current",valueType:"text",label:hd(gd.columnCurrent)},{key:"suggestion",valueType:"text",
label:hd(gd.columnSuggestions)}],o=Audit.makeTableDetails(r,t);let i;return t.length>0&&(i=hd(Dr.displayValueElementsFound,{nodeCount:t.length})),{score:t.length>0?0:1,notApplicable:!a,displayValue:i,details:o,warnings:n}}},UIStrings:gd});const wd={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 an 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-store header cannot enter back/forward cache.",ineligibleAPI:"Ineligible APIs were used.",internalError:"Internal error.",webSocket:"Pages with WebSocket cannot enter back/forward cache.",webTransport:"Pages with WebTransport cannot enter back/forward cache.",webRTC:"Pages with WebRTC cannot enter back/forward cache.",mainResourceHasCacheControlNoStore:"Pages whose main resource has cache-control:no-store cannot enter back/forward cache.",mainResourceHasCacheControlNoCache:"Pages whose main resource has cache-control:no-cache cannot enter back/forward cache.",
subresourceHasCacheControlNoStore:"Pages whose subresource has cache-control:no-store cannot enter back/forward cache.",subresourceHasCacheControlNoCache:"Pages whose subresource has cache-control:no-cache cannot enter back/forward cache.",containsPlugins:"Pages containing plugins are not currently eligible for back/forward cache.",documentLoaded:"The document did not finish loading before navigating away.",dedicatedWorkerOrWorklet:"Pages that use a dedicated worker or worklet are not currently eligible for back/forward cache.",outstandingNetworkRequestOthers:"Pages with an in-flight network request are not currently eligible for back/forward cache.",outstandingIndexedDBTransaction:"Page with ongoing indexed DB transactions are not currently eligible for back/forward cache.",requestedNotificationsPermission:"Pages that have requested notifications permissions are not currently eligible for back/forward cache.",
requestedMIDIPermission:"Pages that have requested MIDI permissions are not currently eligible for back/forward cache.",requestedAudioCapturePermission:"Pages that have requested audio capture permissions are not currently eligible for back/forward cache.",requestedVideoCapturePermission:"Pages that have requested video capture permissions are not currently eligible for back/forward cache.",requestedBackForwardCacheBlockedSensors:"Pages that have requested sensor permissions are not currently eligible for back/forward cache.",requestedBackgroundWorkPermission:"Pages that have requested background sync or fetch permissions are not currently eligible for back/forward cache.",broadcastChannel:"The page cannot be cached because it has a BroadcastChannel instance with registered listeners.",indexedDBConnection:"Pages that have an open IndexedDB connection are not currently eligible for back/forward cache.",webXR:"Pages that use WebXR are not currently eligible for back/forward cache.",
sharedWorker:"Pages that use SharedWorker are not currently eligible for back/forward cache.",webLocks:"Pages that use WebLocks are not currently eligible for back/forward cache.",webHID:"Pages that use WebHID are not currently eligible for back/forward cache.",webShare:"Pages that use WebShare are not currently eligible for back/forwad cache.",requestedStorageAccessGrant:"Pages that have requested storage access are not currently eligible for back/forward cache.",webNfc:"Pages that use WebNfc are not currently eligible for back/forwad cache.",outstandingNetworkRequestFetch:"Pages with an in-flight fetch network request are not currently eligible for back/forward cache.",outstandingNetworkRequestXHR:"Pages with an in-flight XHR network request are not currently eligible for back/forward cache.",appBanner:"Pages that requested an AppBanner are not currently eligible for back/forward cache.",printing:"Pages that show Printing UI are not currently eligible for back/forward cache.",
webDatabase:"Pages that use WebDatabase are not currently eligible for back/forward cache.",pictureInPicture:"Pages that use Picture-in-Picture are not currently eligible for back/forward cache.",portal:"Pages that use portals are not currently eligible for back/forward cache.",speechRecognizer:"Pages that use SpeechRecognizer are not currently eligible for back/forward cache.",idleManager:"Pages that use IdleManager are not currently eligible for back/forward cache.",paymentManager:"Pages that use PaymentManager are not 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 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 WebAuthetication API are not eligible for back/forward cache.",contentFileChooser:"Pages that use FileChooser API are not eligible for back/forward 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 extensions.",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."},Dd=createIcuMessageFn("core/lib/bf-cache-strings.js",wd),Ed={NotPrimaryMainFrame:{name:Dd(wd.notMainFrame)},BackForwardCacheDisabled:{name:Dd(wd.backForwardCacheDisabled)},RelatedActiveContentsExist:{name:Dd(wd.relatedActiveContentsExist)},HTTPStatusNotOK:{name:Dd(wd.HTTPStatusNotOK)},SchemeNotHTTPOrHTTPS:{name:Dd(wd.schemeNotHTTPOrHTTPS)},Loading:{name:Dd(wd.loading)},WasGrantedMediaAccess:{name:Dd(wd.wasGrantedMediaAccess)},HTTPMethodNotGET:{name:Dd(wd.HTTPMethodNotGET)},SubframeIsNavigating:{name:Dd(wd.subframeIsNavigating)},Timeout:{name:Dd(wd.timeout)},CacheLimit:{name:Dd(wd.cacheLimit)},JavaScriptExecution:{
name:Dd(wd.JavaScriptExecution)},RendererProcessKilled:{name:Dd(wd.rendererProcessKilled)},RendererProcessCrashed:{name:Dd(wd.rendererProcessCrashed)},GrantedMediaStreamAccess:{name:Dd(wd.grantedMediaStreamAccess)},CacheFlushed:{name:Dd(wd.cacheFlushed)},ServiceWorkerVersionActivation:{name:Dd(wd.serviceWorkerVersionActivation)},SessionRestored:{name:Dd(wd.sessionRestored)},ServiceWorkerPostMessage:{name:Dd(wd.serviceWorkerPostMessage)},EnteredBackForwardCacheBeforeServiceWorkerHostAdded:{name:Dd(wd.enteredBackForwardCacheBeforeServiceWorkerHostAdded)},ServiceWorkerClaim:{name:Dd(wd.serviceWorkerClaim)},HaveInnerContents:{name:Dd(wd.haveInnerContents)},TimeoutPuttingInCache:{name:Dd(wd.timeoutPuttingInCache)},BackForwardCacheDisabledByLowMemory:{name:Dd(wd.backForwardCacheDisabledByLowMemory)},BackForwardCacheDisabledByCommandLine:{name:Dd(wd.backForwardCacheDisabledByCommandLine)},NetworkRequestDatapipeDrainedAsBytesConsumer:{name:Dd(wd.networkRequestDatapipeDrainedAsBytesConsumer)},
NetworkRequestRedirected:{name:Dd(wd.networkRequestRedirected)},NetworkRequestTimeout:{name:Dd(wd.networkRequestTimeout)},NetworkExceedsBufferLimit:{name:Dd(wd.networkExceedsBufferLimit)},NavigationCancelledWhileRestoring:{name:Dd(wd.navigationCancelledWhileRestoring)},BackForwardCacheDisabledForPrerender:{name:Dd(wd.backForwardCacheDisabledForPrerender)},UserAgentOverrideDiffers:{name:Dd(wd.userAgentOverrideDiffers)},ForegroundCacheLimit:{name:Dd(wd.foregroundCacheLimit)},BackForwardCacheDisabledForDelegate:{name:Dd(wd.backForwardCacheDisabledForDelegate)},UnloadHandlerExistsInMainFrame:{name:Dd(wd.unloadHandlerExistsInMainFrame)},UnloadHandlerExistsInSubFrame:{name:Dd(wd.unloadHandlerExistsInSubFrame)},ServiceWorkerUnregistration:{name:Dd(wd.serviceWorkerUnregistration)},NoResponseHead:{name:Dd(wd.noResponseHead)},CacheControlNoStore:{name:Dd(wd.cacheControlNoStore)},CacheControlNoStoreCookieModified:{name:Dd(wd.cacheControlNoStore)},CacheControlNoStoreHTTPOnlyCookieModified:{
name:Dd(wd.cacheControlNoStore)},DisableForRenderFrameHostCalled:{name:Dd(wd.ineligibleAPI)},BlocklistedFeatures:{name:Dd(wd.ineligibleAPI)},SchedulerTrackedFeatureUsed:{name:Dd(wd.ineligibleAPI)},DomainNotAllowed:{name:Dd(wd.internalError)},ConflictingBrowsingInstance:{name:Dd(wd.internalError)},NotMostRecentNavigationEntry:{name:Dd(wd.internalError)},IgnoreEventAndEvict:{name:Dd(wd.internalError)},BrowsingInstanceNotSwapped:{name:Dd(wd.internalError)},ActivationNavigationsDisallowedForBug1234857:{name:Dd(wd.internalError)},Unknown:{name:Dd(wd.internalError)},RenderFrameHostReused_SameSite:{name:Dd(wd.internalError)},RenderFrameHostReused_CrossSite:{name:Dd(wd.internalError)},WebSocket:{name:Dd(wd.webSocket)},WebTransport:{name:Dd(wd.webTransport)},WebRTC:{name:Dd(wd.webRTC)},MainResourceHasCacheControlNoStore:{name:Dd(wd.mainResourceHasCacheControlNoStore)},MainResourceHasCacheControlNoCache:{name:Dd(wd.mainResourceHasCacheControlNoCache)},SubresourceHasCacheControlNoStore:{
name:Dd(wd.subresourceHasCacheControlNoStore)},SubresourceHasCacheControlNoCache:{name:Dd(wd.subresourceHasCacheControlNoCache)},ContainsPlugins:{name:Dd(wd.containsPlugins)},DocumentLoaded:{name:Dd(wd.documentLoaded)},DedicatedWorkerOrWorklet:{name:Dd(wd.dedicatedWorkerOrWorklet)},OutstandingNetworkRequestOthers:{name:Dd(wd.outstandingNetworkRequestOthers)},OutstandingIndexedDBTransaction:{name:Dd(wd.outstandingIndexedDBTransaction)},RequestedNotificationsPermission:{name:Dd(wd.requestedNotificationsPermission)},RequestedMIDIPermission:{name:Dd(wd.requestedMIDIPermission)},RequestedAudioCapturePermission:{name:Dd(wd.requestedAudioCapturePermission)},RequestedVideoCapturePermission:{name:Dd(wd.requestedVideoCapturePermission)},RequestedBackForwardCacheBlockedSensors:{name:Dd(wd.requestedBackForwardCacheBlockedSensors)},RequestedBackgroundWorkPermission:{name:Dd(wd.requestedBackgroundWorkPermission)},BroadcastChannel:{name:Dd(wd.broadcastChannel)},IndexedDBConnection:{
name:Dd(wd.indexedDBConnection)},WebXR:{name:Dd(wd.webXR)},SharedWorker:{name:Dd(wd.sharedWorker)},WebLocks:{name:Dd(wd.webLocks)},WebHID:{name:Dd(wd.webHID)},WebShare:{name:Dd(wd.webShare)},RequestedStorageAccessGrant:{name:Dd(wd.requestedStorageAccessGrant)},WebNfc:{name:Dd(wd.webNfc)},OutstandingNetworkRequestFetch:{name:Dd(wd.outstandingNetworkRequestFetch)},OutstandingNetworkRequestXHR:{name:Dd(wd.outstandingNetworkRequestXHR)},AppBanner:{name:Dd(wd.appBanner)},Printing:{name:Dd(wd.printing)},WebDatabase:{name:Dd(wd.webDatabase)},PictureInPicture:{name:Dd(wd.pictureInPicture)},Portal:{name:Dd(wd.portal)},SpeechRecognizer:{name:Dd(wd.speechRecognizer)},IdleManager:{name:Dd(wd.idleManager)},PaymentManager:{name:Dd(wd.paymentManager)},SpeechSynthesis:{name:Dd(wd.speechSynthesis)},KeyboardLock:{name:Dd(wd.keyboardLock)},WebOTPService:{name:Dd(wd.webOTPService)},OutstandingNetworkRequestDirectSocket:{name:Dd(wd.outstandingNetworkRequestDirectSocket)},InjectedJavascript:{
name:Dd(wd.injectedJavascript)},InjectedStyleSheet:{name:Dd(wd.injectedStyleSheet)},Dummy:{name:Dd(wd.internalError)},ContentSecurityHandler:{name:Dd(wd.contentSecurityHandler)},ContentWebAuthenticationAPI:{name:Dd(wd.contentWebAuthenticationAPI)},ContentFileChooser:{name:Dd(wd.contentFileChooser)},ContentSerial:{name:Dd(wd.contentSerial)},ContentFileSystemAccess:{name:Dd(wd.contentFileSystemAccess)},ContentMediaDevicesDispatcherHost:{name:Dd(wd.contentMediaDevicesDispatcherHost)},ContentWebBluetooth:{name:Dd(wd.contentWebBluetooth)},ContentWebUSB:{name:Dd(wd.contentWebUSB)},ContentMediaSession:{name:Dd(wd.contentMediaSession)},ContentMediaSessionService:{name:Dd(wd.contentMediaSessionService)},ContentMediaPlay:{name:Dd(wd.contentMediaPlay)},ContentScreenReader:{name:Dd(wd.contentScreenReader)},EmbedderPopupBlockerTabHelper:{name:Dd(wd.embedderPopupBlockerTabHelper)},EmbedderSafeBrowsingTriggeredPopupBlocker:{name:Dd(wd.embedderSafeBrowsingTriggeredPopupBlocker)},
EmbedderSafeBrowsingThreatDetails:{name:Dd(wd.embedderSafeBrowsingThreatDetails)},EmbedderAppBannerManager:{name:Dd(wd.embedderAppBannerManager)},EmbedderDomDistillerViewerSource:{name:Dd(wd.embedderDomDistillerViewerSource)},EmbedderDomDistillerSelfDeletingRequestDelegate:{name:Dd(wd.embedderDomDistillerSelfDeletingRequestDelegate)},EmbedderOomInterventionTabHelper:{name:Dd(wd.embedderOomInterventionTabHelper)},EmbedderOfflinePage:{name:Dd(wd.embedderOfflinePage)},EmbedderChromePasswordManagerClientBindCredentialManager:{name:Dd(wd.embedderChromePasswordManagerClientBindCredentialManager)},EmbedderPermissionRequestManager:{name:Dd(wd.embedderPermissionRequestManager)},EmbedderModalDialog:{name:Dd(wd.embedderModalDialog)},EmbedderExtensions:{name:Dd(wd.embedderExtensions)},EmbedderExtensionMessaging:{name:Dd(wd.embedderExtensionMessaging)},EmbedderExtensionMessagingForOpenPort:{name:Dd(wd.embedderExtensionMessagingForOpenPort)},EmbedderExtensionSentMessageToCachedFrame:{
name:Dd(wd.embedderExtensionSentMessageToCachedFrame)},ErrorDocument:{name:Dd(wd.errorDocument)},FencedFramesEmbedder:{name:Dd(wd.fencedFramesEmbedder)},KeepaliveRequest:{name:Dd(wd.keepaliveRequest)}},Td={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",displayValue:"{itemCount, plural,\n =1 {1 failure reason}\n other {# failure reasons}\n }"
},Sd=createIcuMessageFn("core/audits/bf-cache.js",Td),Cd=["PageSupportNeeded","SupportPending","Circumstantial"],_d={PageSupportNeeded:Sd(Td.actionableFailureType),Circumstantial:Sd(Td.notActionableFailureType),SupportPending:Sd(Td.supportPendingFailureType)};var Ad=Object.freeze({__proto__:null,default:class BFCache extends Audit{static get meta(){return{id:"bf-cache",title:Sd(Td.title),failureTitle:Sd(Td.failureTitle),description:Sd(Td.description),supportedModes:["navigation","timespan"],requiredArtifacts:["BFCacheFailures"]}}static async audit(e){const t=e.BFCacheFailures;if(!t.length)return{score:1};const{notRestoredReasonsTree:n}=t[0],a=[];for(const e of Cd){const t=n[e];for(const[n,r]of Object.entries(t))a.push({reason:Ed[n]?.name??n,failureType:_d[e],subItems:{type:"subitems",items:r.map((e=>({frameUrl:e})))},protocolReason:n})}const r=[{key:"reason",valueType:"text",subItemsHeading:{key:"frameUrl",valueType:"url"},label:Sd(Td.failureReasonColumn)},{key:"failureType",
valueType:"text",label:Sd(Td.failureTypeColumn)}],o=Audit.makeTableDetails(r,a),i=a.length?Sd(Td.displayValue,{itemCount:a.length}):void 0;return{score:a.length?0:1,displayValue:i,details:o}}},UIStrings:Td});const kd={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"]}},Fd={};for(const e of Object.values(kd))for(const t of e.traceEventNames)Fd[t]=e;class MainThreadTasks$2{static _createNewTaskNode(e,t){const n="X"===e.ph&&!t,a="B"===e.ph&&t&&"E"===t.ph;if(!n&&!a)throw new Error("Invalid parameters for _createNewTaskNode");const r=e.ts,o=t?t.ts:e.ts+Number(e.dur||0);return{event:e,endEvent:t,startTime:r,endTime:o,duration:o-r,unbounded:!1,parent:void 0,children:[],attributableURLs:[],group:kd.other,selfTime:NaN}}
static _assignAllTimersUntilTs(e,t,n,a){for(;a.length;){const r=a.pop();if(!r)break;if(r.ts>t){a.push(r);break}if(r.ts<e.startTime)continue;const o=r.args.data.timerId;n.timers.set(o,e)}}static _createTasksFromStartAndEndEvents(e,t,n){const a=[],r=t.slice().reverse();for(let t=0;t<e.length;t++){const o=e[t];if("X"===o.ph){a.push(MainThreadTasks$2._createNewTaskNode(o));continue}let i,s=-1,c=0,l=t+1;for(let t=r.length-1;t>=0;t--){const n=r[t];for(;l<e.length&&!(e[l].ts>=n.ts);l++)e[l].name===o.name&&c++;if(n.name===o.name&&!(n.ts<o.ts)){if(!(c>0)){s=t;break}c--}}let u=!1;-1===s?(i={...o,ph:"E",ts:n},u=!0):i=s===r.length-1?r.pop():r.splice(s,1)[0];const d=MainThreadTasks$2._createNewTaskNode(o,i);d.unbounded=u,a.push(d)}if(r.length)throw new Error(`Fatal trace logic error - ${r.length} unmatched end events`);return a}static _createTaskRelationships(e,t,n){let a;const r=t.slice().reverse();for(let t=0;t<e.length;t++){let o=e[t];if("XHRReadyStateChange"===o.event.name){
const e=o.event.args.data,t=e?.url;e&&t&&1===e.readyState&&n.xhrs.set(t,o)}for(;a&&Number.isFinite(a.endTime)&&a.endTime<=o.startTime;)MainThreadTasks$2._assignAllTimersUntilTs(a,a.endTime,n,r),a=a.parent;if(a){if(o.endTime>a.endTime){const e=o.endTime-a.endTime;if(e<1e3)a.endTime=o.endTime,a.duration+=e;else if(o.unbounded)o.endTime=a.endTime,o.duration=o.endTime-o.startTime;else{if(!(o.startTime-a.startTime<1e3)||a.children.length){const t=new Error("Fatal trace logic error - child cannot end after parent");throw t.timeDelta=e,t.nextTaskEvent=o.event,t.nextTaskEndEvent=o.endEvent,t.nextTaskEndTime=o.endTime,t.currentTaskEvent=a.event,t.currentTaskEndEvent=a.endEvent,t.currentTaskEndTime=a.endTime,t}{const e=o,t=a,n=a.parent;if(n){const a=n.children.length-1;if(n.children[a]!==t)throw new Error("Fatal trace logic error - impossible children");n.children.pop(),n.children.push(e)}e.parent=n,e.startTime=t.startTime,e.duration=e.endTime-e.startTime,a=e,o=t}}}o.parent=a,a.children.push(o),
MainThreadTasks$2._assignAllTimersUntilTs(a,o.startTime,n,r)}a=o}a&&MainThreadTasks$2._assignAllTimersUntilTs(a,a.endTime,n,r)}static _createTasksFromEvents(e,t,n){const a=[],r=[],o=[];for(const t of e)"X"!==t.ph&&"B"!==t.ph||a.push(t),"E"===t.ph&&r.push(t),"TimerInstall"===t.name&&o.push(t);const i=MainThreadTasks$2._createTasksFromStartAndEndEvents(a,r,n).sort(((e,t)=>e.startTime-t.startTime||t.duration-e.duration));return MainThreadTasks$2._createTaskRelationships(i,o,t),i.sort(((e,t)=>e.startTime-t.startTime||t.duration-e.duration))}static _computeRecursiveSelfTime(e,t){if(t&&e.endTime>t.endTime)throw new Error("Fatal trace logic error - child cannot end after parent");const n=e.children.map((t=>MainThreadTasks$2._computeRecursiveSelfTime(t,e))).reduce(((e,t)=>e+t),0);return e.selfTime=e.duration-n,e.duration}static _computeRecursiveAttributableURLs(e,t,n,a){const r=e.event.args,o={...r.beginData||{},...r.data||{}},i=o.frame||"";let s=a.frameURLsById.get(i)
;const c=(o.stackTrace||[]).map((e=>e.url)),l=c[0];i&&s&&s.startsWith("about:")&&l&&(a.frameURLsById.set(i,l),s=l);let u=[];switch(e.event.name){case"v8.compile":case"EvaluateScript":case"FunctionCall":u=[o.url,s];break;case"v8.compileModule":u=[e.event.args.fileName];break;case"TimerFire":{const t=e.event.args.data.timerId,n=a.timers.get(t);if(!n)break;u=n.attributableURLs;break}case"ParseHTML":u=[o.url,s];break;case"ParseAuthorStyleSheet":u=[o.styleSheetUrl,s];break;case"UpdateLayoutTree":case"Layout":case"Paint":if(s){u=[s];break}if(n.length)break;u=a.lastTaskURLs;break;case"XHRReadyStateChange":case"XHRLoad":{const e=o.url,t=o.readyState;if(!e||"number"==typeof t&&4!==t)break;const n=a.xhrs.get(e);if(!n)break;u=n.attributableURLs;break}default:u=[]}const d=Array.from(t);for(const e of[...u,...c])e&&(n.includes(e)||n.push(e),d[d.length-1]!==e&&d.push(e));e.attributableURLs=d,e.children.forEach((e=>MainThreadTasks$2._computeRecursiveAttributableURLs(e,d,n,a))),
d.length||e.parent||!n.length||MainThreadTasks$2._setRecursiveEmptyAttributableURLs(e,n)}static _setRecursiveEmptyAttributableURLs(e,t){e.attributableURLs.length||(e.attributableURLs=t.slice(),e.children.forEach((e=>MainThreadTasks$2._setRecursiveEmptyAttributableURLs(e,t))))}static _computeRecursiveTaskGroup(e,t){const n=Fd[e.event.name];e.group=n||t||kd.other,e.children.forEach((t=>MainThreadTasks$2._computeRecursiveTaskGroup(t,e.group)))}static getMainThreadTasks(e,t,n,a){const r=new Map,o=new Map,i=new Map;t.forEach((({id:e,url:t})=>i.set(e,t)));const s={timers:r,xhrs:o,frameURLsById:i,lastTaskURLs:[]},c=MainThreadTasks$2._createTasksFromEvents(e,s,n);for(const e of c)e.parent||(MainThreadTasks$2._computeRecursiveSelfTime(e,void 0),MainThreadTasks$2._computeRecursiveAttributableURLs(e,[],[],s),MainThreadTasks$2._computeRecursiveTaskGroup(e),s.lastTaskURLs=e.attributableURLs);const l=a??c[0].startTime;for(const e of c)if(e.startTime=(e.startTime-l)/1e3,e.endTime=(e.endTime-l)/1e3,
e.duration/=1e3,e.selfTime/=1e3,!Number.isFinite(e.selfTime))throw new Error("Invalid task timing data");return c}static printTaskTreeToDebugString(e,t={}){const n=Math.max(...e.map((e=>e.endTime)),0),{printWidth:a=100,startTime:r=0,endTime:o=n,taskLabelFn:i=(e=>e.event.name)}=t;function computeTaskDepth(e){let t=0;for(;e.parent;e=e.parent)t++;return t}const s=(o-r)/a,c=new Map,l=new Map;for(const t of e){if(t.startTime>o||t.endTime<r)continue;const e=computeTaskDepth(t),n=l.get(e)||[];n.push(t),l.set(e,n);const a=String.fromCharCode(65+c.size%26);c.set(t,{id:a,task:t})}const u=[`Trace Duration: ${n.toFixed(0)}ms`,`Range: [${r}, ${o}]`,`█ = ${s.toFixed(2)}ms`,""],d=Array.from(l.entries()).sort(((e,t)=>e[0]-t[0]));for(const[,e]of d){const t=Array.from({length:a}).map((()=>" "));for(const n of e){const e=Math.max(n.startTime,r),a=Math.min(n.endTime,o),{id:i}=c.get(n)||{id:"?"},l=Math.floor(e/s),u=Math.floor(a/s),d=Math.floor((l+u)/2);for(let e=l;e<=u;e++)t[e]="█"
;for(let e=0;e<i.length;e++)t[d]=i}u.push(t.join(""))}u.push("");for(const{id:e,task:t}of c.values())u.push(`${e} = ${i(t)}`);return u.join("\n")}}const Rd=makeComputedArtifact(class MainThreadTasks$1{static async compute_(e,t){const{mainThreadEvents:n,frames:a,timestamps:r}=await co.request(e,t);return MainThreadTasks$2.getMainThreadTasks(n,a,r.traceEnd,r.timeOrigin)}},null),xd=new Set(["CpuProfiler::StartProfiling"]),Id=new Set(["V8.GCCompactor","MajorGC","MinorGC"]);function getJavaScriptURLs(e){const t=new Set;for(const n of e)n.resourceType===NetworkRequest.TYPES.Script&&t.add(n.url);return t}function getAttributableURLForTask(e,t){const n=e.attributableURLs.find((e=>t.has(e))),a=e.attributableURLs[0];let r=n||a;return r&&"about:blank"!==r||(r=xd.has(e.event.name)?"Browser":Id.has(e.event.name)?"Browser GC":"Unattributable"),r}function getExecutionTimingsByURL(e,t){const n=getJavaScriptURLs(t),a=new Map;for(const t of e){
const e=getAttributableURLForTask(t,n),r=a.get(e)||{},o=r[t.group.id]||0;r[t.group.id]=o+t.selfTime,a.set(e,r)}return a}const Nd={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."},Ld=createIcuMessageFn("core/audits/bootup-time.js",Nd);class BootupTime extends Audit{static get meta(){return{id:"bootup-time",title:Ld(Nd.title),failureTitle:Ld(Nd.failureTitle),description:Ld(Nd.description),
scoreDisplayMode:Audit.SCORING_MODES.NUMERIC,requiredArtifacts:["traces","devtoolsLogs"]}}static get defaultOptions(){return{p10:1282,median:3500,thresholdInMs:50}}static async audit(e,t){const n=t.settings||{},a=e.traces[BootupTime.DEFAULT_PASS],r=e.devtoolsLogs[BootupTime.DEFAULT_PASS],o=await go.request(r,t),i=await Rd.request(a,t),s="simulate"===n.throttlingMethod?n.throttling.cpuSlowdownMultiplier:1,c=getExecutionTimingsByURL(i,o);let l=!1,u=0;const d=Array.from(c).map((([e,n])=>{let a=0;for(const[e,t]of Object.entries(n))n[e]=t*s,a+=t*s;const r=n[kd.scriptEvaluation.id]||0,o=n[kd.scriptParseCompile.id]||0;return a>=t.options.thresholdInMs&&(u+=r+o),l=l||e.startsWith("chrome-extension:")&&r>100,{url:e,total:a,scripting:r,scriptParseCompile:o}})).filter((e=>e.total>=t.options.thresholdInMs)).sort(((e,t)=>t.total-e.total));let m;l&&(m=[Ld(Nd.chromeExtensionsWarning)]);const p={wastedMs:u},h=[{key:"url",valueType:"url",label:Ld(Dr.columnURL)},{key:"total",granularity:1,
valueType:"ms",label:Ld(Nd.columnTotal)},{key:"scripting",granularity:1,valueType:"ms",label:Ld(Nd.columnScriptEval)},{key:"scriptParseCompile",granularity:1,valueType:"ms",label:Ld(Nd.columnScriptParse)}],f=BootupTime.makeTableDetails(h,d,p);return{score:Audit.computeLogNormalScore({p10:t.options.p10,median:t.options.median},u),numericValue:u,numericUnit:"millisecond",displayValue:u>0?Ld(Dr.seconds,{timeInMs:u}):"",details:f,runWarnings:m}}}var Md=Object.freeze({__proto__:null,default:BootupTime,UIStrings:Nd});class LanternMetric{static getScriptUrls(e,t){const n=new Set;return e.traverse((e=>{e.type!==BaseNode.TYPES.CPU&&e.record.resourceType===NetworkRequest.TYPES.Script&&(t&&!t(e)||n.add(e.record.url))})),n}static get COEFFICIENTS(){throw new Error("COEFFICIENTS unimplemented!")}static getScaledCoefficients(e){return this.COEFFICIENTS}static getOptimisticGraph(e,t){throw new Error("Optimistic graph unimplemented!")}static getPessimisticGraph(e,t){
throw new Error("Pessmistic graph unimplemented!")}static getEstimateFromSimulation(e,t){return e}static async computeMetricWithGraphs(e,t,n){if("navigation"!==(e.gatherContext||{gatherMode:"navigation"}).gatherMode)throw new Error("Lantern metrics can only be computed on navigations");const a=this.name.replace("Lantern",""),r=await mo.request(e,t),o=await Dc.request(e.trace,t),i=e.simulator||await Wo.request(e,t),s=this.getOptimisticGraph(r,o),c=this.getPessimisticGraph(r,o);let l={label:`optimistic${a}`};const u=i.simulate(s,l);l={label:`optimisticFlex${a}`,flexibleOrdering:!0};const d=i.simulate(s,l);l={label:`pessimistic${a}`};const m=i.simulate(c,l),p=this.getEstimateFromSimulation(u.timeInMs<d.timeInMs?u:d,{...n,optimistic:!0}),h=this.getEstimateFromSimulation(m,{...n,optimistic:!1}),f=this.getScaledCoefficients(i.rtt),y=f.intercept>0?Math.min(1,p.timeInMs/1e3):1;return{timing:f.intercept*y+f.optimistic*p.timeInMs+f.pessimistic*h.timeInMs,optimisticEstimate:p,
pessimisticEstimate:h,optimisticGraph:s,pessimisticGraph:c}}static async compute_(e,t){return this.computeMetricWithGraphs(e,t)}}const Pd=makeComputedArtifact(class LanternFirstContentfulPaint extends LanternMetric{static get COEFFICIENTS(){return{intercept:0,optimistic:.5,pessimistic:.5}}static getBlockingNodeData(e,t,n,a){const r=new Map,o=[];e.traverse((e=>{if(e.type===BaseNode.TYPES.CPU){e.startTime<=t&&o.push(e);const n=e.getEvaluateScriptURLs();for(const t of n){const n=r.get(t)||e;r.set(t,e.startTime<n.startTime?e:n)}}})),o.sort(((e,t)=>e.startTime-t.startTime));const i=LanternMetric.getScriptUrls(e,(e=>e.endTime<=t&&n(e))),s=new Set,c=new Set;for(const e of i){const t=r.get(e);t&&(o.includes(t)?c.add(t.id):s.add(e))}const l=o.find((e=>e.didPerformLayout()));l&&c.add(l.id);const u=o.find((e=>e.childEvents.some((e=>"Paint"===e.name))));u&&c.add(u.id);const d=o.find((e=>e.childEvents.some((e=>"ParseHTML"===e.name))));return d&&c.add(d.id),a&&o.filter(a).forEach((e=>c.add(e.id))),{
definitelyNotRenderBlockingScriptUrls:s,blockingCpuNodeIds:c}}static getFirstPaintBasedGraph(e,t,n,a){const{definitelyNotRenderBlockingScriptUrls:r,blockingCpuNodeIds:o}=this.getBlockingNodeData(e,t,n,a);return e.cloneWithRelationships((e=>{if(e.type===BaseNode.TYPES.NETWORK){if((e.endTime>t||e.startTime>t)&&!e.isMainDocument())return!1;const a=e.record.url;return!r.has(a)&&n(e)}return o.has(e.id)}))}static getOptimisticGraph(e,t){return this.getFirstPaintBasedGraph(e,t.timestamps.firstContentfulPaint,(e=>e.hasRenderBlockingPriority()&&"script"!==e.initiatorType))}static getPessimisticGraph(e,t){return this.getFirstPaintBasedGraph(e,t.timestamps.firstContentfulPaint,(e=>e.hasRenderBlockingPriority()))}},["devtoolsLog","gatherContext","settings","simulator","trace","URL"]);const Od=makeComputedArtifact(class LanternFirstMeaningfulPaint extends LanternMetric{static get COEFFICIENTS(){return{intercept:0,optimistic:.5,pessimistic:.5}}static getOptimisticGraph(e,t){
const n=t.timestamps.firstMeaningfulPaint;if(!n)throw new LighthouseError(LighthouseError.errors.NO_FMP);return Pd.getFirstPaintBasedGraph(e,n,(e=>e.hasRenderBlockingPriority()&&"script"!==e.initiatorType))}static getPessimisticGraph(e,t){const n=t.timestamps.firstMeaningfulPaint;if(!n)throw new LighthouseError(LighthouseError.errors.NO_FMP);return Pd.getFirstPaintBasedGraph(e,n,(e=>e.hasRenderBlockingPriority()),(e=>e.didPerformLayout()))}static async compute_(e,t){const n=await Pd.request(e,t),a=await this.computeMetricWithGraphs(e,t);return a.timing=Math.max(a.timing,n.timing),a}},["devtoolsLog","gatherContext","settings","simulator","trace","URL"]);class LanternInteractive extends LanternMetric{static get COEFFICIENTS(){return{intercept:0,optimistic:.5,pessimistic:.5}}static getOptimisticGraph(e){return e.cloneWithRelationships((e=>{if(e.type===BaseNode.TYPES.CPU)return e.event.dur>2e4
;const t=e.record.resourceType===NetworkRequest.TYPES.Image,n=e.record.resourceType===NetworkRequest.TYPES.Script;return!t&&(n||"High"===e.record.priority||"VeryHigh"===e.record.priority)}))}static getPessimisticGraph(e){return e}static getEstimateFromSimulation(e,t){if(!t.fmpResult)throw new Error("missing fmpResult");const n=LanternInteractive.getLastLongTaskEndTime(e.nodeTimings),a=t.optimistic?t.fmpResult.optimisticEstimate.timeInMs:t.fmpResult.pessimisticEstimate.timeInMs;return{timeInMs:Math.max(a,n),nodeTimings:e.nodeTimings}}static async compute_(e,t){const n=await Od.request(e,t),a=await this.computeMetricWithGraphs(e,t,{fmpResult:n});return a.timing=Math.max(a.timing,n.timing),a}static getLastLongTaskEndTime(e,t=50){return Array.from(e.entries()).filter((([e,n])=>e.type===BaseNode.TYPES.CPU&&n.duration>t)).map((([e,t])=>t.endTime)).reduce(((e,t)=>Math.max(e||0,t||0)),0)}}
const Bd=makeComputedArtifact(LanternInteractive,["devtoolsLog","gatherContext","settings","simulator","trace","URL"]),Ud=createIcuMessageFn("core/audits/byte-efficiency/byte-efficiency-audit.js",{});class ByteEfficiencyAudit extends Audit{static scoreForWastedMs(e){return 0===e?1:e<300?linearInterpolation(0,1,300,.75,e):e<750?linearInterpolation(300,.75,750,.5,e):Math.max(0,linearInterpolation(750,.5,5e3,0,e))}static estimateTransferSize(e,t,n){if(e){if(e.resourceType===n)return e.transferSize||0;{const n=e.transferSize||0,a=e.resourceSize||0,r=Number.isFinite(a)&&a>0?n/a:1;return Math.round(t*r)}}switch(n){case"Stylesheet":return Math.round(.2*t);case"Script":case"Document":return Math.round(.33*t);default:return Math.round(.5*t)}}static async audit(e,t){const n=e.GatherContext,a=e.traces[Audit.DEFAULT_PASS],r=e.devtoolsLogs[Audit.DEFAULT_PASS],o=e.URL,i={devtoolsLog:r,settings:t?.settings||{}},s=await go.request(r,t);if(!s.some((e=>e.transferSize))&&"timespan"===n.gatherMode)return{
score:1,notApplicable:!0};const[c,l,u]=await Promise.all([this.audit_(e,s,t),"navigation"===n.gatherMode?mo.request({trace:a,devtoolsLog:r,URL:o},t):null,Wo.request(i,t)]);return this.createAuditProduct(c,l,u,n)}static computeWasteWithTTIGraph(e,t,n,a){const r=`${(a=Object.assign({includeLoad:!0,label:this.meta.id},a)).label}-before`,o=`${a.label}-after`,i=n.simulate(t,{label:r}),s=a.providedWastedBytesByUrl||new Map;if(!a.providedWastedBytesByUrl)for(const{url:t,wastedBytes:n}of e)s.set(t,(s.get(t)||0)+n);const c=new Map;t.traverse((e=>{if("network"!==e.type)return;const t=s.get(e.record.url);if(!t)return;const n=e.record.transferSize;c.set(e.record.requestId,n),e.record.transferSize=Math.max(n-t,0)}));const l=n.simulate(t,{label:o});t.traverse((e=>{if("network"!==e.type)return;const t=c.get(e.record.requestId);void 0!==t&&(e.record.transferSize=t)}));const u=i.timeInMs-l.timeInMs;let d=Bd.getLastLongTaskEndTime(i.nodeTimings)-Bd.getLastLongTaskEndTime(l.nodeTimings)
;return a.includeLoad&&(d=Math.max(d,u)),10*Math.round(Math.max(d,0)/10)}static createAuditProduct(e,t,n,a){const r=e.items.sort(((e,t)=>t.wastedBytes-e.wastedBytes)),o=r.reduce(((e,t)=>e+t.wastedBytes),0);let i;if("navigation"===a.gatherMode){if(!t)throw Error("Page dependency graph should always be computed in navigation mode");i=this.computeWasteWithTTIGraph(r,t,n,{providedWastedBytesByUrl:e.wastedBytesByUrl})}else i=n.computeWastedMsFromWastedBytes(o);let s=e.displayValue||"";void 0===e.displayValue&&o&&(s=Ud(Dr.displayValueByteSavings,{wastedBytes:o}));const c=Audit.makeOpportunityDetails(e.headings,r,{overallSavingsMs:i,overallSavingsBytes:o});return{explanation:e.explanation,warnings:e.warnings,displayValue:s,numericValue:i,numericUnit:"millisecond",score:ByteEfficiencyAudit.scoreForWastedMs(i),details:c}}static audit_(e,t,n){throw new Error("audit_ unimplemented")}}var jd={exports:{}},zd={};Object.defineProperty(zd,"__esModule",{value:!0}),zd.ParsedURL=zd.normalizePath=void 0,
zd.normalizePath=function normalizePath(e){if(-1===e.indexOf("..")&&-1===e.indexOf("."))return e;const t=("/"===e[0]?e.substring(1):e).split("/"),n=[];for(const e of t)"."!==e&&(".."===e?n.pop():n.push(e));let a=n.join("/");return"/"===e[0]&&a&&(a="/"+a),"/"===a[a.length-1]||"/"!==e[e.length-1]&&"."!==t[t.length-1]&&".."!==t[t.length-1]||(a+="/"),a};class ParsedURL$1{isValid;url;scheme;user;host;port;path;queryParams;fragment;folderPathComponents;lastPathComponent;blobInnerScheme;#displayNameInternal;#dataURLDisplayNameInternal;constructor(e){this.isValid=!1,this.url=e,this.scheme="",this.user="",this.host="",this.port="",this.path="",this.queryParams="",this.fragment="",this.folderPathComponents="",this.lastPathComponent="";const t=this.url.startsWith("blob:"),n=(t?e.substring(5):e).match(ParsedURL$1.urlRegex());if(n)this.isValid=!0,t?(this.blobInnerScheme=n[2].toLowerCase(),this.scheme="blob"):this.scheme=n[2].toLowerCase(),this.user=n[3]??"",this.host=n[4]??"",this.port=n[5]??"",
this.path=n[6]??"/",this.queryParams=n[7]??"",this.fragment=n[8]??"";else{if(this.url.startsWith("data:"))return void(this.scheme="data");if(this.url.startsWith("blob:"))return void(this.scheme="blob");if("about:blank"===this.url)return void(this.scheme="about");this.path=this.url}const a=this.path.lastIndexOf("/");-1!==a?(this.folderPathComponents=this.path.substring(0,a),this.lastPathComponent=this.path.substring(a+1)):this.lastPathComponent=this.path}static concatenate(e,...t){return e.concat(...t)}static beginsWithWindowsDriveLetter(e){return/^[A-Za-z]:/.test(e)}static beginsWithScheme(e){return/^[A-Za-z][A-Za-z0-9+.-]*:/.test(e)}static isRelativeURL(e){return!this.beginsWithScheme(e)||this.beginsWithWindowsDriveLetter(e)}get displayName(){return this.#displayNameInternal?this.#displayNameInternal:this.isDataURL()?this.dataURLDisplayName():this.isBlobURL()||this.isAboutBlank()?this.url:(this.#displayNameInternal=this.lastPathComponent,
this.#displayNameInternal||(this.#displayNameInternal=(this.host||"")+"/"),"/"===this.#displayNameInternal&&(this.#displayNameInternal=this.url),this.#displayNameInternal)}static urlRegexInstance=null}zd.ParsedURL=ParsedURL$1;var qd={ParsedURL:zd};var $d={ArrayUtilities:{lowerBound:function lowerBound(e,t,n,a,r){let o=a||0,i=void 0!==r?r:e.length;for(;o<i;){const a=o+i>>1;n(t,e[a])>0?o=a+1:i=a}return i},upperBound:function upperBound(e,t,n,a,r){let o=a||0,i=void 0!==r?r:e.length;for(;o<i;){const a=o+i>>1;n(t,e[a])>=0?o=a+1:i=a}return i}},DevToolsPath:{EmptyUrlString:""}};!function(e,t){const n=qd,a=$d;Object.defineProperty(t,"__esModule",{value:!0}),t.TextSourceMap=t.SourceMapEntry=t.Offset=t.Section=t.SourceMapV3=void 0;t.SourceMapV3=class SourceMapV3{version;file;sources;sections;mappings;sourceRoot;names;sourcesContent;x_google_ignoreList;constructor(){}};t.Section=class Section{map;offset;url;constructor(){}};t.Offset=class Offset{line;column;constructor(){}};class SourceMapEntry{
lineNumber;columnNumber;sourceURL;sourceLineNumber;sourceColumnNumber;name;constructor(e,t,n,a,r,o){this.lineNumber=e,this.columnNumber=t,this.sourceURL=n,this.sourceLineNumber=a,this.sourceColumnNumber=r,this.name=o}static compare(e,t){return e.lineNumber!==t.lineNumber?e.lineNumber-t.lineNumber:e.columnNumber-t.columnNumber}}t.SourceMapEntry=SourceMapEntry;const r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=new Map;for(let e=0;e<r.length;++e)o.set(r.charAt(e),e);const i=new WeakMap;class TextSourceMap{#initiator;#json;#compiledURLInternal;#sourceMappingURL;#baseURL;#mappingsInternal;#sourceInfos;constructor(e,t,n,a){if(this.#initiator=a,this.#json=n,this.#compiledURLInternal=e,this.#sourceMappingURL=t,this.#baseURL=t.startsWith("data:")?e:t,this.#mappingsInternal=null,this.#sourceInfos=new Map,this.#json.sections){Boolean(this.#json.sections.find((e=>Boolean(e.url))))&&console.warn(`SourceMap "${t}" contains unsupported "URL" field in one of its sections.`)}
this.eachSection(this.parseSources.bind(this))}compiledURL(){return this.#compiledURLInternal}url(){return this.#sourceMappingURL}sourceURLs(){return[...this.#sourceInfos.keys()]}embeddedContentByURL(e){const t=this.#sourceInfos.get(e);return t?t.content:null}findEntry(e,t){const n=this.mappings(),r=a.ArrayUtilities.upperBound(n,void 0,((n,a)=>e-a.lineNumber||t-a.columnNumber));return r?n[r-1]:null}findEntryRanges(e,t){const n=this.mappings(),r=a.ArrayUtilities.upperBound(n,void 0,((n,a)=>e-a.lineNumber||t-a.columnNumber));if(!r)return null;const o=r-1,i=n[o].sourceURL;if(!i)return null;const s=r<n.length?n[r].lineNumber:2**31-1,c=r<n.length?n[r].columnNumber:2**31-1,l=new TextUtils.TextRange.TextRange(n[o].lineNumber,n[o].columnNumber,s,c),u=this.reversedMappings(i),d=n[o].sourceLineNumber,m=n[o].sourceColumnNumber,p=a.ArrayUtilities.upperBound(u,void 0,((e,t)=>d-n[t].sourceLineNumber||m-n[t].sourceColumnNumber));if(!p)return null
;const h=p<u.length?n[u[p]].sourceLineNumber:2**31-1,f=p<u.length?n[u[p]].sourceColumnNumber:2**31-1;return{range:l,sourceRange:new TextUtils.TextRange.TextRange(d,m,h,f),sourceURL:i}}sourceLineMapping(e,t,n){const r=this.mappings(),o=this.reversedMappings(e),i=a.ArrayUtilities.lowerBound(o,t,lineComparator),s=a.ArrayUtilities.upperBound(o,t,lineComparator);if(i>=o.length||r[o[i]].sourceLineNumber!==t)return null;const c=o.slice(i,s);if(!c.length)return null;const l=a.ArrayUtilities.lowerBound(c,n,((e,t)=>e-r[t].sourceColumnNumber));return l>=c.length?r[c[c.length-1]]:r[c[l]];function lineComparator(e,t){return e-r[t].sourceLineNumber}}findReverseIndices(e,t,n){const r=this.mappings(),o=this.reversedMappings(e),i=a.ArrayUtilities.upperBound(o,void 0,((e,a)=>t-r[a].sourceLineNumber||n-r[a].sourceColumnNumber));let s=i;for(;s>0&&r[o[s-1]].sourceLineNumber===r[o[i-1]].sourceLineNumber&&r[o[s-1]].sourceColumnNumber===r[o[i-1]].sourceColumnNumber;)--s;return o.slice(s,i)}
findReverseEntries(e,t,n){const a=this.mappings();return this.findReverseIndices(e,t,n).map((e=>a[e]))}findReverseRanges(e,t,n){const a=this.mappings(),r=this.findReverseIndices(e,t,n),o=[];for(let e=0;e<r.length;++e){const t=r[e];let n=t+1;for(;e+1<r.length&&n===r[e+1];)++n,++e;const i=a[t].lineNumber,s=a[t].columnNumber,c=n<a.length?a[n].lineNumber:2**31-1,l=n<a.length?a[n].columnNumber:2**31-1;o.push(new TextUtils.TextRange.TextRange(i,s,c,l))}return o}mappings(){return this.#ensureMappingsProcessed(),this.#mappingsInternal??[]}reversedMappings(e){return this.#ensureMappingsProcessed(),this.#sourceInfos.get(e)?.reverseMappings??[]}#ensureMappingsProcessed(){null===this.#mappingsInternal&&(this.#mappingsInternal=[],this.eachSection(this.parseMap.bind(this)),this.#computeReverseMappings(this.#mappingsInternal),this.#json=null)}#computeReverseMappings(e){const t=new Map;for(let n=0;n<e.length;n++){const a=e[n].sourceURL;if(!a)continue;let r=t.get(a);r||(r=[],t.set(a,r)),r.push(n)}
for(const[e,n]of t.entries()){const t=this.#sourceInfos.get(e);t&&(n.sort(sourceMappingComparator),t.reverseMappings=n)}function sourceMappingComparator(t,n){const a=e[t],r=e[n];return a.sourceLineNumber-r.sourceLineNumber||a.sourceColumnNumber-r.sourceColumnNumber||a.lineNumber-r.lineNumber||a.columnNumber-r.columnNumber}}eachSection(e){if(this.#json)if(this.#json.sections)for(const t of this.#json.sections)e(t.map,t.offset.line,t.offset.column);else e(this.#json,0,0)}parseSources(e){const t=[],r=e.sourceRoot||a.DevToolsPath.EmptyUrlString,o=new Set(e.x_google_ignoreList);for(let a=0;a<e.sources.length;++a){let i=e.sources[a];n.ParsedURL.ParsedURL.isRelativeURL(i)&&(i=r&&!r.endsWith("/")&&i&&!i.startsWith("/")?n.ParsedURL.ParsedURL.concatenate(r,"/",i):n.ParsedURL.ParsedURL.concatenate(r,i));let s=i;const c=e.sourcesContent&&e.sourcesContent[a];if(this.#compiledURLInternal,t.push(s),!this.#sourceInfos.has(s)){const e=c??null,t=o.has(a)
;this.#sourceInfos.set(s,new TextSourceMap.SourceInfo(e,t))}}i.set(e,t)}parseMap(e,t,n){let a=0,r=0,o=0,s=0;const c=i.get(e),l=e.names||[],u=new TextSourceMap.StringCharIterator(e.mappings);let d=c&&c[a];for(;;){if(","===u.peek())u.next();else{for(;";"===u.peek();)t+=1,n=0,u.next();if(!u.hasNext())break}if(n+=this.decodeVLQ(u),!u.hasNext()||this.isSeparator(u.peek())){this.mappings().push(new SourceMapEntry(t,n));continue}const e=this.decodeVLQ(u);e&&(a+=e,c&&(d=c[a])),r+=this.decodeVLQ(u),o+=this.decodeVLQ(u),u.hasNext()&&!this.isSeparator(u.peek())?(s+=this.decodeVLQ(u),this.mappings().push(new SourceMapEntry(t,n,d,r,o,l[s]))):this.mappings().push(new SourceMapEntry(t,n,d,r,o))}this.mappings().sort(SourceMapEntry.compare)}isSeparator(e){return","===e||";"===e}decodeVLQ(e){let t=0,n=0,a=TextSourceMap._VLQ_CONTINUATION_MASK;for(;a&TextSourceMap._VLQ_CONTINUATION_MASK;)a=o.get(e.next())||0,t+=(a&TextSourceMap._VLQ_BASE_MASK)<<n,n+=TextSourceMap._VLQ_BASE_SHIFT;const r=1&t;return t>>=1,
r?-t:t}reverseMapTextRange(e,t){function comparator(e,t){return e.lineNumber!==r[t].sourceLineNumber?e.lineNumber-r[t].sourceLineNumber:e.columnNumber-r[t].sourceColumnNumber}const n=this.reversedMappings(e),r=this.mappings();if(!n.length)return null;const o=a.ArrayUtilities.lowerBound(n,{lineNumber:t.startLine,columnNumber:t.startColumn},comparator),i=a.ArrayUtilities.upperBound(n,{lineNumber:t.endLine,columnNumber:t.endColumn},comparator);if(i>=n.length)return null;const s=r[n[o]],c=r[n[i]];return new TextUtils.TextRange.TextRange(s.lineNumber,s.columnNumber,c.lineNumber,c.columnNumber)}mapsOrigin(){const e=this.mappings();if(e.length>0){const t=e[0];return 0===t?.lineNumber||0===t.columnNumber}return!1}hasIgnoreListHint(e){return this.#sourceInfos.get(e)?.ignoreListHint??!1}findRanges(e,t){const n=this.mappings(),a=[];if(!n.length)return[];let r=null;0===n[0].lineNumber&&0===n[0].columnNumber||!t?.isStartMatching||(r=TextUtils.TextRange.TextRange.createUnboundedFromLocation(0,0),
a.push(r));for(const{sourceURL:t,lineNumber:o,columnNumber:i}of n){const n=t&&e(t);r||!n?r&&!n&&(r.endLine=o,r.endColumn=i,r=null):(r=TextUtils.TextRange.TextRange.createUnboundedFromLocation(o,i),a.push(r))}return a}}t.TextSourceMap=TextSourceMap,function(e){e._VLQ_BASE_SHIFT=5,e._VLQ_BASE_MASK=31,e._VLQ_CONTINUATION_MASK=32;e.StringCharIterator=class StringCharIterator{string;position;constructor(e){this.string=e,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.SourceInfo=class SourceInfo{content;ignoreListHint;reverseMappings=null;constructor(e,t){this.content=e,this.ignoreListHint=t}}}(TextSourceMap=t.TextSourceMap||(t.TextSourceMap={})),e.exports=TextSourceMap}(jd,jd.exports);const Vd={TextSourceMap:jd.exports};Vd.TextSourceMap.prototype.computeLastGeneratedColumns=function(){const e=this.mappings()
;if(!e.length||void 0===e[0].lastColumnNumber)for(let t=0;t<e.length-1;t++){const n=e[t],a=e[t+1];n.lineNumber===a.lineNumber&&(n.lastColumnNumber=a.columnNumber)}};var Wd=Vd;function computeGeneratedFileSizes(e,t,n){const a=n.split("\n"),r={},o=t;let i=o;e.computeLastGeneratedColumns();for(const t of e.mappings()){const n=t.sourceURL,o=t.lineNumber,s=t.columnNumber,c=t.lastColumnNumber;if(!n)continue;const l=a[o];if(null==l){const t=`${e.url()} mapping for line out of bounds: ${o+1}`;return Log.error("JSBundles",t),{errorMessage:t}}if(s>l.length){const t=`${e.url()} mapping for column out of bounds: ${o+1}:${s}`;return Log.error("JSBundles",t),{errorMessage:t}}let u=0;if(void 0!==c){if(c>l.length){const t=`${e.url()} mapping for last column out of bounds: ${o+1}:${c}`;return Log.error("JSBundles",t),{errorMessage:t}}u=c-s}else u=l.length-s+1;r[n]=(r[n]||0)+u,i-=u}return{files:r,unmappedBytes:i,totalBytes:o}}const Hd=makeComputedArtifact(class JSBundles{static async compute_(e){
const{SourceMaps:t,Scripts:n}=e,a=[];for(const e of t){if(!e.map)continue;const{scriptId:t,map:r}=e;if(!r.mappings)continue;const o=n.find((e=>e.scriptId===t));if(!o)continue;const i=e.scriptUrl||"compiled.js",s=e.sourceMapUrl||"compiled.js.map",c=new Wd.TextSourceMap(i,s,r),l={rawMap:r,script:o,map:c,sizes:computeGeneratedFileSizes(c,o.length||0,o.content||"")};a.push(l)}return a}},["Scripts","SourceMaps"]);class ModuleDuplication{static normalizeSource(e){const t=(e=e.replace(/\?$/,"")).lastIndexOf("node_modules");return-1!==t&&(e=e.substring(t)),e}static _shouldIgnoreSource(e){return!!e.includes("webpack/bootstrap")||(!!e.includes("(webpack)/buildin")||!!e.includes("external "))}static _normalizeAggregatedData(e){for(const[t,n]of e.entries()){let a=n;if(a.sort(((e,t)=>t.resourceSize-e.resourceSize)),a.length>1){const e=a[0].resourceSize;a=a.filter((t=>t.resourceSize/e>=.1))}a=a.filter((e=>e.resourceSize>=512)),a.length>1?e.set(t,a):e.delete(t)}}static async compute_(e,t){
const n=await Hd.request(e,t),a=new Map;for(const{rawMap:e,sizes:t}of n){if("errorMessage"in t)continue;const n=[];a.set(e,n);for(let a=0;a<e.sources.length;a++){if(this._shouldIgnoreSource(e.sources[a]))continue;const r=(e.sourceRoot||"")+e.sources[a],o=t.files[r];n.push({source:ModuleDuplication.normalizeSource(e.sources[a]),resourceSize:o})}}const r=new Map;for(const{rawMap:e,script:t}of n){const n=a.get(e);if(n)for(const e of n){let n=r.get(e.source);n||(n=[],r.set(e.source,n)),n.push({scriptId:t.scriptId,scriptUrl:t.url,resourceSize:e.resourceSize})}}return this._normalizeAggregatedData(r),r}}const Gd=makeComputedArtifact(ModuleDuplication,["Scripts","SourceMaps"]);function isInline(e){return Boolean(e.startLine||e.startColumn)}function getRequestForScript(e,t){let n=e.find((e=>e.url===t.url));for(;n?.redirectDestination;)n=n.redirectDestination;return n}const Yd={title:"Remove duplicate modules in JavaScript bundles",
description:"Remove large, duplicate JavaScript modules from bundles to reduce unnecessary bytes consumed by network activity. "},Kd=createIcuMessageFn("core/audits/byte-efficiency/duplicated-javascript.js",Yd);function indexOfOrEnd(e,t,n=0){const a=e.indexOf(t,n);return-1===a?e.length:a}class DuplicatedJavascript extends ByteEfficiencyAudit{static get meta(){return{id:"duplicated-javascript",title:Kd(Yd.title),description:Kd(Yd.description),scoreDisplayMode:ByteEfficiencyAudit.SCORING_MODES.NUMERIC,requiredArtifacts:["devtoolsLogs","traces","SourceMaps","Scripts","GatherContext","URL"]}}static _getNodeModuleName(e){const t=e.split("node_modules/"),n=indexOfOrEnd(e=t[t.length-1],"/");return"@"===e[0]?e.slice(0,indexOfOrEnd(e,"/",n+1)):e.slice(0,n)}static async _getDuplicationGroupedByNodeModules(e,t){const n=await Gd.request(e,t),a=new Map;for(const[e,t]of n.entries()){if(!e.includes("node_modules")){a.set(e,t);continue}
const n="node_modules/"+DuplicatedJavascript._getNodeModuleName(e),r=a.get(n)||[];for(const{scriptId:e,scriptUrl:n,resourceSize:a}of t){let t=r.find((t=>t.scriptId===e));t||(t={scriptId:e,scriptUrl:n,resourceSize:0},r.push(t)),t.resourceSize+=a}a.set(n,r)}for(const e of n.values())e.sort(((e,t)=>t.resourceSize-e.resourceSize));return a}static _estimateTransferRatio(e,t){return ByteEfficiencyAudit.estimateTransferSize(e,t,"Script")/t}static async audit_(e,t,n){const a=n.options?.ignoreThresholdInBytes||1024,r=await DuplicatedJavascript._getDuplicationGroupedByNodeModules(e,n),o=new Map,i=[];let s=0;const c=new Set,l=new Map;for(const[n,u]of r.entries()){const r=[];let d=0;for(let n=0;n<u.length;n++){const a=u[n],i=a.scriptId,s=e.Scripts.find((e=>e.scriptId===i)),c=s?.url||"";let m=o.get(c);if(void 0===m){if(!s||void 0===s.length)continue;const e=s.length,n=getRequestForScript(t,s);m=DuplicatedJavascript._estimateTransferRatio(n,e),o.set(c,m)}if(void 0===m)continue
;const p=Math.round(a.resourceSize*m);r.push({url:c,sourceTransferBytes:p}),0!==n&&(d+=p,l.set(c,(l.get(c)||0)+p))}if(d<=a){s+=d;for(const e of r)c.add(e.url)}else i.push({source:n,wastedBytes:d,url:"",totalBytes:0,subItems:{type:"subitems",items:r}})}s>a&&i.push({source:"Other",wastedBytes:s,url:"",totalBytes:0,subItems:{type:"subitems",items:Array.from(c).map((e=>({url:e})))}});return{items:i,headings:[{key:"source",valueType:"code",subItemsHeading:{key:"url",valueType:"url"},label:Kd(Dr.columnSource)},{key:null,valueType:"bytes",subItemsHeading:{key:"sourceTransferBytes"},granularity:.05,label:Kd(Dr.columnTransferSize)},{key:"wastedBytes",valueType:"bytes",granularity:.05,label:Kd(Dr.columnWastedBytes)}],wastedBytesByUrl:l}}}var Jd=Object.freeze({__proto__:null,default:DuplicatedJavascript,UIStrings:Yd});const Zd={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/)"},Xd=createIcuMessageFn("core/audits/byte-efficiency/efficient-animated-content.js",Zd);class EfficientAnimatedContent extends ByteEfficiencyAudit{static get meta(){return{id:"efficient-animated-content",title:Xd(Zd.title),description:Xd(Zd.description),scoreDisplayMode:ByteEfficiencyAudit.SCORING_MODES.NUMERIC,requiredArtifacts:["devtoolsLogs","traces","GatherContext","URL"]}}static getPercentSavings(e){return Math.round(29.1*Math.log10(e)-100.7)/100}static audit_(e,t){return{items:t.filter((e=>"image/gif"===e.mimeType&&e.resourceType===NetworkRequest.TYPES.Image&&(e.resourceSize||0)>102400)).map((e=>{const t=e.resourceSize||0;return{url:e.url,totalBytes:t,
wastedBytes:Math.round(t*EfficientAnimatedContent.getPercentSavings(t))}})),headings:[{key:"url",valueType:"url",label:Xd(Dr.columnURL)},{key:"totalBytes",valueType:"bytes",label:Xd(Dr.columnResourceSize)},{key:"wastedBytes",valueType:"bytes",label:Xd(Dr.columnWastedBytes)}]}}}var Qd=Object.freeze({__proto__:null,default:EfficientAnimatedContent,UIStrings:Zd})
;const em=JSON.parse('{\n "moduleSizes": [498, 155, 242, 615, 220, 657, 651, 1664, 790, 1534, 558, 279, 868, 974, 618, 356, 720, 133, 826, 732, 235, 552, 170, 585, 1030, 210, 349, 179, 546, 167, 1634, 118, 199, 478, 849, 470, 452, 417, 147, 60, 180, 433, 360, 303, 1325, 1518, 397, 201, 550, 226, 132, 156, 198, 312, 544, 2125, 658, 778, 1084, 701, 401, 81, 716, 632, 321, 428, 648, 804, 718, 130, 1443, 142, 374, 259, 286, 403, 821, 938, 514, 654, 280, 328, 186, 233, 243, 553, 267, 187, 206, 879, 105, 343, 779, 833, 773, 275, 477, 696, 224, 759, 671, 772, 746, 716, 182, 304, 658, 473, 592, 235, 334, 277, 404, 420, 280, 675, 1034, 508, 725, 526, 498, 498, 499, 752, 661, 276, 275, 843, 1698, 962, 562, 609, 573, 1048, 205, 374, 226, 625, 632, 308, 772, 641, 233],\n "dependencies": {\n "Array.prototype.fill": [3, 5, 8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 40, 42, 43, 45, 48, 51, 52, 53, 55, 56, 58, 60, 61, 63, 64, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 84, 87, 88, 89, 91],\n "Array.prototype.filter": [1, 8, 9, 10, 12, 14, 17, 19, 21, 22, 27, 28, 29, 30, 33, 35, 38, 39, 42, 43, 45, 47, 48, 51, 52, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 84, 87, 88, 89, 92],\n "Array.prototype.find": [1, 3, 8, 9, 12, 14, 17, 19, 21, 22, 29, 30, 33, 35, 38, 39, 40, 42, 43, 45, 47, 48, 51, 52, 53, 55, 56, 58, 60, 61, 63, 64, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 84, 87, 88, 89, 94],\n "Array.prototype.findIndex": [1, 3, 8, 9, 12, 14, 17, 19, 21, 22, 29, 30, 33, 35, 38, 39, 40, 42, 43, 45, 47, 48, 51, 52, 53, 55, 56, 58, 60, 61, 63, 64, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 84, 87, 88, 89, 93],\n "Array.prototype.forEach": [1, 6, 8, 9, 11, 12, 14, 17, 19, 21, 22, 29, 30, 33, 35, 38, 39, 42, 43, 45, 47, 48, 51, 52, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 84, 87, 88, 89, 95],\n "Array.from": [1, 7, 8, 15, 16, 17, 18, 19, 21, 22, 23, 29, 30, 33, 35, 36, 38, 39, 42, 43, 45, 46, 48, 51, 52, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 84, 86, 87, 88, 89, 96],\n "Array.isArray": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 47, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 98],\n "Array.prototype.map": [1, 8, 9, 10, 12, 14, 17, 19, 21, 22, 27, 28, 29, 30, 33, 35, 38, 39, 42, 43, 45, 47, 48, 51, 52, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 84, 87, 88, 89, 99],\n "Array.of": [8, 17, 19, 21, 22, 23, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 100],\n "Array.prototype.reduce": [1, 8, 11, 12, 13, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 84, 87, 102],\n "Array.prototype.reduceRight": [1, 8, 11, 12, 13, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 84, 87, 101],\n "Array.prototype.some": [1, 8, 9, 11, 12, 14, 17, 19, 21, 22, 29, 30, 33, 35, 38, 39, 42, 43, 45, 47, 48, 51, 52, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 84, 87, 88, 89, 103],\n "Date.now": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 104],\n "Date.prototype.toISOString": [8, 17, 19, 21, 22, 24, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 77, 78, 80, 81, 82, 83, 87, 105],\n "Date.prototype.toJSON": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 84, 87, 106],\n "Date.prototype.toString": [21, 22, 38, 39, 43, 45, 51, 53, 70, 72, 73, 74, 75, 87, 107],\n "Function.prototype.name": [108],\n "Number.isInteger": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 49, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 109],\n "Number.isSafeInteger": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 49, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 110],\n "Number.parseInt": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 54, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 79, 80, 81, 82, 83, 87, 90, 111],\n "Object.defineProperties": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 56, 58, 60, 61, 63, 64, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 112],\n "Object.defineProperty": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 113],\n "Object.freeze": [8, 17, 19, 21, 22, 29, 30, 32, 35, 38, 39, 42, 43, 44, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 115],\n "Object.getOwnPropertyNames": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 59, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 117],\n "Object.getPrototypeOf": [8, 17, 19, 20, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 62, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 84, 87, 118],\n "Object.isExtensible": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 119],\n "Object.isFrozen": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 120],\n "Object.isSealed": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 121],\n "Object.keys": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 64, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 84, 87, 122],\n "Object.preventExtensions": [8, 17, 19, 21, 22, 29, 30, 32, 35, 38, 39, 42, 43, 44, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 123],\n "Object.seal": [8, 17, 19, 21, 22, 29, 30, 32, 35, 38, 39, 42, 43, 44, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 124],\n "Object.setPrototypeOf": [2, 8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 66, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 125],\n "Reflect.apply": [1, 8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 127],\n "Reflect.construct": [1, 8, 17, 19, 21, 22, 29, 30, 34, 35, 38, 39, 40, 42, 43, 45, 48, 51, 53, 55, 56, 58, 60, 61, 63, 64, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 128],\n "Reflect.defineProperty": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 129],\n "Reflect.deleteProperty": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 130],\n "Reflect.get": [8, 17, 19, 20, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 62, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 84, 87, 133],\n "Reflect.getOwnPropertyDescriptor": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 131],\n "Reflect.getPrototypeOf": [8, 17, 19, 20, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 62, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 84, 87, 132],\n "Reflect.has": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 134],\n "Reflect.isExtensible": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 135],\n "Reflect.ownKeys": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 136],\n "Reflect.preventExtensions": [8, 17, 19, 21, 22, 29, 30, 32, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 137],\n "Reflect.setPrototypeOf": [2, 8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 66, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 138],\n "String.prototype.codePointAt": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 80, 81, 82, 83, 87, 139],\n "String.fromCodePoint": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 140],\n "String.raw": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 141],\n "String.prototype.repeat": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 78, 80, 81, 82, 83, 87, 142],\n "Array.prototype.includes": [3, 8, 12, 17, 19, 21, 22, 29, 30, 35, 38, 39, 40, 42, 43, 45, 48, 51, 52, 53, 55, 56, 58, 60, 61, 63, 64, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 88, 89, 97],\n "Object.entries": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 64, 65, 67, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 114],\n "Object.getOwnPropertyDescriptors": [8, 17, 19, 21, 22, 23, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 116],\n "Object.values": [8, 17, 19, 21, 22, 29, 30, 35, 38, 39, 42, 43, 45, 48, 51, 53, 58, 60, 61, 63, 64, 65, 67, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 87, 126]\n },\n "maxSize": 77759,\n "baseSize": 3708\n}\n'),tm={
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/publish-modern-javascript/)"},nm=createIcuMessageFn("core/audits/byte-efficiency/legacy-javascript.js",tm);class CodePatternMatcher{constructor(e){const t=e.map((e=>`(${e.expression})`)).join("|");this.re=new RegExp(`(^\r\n|\r|\n)|${t}`,"g"),this.patterns=e}match(e){this.re.lastIndex=0;const t=new Set,n=[];let a,r=0,o=0;for(;null!==(a=this.re.exec(e));){const e=a.slice(1),[i,...s]=e;if(i){r++,o=a.index+1;continue}const c=this.patterns[s.findIndex(Boolean)];if(t.has(c)){const e=n.find((e=>e.name===c.name));e&&(e.count+=1)
}else t.add(c),n.push({name:c.name,line:r,column:a.index-o,count:1})}return n}}var am=Object.freeze({__proto__:null,default:class LegacyJavascript extends ByteEfficiencyAudit{static get meta(){return{id:"legacy-javascript",scoreDisplayMode:ByteEfficiencyAudit.SCORING_MODES.NUMERIC,description:nm(tm.description),title:nm(tm.title),requiredArtifacts:["devtoolsLogs","traces","Scripts","SourceMaps","GatherContext","URL"]}}static buildPolyfillExpression(e,t){const qt=e=>`['"]${e}['"]`;let n="";if(n+=e?`${e}\\.${t}\\s?=[^=]`:`(?:window\\.|[\\s;]+)${t}\\s?=[^=]`,e&&(n+=`|${e}\\[${qt(t)}\\]\\s?=[^=]`),n+=`|defineProperty\\(${e||"window"},\\s?${qt(t)}`,e){const a=e.replace(".prototype","");n+=`|\\$export\\([^,]+,${qt(a)},{${t}:`,n+=`|{target:${qt(a)}\\S*},{${t}:`}else n+=`|function ${t}\\(`;return n}static getPolyfillData(){
return[["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-extensions"],["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"]].map((e=>{
const[t,n]=e;return{name:t,coreJs2Module:n,coreJs3Module:n.replace("es6.","es.").replace("es7.","es.").replace("typed.","typed-array.")}}))}static getPolyfillPatterns(){return this.getPolyfillData().map((({name:e})=>{const t=e.split("."),n=t.length>1?t.slice(0,t.length-1).join("."):null,a=t[t.length-1];return{name:e,expression:this.buildPolyfillExpression(n,a)}}))}static getTransformPatterns(){return[{name:"@babel/plugin-transform-classes",expression:"Cannot call a class as a function",estimateBytes:e=>150+e.count*"_classCallCheck()".length},{name:"@babel/plugin-transform-regenerator",expression:/regeneratorRuntime\(?\)?\.a?wrap/.source,estimateBytes:e=>80*e.count},{name:"@babel/plugin-transform-spread",expression:/\.apply\(void 0,\s?_toConsumableArray/.source,estimateBytes:e=>1169+e.count*"_toConsumableArray()".length}]}static detectAcrossScripts(e,t,n,a){const r=new Map,o=this.getPolyfillData();for(const n of Object.values(t)){if(!n.content)continue
;const t=e.match(n.content),i=a.find((e=>e.script.scriptId===n.scriptId));if(i)for(const{coreJs2Module:e,coreJs3Module:n,name:a}of o){if(t.some((e=>e.name===a)))continue;const r=i.rawMap.sources.find((t=>t.endsWith(`${e}.js`)||t.endsWith(`${n}.js`)));if(!r)continue;const o=i.map.mappings().find((e=>e.sourceURL===r));o?t.push({name:a,line:o.lineNumber,column:o.columnNumber,count:1}):t.push({name:a,line:0,column:0,count:1})}t.length&&r.set(n,t)}return r}static estimateWastedBytes(e){const t=e.filter((e=>!e.name.startsWith("@"))),n=e.filter((e=>e.name.startsWith("@")));let a=0;const r=new Set;for(const e of t){const t=em.dependencies[e.name];if(t)for(const e of t)r.add(e)}t.length>0&&(a+=em.baseSize),a+=[...r].reduce(((e,t)=>e+em.moduleSizes[t]),0),a=Math.min(a,em.maxSize);let o=0;for(const e of n){const t=this.getTransformPatterns().find((t=>t.name===e.name));t&&t.estimateBytes&&(o+=t.estimateBytes(e))}return a+o}static async estimateTransferRatioForScript(e,t,n,a){let r=e.get(t)
;if(void 0!==r)return r;const o=n.Scripts.find((e=>e.url===t));if(o&&null!==o.content){const e=getRequestForScript(a,o),t=o.length||0;r=ByteEfficiencyAudit.estimateTransferSize(e,t,"Script")/t}else r=1;return e.set(t,r),r}static async audit_(e,t,n){const a=e.devtoolsLogs[Audit.DEFAULT_PASS],r=await li.request({URL:e.URL,devtoolsLog:a},n),o=await Hd.request(e,n),i=[],s=new CodePatternMatcher([...this.getPolyfillPatterns(),...this.getTransformPatterns()]),c=new Map,l=this.detectAcrossScripts(s,e.Scripts,t,o);for(const[n,a]of l.entries()){const r=await this.estimateTransferRatioForScript(c,n.url,e,t),s=Math.round(this.estimateWastedBytes(a)*r),l={url:n.url,wastedBytes:s,subItems:{type:"subitems",items:[]},totalBytes:0},u=o.find((e=>e.script.scriptId===n.scriptId));for(const e of a){const{name:t,line:a,column:r}=e,o={signal:t,location:ByteEfficiencyAudit.makeSourceLocation(n.url,a,r,u)};l.subItems.items.push(o)}i.push(l)}const u=new Map
;for(const e of i)r.isFirstParty(e.url)&&u.set(e.url,e.wastedBytes);return{items:i,headings:[{key:"url",valueType:"url",subItemsHeading:{key:"location",valueType:"source-location"},label:nm(Dr.columnURL)},{key:null,valueType:"code",subItemsHeading:{key:"signal"},label:""},{key:"wastedBytes",valueType:"bytes",label:nm(Dr.columnWastedBytes)}],wastedBytesByUrl:u}}},UIStrings:tm});const rm={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/)."},om=createIcuMessageFn("core/audits/byte-efficiency/modern-image-formats.js",rm);class ModernImageFormats extends ByteEfficiencyAudit{static get meta(){return{id:"modern-image-formats",title:om(rm.title),description:om(rm.description),scoreDisplayMode:ByteEfficiencyAudit.SCORING_MODES.NUMERIC,
requiredArtifacts:["OptimizedImages","devtoolsLogs","traces","URL","GatherContext","ImageElements"]}}static estimateWebPSizeFromDimensions(e){const t=e.naturalWidth*e.naturalHeight;return Math.round(.2*t)}static estimateAvifSizeFromDimensions(e){const t=e.naturalWidth*e.naturalHeight;return Math.round(t*(2/12))}static estimateAvifSizeFromWebPAndJpegEstimates(e){if(!e.jpegSize||!e.webpSize)return;return 5*e.jpegSize/10/2+8*e.webpSize/10/2}static audit_(e){const t=e.URL.finalDisplayedUrl,n=e.OptimizedImages,a=e.ImageElements,r=new Map;a.forEach((e=>r.set(e.src,e)));const o=[],i=[];for(const e of n){const n=r.get(e.url);if(e.failed){i.push(`Unable to decode ${UrlUtils.getURLDisplayName(e.url)}`);continue}if("image/webp"===e.mimeType||"image/avif"===e.mimeType)continue;const a=e.jpegSize;let s=e.webpSize,c=ModernImageFormats.estimateAvifSizeFromWebPAndJpegEstimates({jpegSize:a,webpSize:s}),l=!0;if(void 0===s){if(!n){i.push(`Unable to locate resource ${UrlUtils.getURLDisplayName(e.url)}`)
;continue}if(!n.naturalDimensions)continue;const t=n.naturalDimensions.height,a=n.naturalDimensions.width;if(!a||!t)continue;s=ModernImageFormats.estimateWebPSizeFromDimensions({naturalHeight:t,naturalWidth:a}),c=ModernImageFormats.estimateAvifSizeFromDimensions({naturalHeight:t,naturalWidth:a}),l=!1}if(void 0===s||void 0===c)continue;const u=e.originalSize-s,d=e.originalSize-c;if(d<8192)continue;const m=UrlUtils.elideDataURI(e.url),p=!UrlUtils.originsMatch(t,e.url);o.push({node:n?ByteEfficiencyAudit.makeNodeItem(n.node):void 0,url:m,fromProtocol:l,isCrossOrigin:p,totalBytes:e.originalSize,wastedBytes:d,wastedWebpBytes:u})}return{warnings:i,items:o,headings:[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:om(Dr.columnURL)},{key:"totalBytes",valueType:"bytes",label:om(Dr.columnResourceSize)},{key:"wastedBytes",valueType:"bytes",label:om(Dr.columnWastedBytes)}]}}}var im=Object.freeze({__proto__:null,default:ModernImageFormats,UIStrings:rm});class Metric{
constructor(){}static getMetricComputationInput(e){return{trace:e.trace,devtoolsLog:e.devtoolsLog,gatherContext:e.gatherContext,settings:e.settings,URL:e.URL}}static computeSimulatedMetric(e,t){throw new Error("Unimplemented")}static computeObservedMetric(e,t){throw new Error("Unimplemented")}static async compute_(e,t){const n=e.gatherContext||{gatherMode:"navigation"},{trace:a,devtoolsLog:r,settings:o}=e;if(!a||!r||!o)throw new Error("Did not provide necessary metric computation data");const i=await co.request(a,t),s="timespan"===n.gatherMode?void 0:await Dc.request(a,t),c=Object.assign({networkRecords:await go.request(r,t),gatherContext:n,processedTrace:i,processedNavigation:s},e);switch(TraceProcessor.assertHasToplevelEvents(c.processedTrace.mainThreadEvents),o.throttlingMethod){case"simulate":if("navigation"!==n.gatherMode)throw new Error(`${n.gatherMode} does not support throttlingMethod simulate`);return this.computeSimulatedMetric(c,t);case"provided":case"devtools":
return this.computeObservedMetric(c,t);default:throw new TypeError(`Unrecognized throttling method: ${o.throttlingMethod}`)}}}class NavigationMetric extends Metric{static computeSimulatedMetric(e,t){throw new Error("Unimplemented")}static computeObservedMetric(e,t){throw new Error("Unimplemented")}static async compute_(e,t){if("navigation"!==e.gatherContext.gatherMode)throw new Error(`${this.name} can only be computed on navigations`);return super.compute_(e,t)}}const sm=5e3;class Interactive extends NavigationMetric{static _findNetworkQuietPeriods(e,t){const n=t.timestamps.traceEnd/1e3,a=e.filter((e=>e.finished&&"GET"===e.requestMethod&&!e.failed&&e.statusCode<400));return NetworkMonitor.findNetworkQuietPeriods(a,2,n)}static _findCPUQuietPeriods(e,t){const n=t.timestamps.timeOrigin/1e3,a=t.timestamps.traceEnd/1e3;if(0===e.length)return[{start:0,end:a}];const r=[];return e.forEach(((t,o)=>{0===o&&r.push({start:0,end:t.start+n}),o===e.length-1?r.push({start:t.end+n,end:a}):r.push({
start:t.end+n,end:e[o+1].start+n})})),r}static findOverlappingQuietPeriods(e,t,n){const a=n.timestamps.firstContentfulPaint/1e3,isLongEnoughQuietPeriod=e=>e.end>a+sm&&e.end-e.start>=sm,r=this._findNetworkQuietPeriods(t,n).filter(isLongEnoughQuietPeriod),o=this._findCPUQuietPeriods(e,n).filter(isLongEnoughQuietPeriod),i=o.slice(),s=r.slice();let c=i.shift(),l=s.shift();for(;c&&l;)if(c.start>=l.start){if(l.end>=c.start+sm)return{cpuQuietPeriod:c,networkQuietPeriod:l,cpuQuietPeriods:o,networkQuietPeriods:r};l=s.shift()}else{if(c.end>=l.start+sm)return{cpuQuietPeriod:c,networkQuietPeriod:l,cpuQuietPeriods:o,networkQuietPeriods:r};c=i.shift()}throw new LighthouseError(c?LighthouseError.errors.NO_TTI_NETWORK_IDLE_PERIOD:LighthouseError.errors.NO_TTI_CPU_IDLE_PERIOD)}static computeSimulatedMetric(e,t){const n=NavigationMetric.getMetricComputationInput(e);return Bd.request(n,t)}static computeObservedMetric(e){const{processedTrace:t,processedNavigation:n,networkRecords:a}=e
;if(!n.timestamps.domContentLoaded)throw new LighthouseError(LighthouseError.errors.NO_DCL);const r=TraceProcessor.getMainThreadTopLevelEvents(t).filter((e=>e.duration>=50)),o=Interactive.findOverlappingQuietPeriods(r,a,n).cpuQuietPeriod,i=1e3*Math.max(o.start,n.timestamps.firstContentfulPaint/1e3,n.timestamps.domContentLoaded/1e3),s=(i-n.timestamps.timeOrigin)/1e3;return Promise.resolve({timing:s,timestamp:i})}}const cm=makeComputedArtifact(Interactive,["devtoolsLog","gatherContext","settings","simulator","trace","URL"]),lm={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/)."},um=createIcuMessageFn("core/audits/byte-efficiency/offscreen-images.js",lm);class OffscreenImages extends ByteEfficiencyAudit{static get meta(){return{id:"offscreen-images",
title:um(lm.title),description:um(lm.description),scoreDisplayMode:ByteEfficiencyAudit.SCORING_MODES.NUMERIC,supportedModes:["navigation"],requiredArtifacts:["ImageElements","ViewportDimensions","GatherContext","devtoolsLogs","traces","URL"]}}static computeVisiblePixels(e,t){const n=t.innerWidth,a=t.innerHeight,r=3*t.innerHeight,o=Math.max(e.top,-100),i=Math.min(e.right,n+100),s=Math.min(e.bottom,a+r),c=Math.max(e.left,-100);return Math.max(i-c,0)*Math.max(s-o,0)}static computeWaste(e,t,n){const a=n.find((t=>t.url===e.src));if(!a)return null;if("lazy"===e.loading||"eager"===e.loading)return null;const r=UrlUtils.elideDataURI(e.src),o=e.displayedWidth*e.displayedHeight,i=this.computeVisiblePixels(e.clientRect,t),s=0===o?1:1-i/o,c=NetworkRequest.getResourceSizeOnNetwork(a),l=Math.round(c*s);return Number.isFinite(s)?{node:ByteEfficiencyAudit.makeNodeItem(e.node),url:r,requestStartTime:a.networkRequestTime,totalBytes:c,wastedBytes:l,wastedPercent:100*s
}:new Error(`Invalid image sizing information ${r}`)}static filterLanternResults(e,t){const n=t.pessimisticEstimate.nodeTimings;let a=0;const r=new Map;for(const[e,t]of n)"cpu"===e.type&&t.duration>=50?a=Math.max(a,t.startTime):"network"===e.type&&r.set(e.record.url,t.startTime);return e.filter((e=>{if(e.wastedBytes<2048)return!1;if(e.wastedPercent<75)return!1;return(r.get(e.url)||0)<a-50}))}static filterObservedResults(e,t){return e.filter((e=>!(e.wastedBytes<2048)&&(!(e.wastedPercent<75)&&e.requestStartTime<t/1e3-50)))}static computeWasteWithTTIGraph(e,t,n){return super.computeWasteWithTTIGraph(e,t,n,{includeLoad:!1})}static async audit_(e,t,n){const a=e.ImageElements,r=e.ViewportDimensions,o=e.GatherContext,i=e.traces[ByteEfficiencyAudit.DEFAULT_PASS],s=e.devtoolsLogs[ByteEfficiencyAudit.DEFAULT_PASS],c=e.URL,l=[],u=new Map;for(const e of a){const n=OffscreenImages.computeWaste(e,r,t);if(null===n)continue;if(n instanceof Error){l.push(n.message),Qo.captureException(n,{tags:{
audit:this.meta.id},level:"warning"});continue}const a=u.get(n.url);(!a||a.wastedBytes>n.wastedBytes)&&u.set(n.url,n)}const d=n.settings;let m;const p=Array.from(u.values());try{const e={trace:i,devtoolsLog:s,gatherContext:o,settings:d,URL:c},t=await cm.request(e,n),a=t;m="simulate"===n.settings.throttlingMethod?OffscreenImages.filterLanternResults(p,a):OffscreenImages.filterObservedResults(p,t.timestamp)}catch(e){if("simulate"===n.settings.throttlingMethod)throw e;m=OffscreenImages.filterObservedResults(p,await co.request(i,n).then((e=>e.timestamps.traceEnd)))}return{warnings:l,items:m,headings:[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:um(Dr.columnURL)},{key:"totalBytes",valueType:"bytes",label:um(Dr.columnResourceSize)},{key:"wastedBytes",valueType:"bytes",label:um(Dr.columnWastedBytes)}]}}}var dm=Object.freeze({__proto__:null,default:OffscreenImages,UIStrings:lm});const mm=100;class UnusedCSS{static indexStylesheetsById(e,t){
const n=t.filter((e=>e.resourceSize>0)).reduce(((e,t)=>(e[t.url]=t,e)),{});return e.reduce(((e,t)=>(e[t.header.styleSheetId]=Object.assign({usedRules:[],networkRecord:n[t.header.sourceURL]},t),e)),{})}static indexUsedRules(e,t){e.forEach((e=>{const n=t[e.styleSheetId];n&&e.used&&n.usedRules.push(e)}))}static computeUsage(e){let t=0;const n=e.content.length;for(const n of e.usedRules)t+=n.endOffset-n.startOffset;const a=ByteEfficiencyAudit.estimateTransferSize(e.networkRecord,n,"Stylesheet"),r=(n-t)/n;return{wastedBytes:Math.round(r*a),wastedPercent:100*r,totalBytes:a}}static determineContentPreview(e){let t=(e||"").slice(0,500).replace(/( {2,}|\t)+/g," ").replace(/\n\s+}/g,"\n}").trim();if(t.length>mm){const e=t.indexOf("{"),n=t.indexOf("}");if(-1===e||-1===n||e>n||e>mm)t=t.slice(0,mm)+"...";else if(n<mm)t=t.slice(0,n+1)+" ...";else{const n=t.slice(0,mm).lastIndexOf(";");t=n<e?t.slice(0,mm)+"... } ...":t.slice(0,n+1)+" ... } ..."}}return t}static mapSheetToResult(e){
let t=e.header.sourceURL;if(!t||e.header.isInline){t=UnusedCSS.determineContentPreview(e.content)}return{url:t,...UnusedCSS.computeUsage(e)}}static async compute_(e,t){const{CSSUsage:n,devtoolsLog:a}=e,r=await go.request(a,t),o=UnusedCSS.indexStylesheetsById(n.stylesheets,r);UnusedCSS.indexUsedRules(n.rules,o);return Object.keys(o).map((e=>UnusedCSS.mapSheetToResult(o[e])))}}const pm=makeComputedArtifact(UnusedCSS,["CSSUsage","devtoolsLog"]);const gm=makeComputedArtifact(class FirstContentfulPaint$1 extends NavigationMetric{static computeSimulatedMetric(e,t){const n=NavigationMetric.getMetricComputationInput(e);return Pd.request(n,t)}static async computeObservedMetric(e){const{processedNavigation:t}=e;return{timing:t.timings.firstContentfulPaint,timestamp:t.timestamps.firstContentfulPaint}}},["devtoolsLog","gatherContext","settings","simulator","trace","URL"]),hm={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/)."},fm=createIcuMessageFn("core/audits/byte-efficiency/render-blocking-resources.js",hm);function computeStackSpecificTiming(e,t,n){const a={...t};return n.some((e=>"amp"===e.id))&&e.type===BaseNode.TYPES.NETWORK&&e.record.resourceType===NetworkRequest.TYPES.Stylesheet&&t.endTime>2100&&(a.endTime=Math.max(t.startTime,2100),a.duration=a.endTime-a.startTime),a}class RenderBlockingResources extends Audit{static get meta(){return{id:"render-blocking-resources",title:fm(hm.title),supportedModes:["navigation"],scoreDisplayMode:Audit.SCORING_MODES.NUMERIC,description:fm(hm.description),requiredArtifacts:["URL","TagsBlockingFirstPaint","traces","devtoolsLogs","CSSUsage","GatherContext","Stacks"]}}
static async computeResults(e,t){const n=e.GatherContext,a=e.traces[Audit.DEFAULT_PASS],r=e.devtoolsLogs[Audit.DEFAULT_PASS],o={devtoolsLog:r,settings:t.settings},i=await Dc.request(a,t),s=await Wo.request(o,t),c=await RenderBlockingResources.computeWastedCSSBytes(e,t),l={trace:a,devtoolsLog:r,gatherContext:n,simulator:s,settings:{...t.settings,throttlingMethod:"simulate"},URL:e.URL},u=await gm.request(l,t),d=i.timestamps.firstContentfulPaint/1e3,m=function getNodesAndTimingByUrl(e){const t={};return Array.from(e.keys()).forEach((n=>{if("network"!==n.type)return;const a=e.get(n);a&&(t[n.record.url]={node:n,nodeTiming:a})})),t}(u.optimisticEstimate.nodeTimings),p=[],h=new Set;for(const t of e.TagsBlockingFirstPaint){if(t.endTime>d)continue;if(!m[t.tag.url])continue;const{node:n,nodeTiming:a}=m[t.tag.url],r=computeStackSpecificTiming(n,a,e.Stacks);n.traverse((e=>h.add(e.id)));const o=Math.round(r.duration);o<50||p.push({url:t.tag.url,totalBytes:t.transferSize,wastedMs:o})}
if(!p.length)return{results:p,wastedMs:0};return{results:p,wastedMs:RenderBlockingResources.estimateSavingsWithGraphs(s,u.optimisticGraph,h,c,e.Stacks)}}static estimateSavingsWithGraphs(e,t,n,a,r){const{nodeTimings:o}=e.simulate(t),i=new Map(o);let s=0;const c=t.cloneWithRelationships((e=>{!function adjustNodeTimings(e,t,n){const a=e.get(t);if(!a)return;const r=computeStackSpecificTiming(t,a,n);a.duration-r.duration&&(t.traverse((t=>{e.delete(t)})),e.set(t,r))}(i,e,r);const t=n.has(e.id);if(e.type!==BaseNode.TYPES.NETWORK)return!t;const o=e.record.resourceType===NetworkRequest.TYPES.Stylesheet;if(t&&o){const t=a.get(e.record.url)||0;s+=(e.record.transferSize||0)-t}return!t}));if("network"!==c.type)throw new Error("minimalFCPGraph not a NetworkNode");const l=Math.max(...Array.from(Array.from(i).map((e=>e[1].endTime)))),u=c.record.transferSize,d=u||0;c.record.transferSize=d+s;const m=e.simulate(c).timeInMs;return c.record.transferSize=u,Math.round(Math.max(l-m,0))}
static async computeWastedCSSBytes(e,t){const n=new Map;try{const a=await pm.request({CSSUsage:e.CSSUsage,devtoolsLog:e.devtoolsLogs[Audit.DEFAULT_PASS]},t);for(const e of a)n.set(e.url,e.wastedBytes)}catch{}return n}static async audit(e,t){const{results:n,wastedMs:a}=await RenderBlockingResources.computeResults(e,t);let r;n.length>0&&(r=fm(Dr.displayValueMsSavings,{wastedMs:a}));const o=[{key:"url",valueType:"url",label:fm(Dr.columnURL)},{key:"totalBytes",valueType:"bytes",label:fm(Dr.columnTransferSize)},{key:"wastedMs",valueType:"timespanMs",label:fm(Dr.columnWastedMs)}],i=Audit.makeOpportunityDetails(o,n,{overallSavingsMs:a});return{displayValue:r,score:ByteEfficiencyAudit.scoreForWastedMs(a),numericValue:a,numericUnit:"millisecond",details:i}}}var ym=Object.freeze({__proto__:null,default:RenderBlockingResources,UIStrings:hm});const bm={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"},vm=createIcuMessageFn("core/audits/byte-efficiency/total-byte-weight.js",bm);var wm=Object.freeze({__proto__:null,default:class TotalByteWeight extends Audit{static get meta(){return{id:"total-byte-weight",title:vm(bm.title),failureTitle:vm(bm.failureTitle),description:vm(bm.description),scoreDisplayMode:Audit.SCORING_MODES.NUMERIC,requiredArtifacts:["devtoolsLogs"]}}static get defaultOptions(){return{p10:2731008,median:4096e3}}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=await go.request(n,t);let r=0,o=[];a.forEach((e=>{if(NetworkRequest.isNonNetworkRequest(e)||!e.transferSize)return;const t={url:e.url,totalBytes:e.transferSize};r+=t.totalBytes,o.push(t)})),
o=o.sort(((e,t)=>t.totalBytes-e.totalBytes||e.url.localeCompare(t.url))).slice(0,10);const i=Audit.computeLogNormalScore({p10:t.options.p10,median:t.options.median},r),s=[{key:"url",valueType:"url",label:vm(Dr.columnURL)},{key:"totalBytes",valueType:"bytes",label:vm(Dr.columnTransferSize)}],c=Audit.makeTableDetails(s,o);return{score:i,numericValue:r,numericUnit:"byte",displayValue:vm(bm.displayValue,{totalBytes:r}),details:c}}},UIStrings:bm});const Dm=/(return|case|{|\(|\[|\.\.\.|;|,|<|>|<=|>=|==|!=|===|!==|\+|-|\*|%|\*\*|\+\+|--|<<|>>|>>>|&|\||\^|!|~|&&|\|\||\?|:|=|\+=|-=|\*=|%=|\*\*=|<<=|>>=|>>>=|&=|\|=|\^=|=>|\/|\/=|\})$/,Em=/( |\n|\t)+$/;function hasPunctuatorBefore(e,t){for(let n=t;n>0;n--){const t=Math.max(0,n-6),a=e.slice(t,n);if(!Em.test(a))return Dm.test(a)}return!0}function computeTokenLength(e,t){let n=0,a=!1,r=!1,o=!1,i=!1,s=!1,c=!1,l=null;const u=[];for(let d=0;d<e.length;d++){const m=e.substr(d,2),p=m.charAt(0),h=" "===p||"\n"===p||"\t"===p,f="'"===p||'"'===p||"`"===p
;a?"\n"===p&&(a=!1):r?(o&&n++,"*/"===m&&(o&&n++,r=!1,d++)):i?(n++,"`"===l&&"${"===m?(u.push("templateBrace"),i=!1,n++,d++):"\\"===p?(n++,d++):p===l&&(i=!1)):s?(n++,"\\"===p?(n++,d++):"["===p?c=!0:"]"===p&&c?c=!1:"/"!==p||c||(s=!1)):"/*"===m?(r=!0,o="!"===e.charAt(d+2),o&&(n+=2),d++):"//"===m&&t.singlelineComments?(a=!0,r=!1,o=!1,d++):"/"===p&&t.regex&&hasPunctuatorBefore(e,d)?(s=!0,n++):"{"===p&&u.length?(u.push("normalBrace"),n++):"}"===p&&u.length?("templateBrace"===u[u.length-1]&&(i=!0,l="`"),u.pop(),n++):f?(i=!0,l=p,n++):h||n++}return r||i?e.length:n}const Tm={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/)."},Sm=createIcuMessageFn("core/audits/byte-efficiency/unminified-css.js",Tm);class UnminifiedCSS extends ByteEfficiencyAudit{static get meta(){return{id:"unminified-css",title:Sm(Tm.title),description:Sm(Tm.description),
scoreDisplayMode:ByteEfficiencyAudit.SCORING_MODES.NUMERIC,requiredArtifacts:["CSSUsage","devtoolsLogs","traces","URL","GatherContext"]}}static computeTokenLength(e){return function computeCSSTokenLength(e){return computeTokenLength(e,{singlelineComments:!1,regex:!1})}(e)}static computeWaste(e,t){const n=e.content,a=UnminifiedCSS.computeTokenLength(n);let r=e.header.sourceURL;if(!r||e.header.isInline){r=pm.determineContentPreview(e.content)}const o=ByteEfficiencyAudit.estimateTransferSize(t,n.length,"Stylesheet"),i=1-a/n.length;return{url:r,totalBytes:o,wastedBytes:Math.round(o*i),wastedPercent:100*i}}static audit_(e,t){const n=[];for(const a of e.CSSUsage.stylesheets){const e=t.find((e=>e.url===a.header.sourceURL));if(!a.content)continue;const r=UnminifiedCSS.computeWaste(a,e);r.wastedPercent<5||r.wastedBytes<2048||!Number.isFinite(r.wastedBytes)||n.push(r)}return{items:n,headings:[{key:"url",valueType:"url",label:Sm(Dr.columnURL)},{key:"totalBytes",valueType:"bytes",
label:Sm(Dr.columnTransferSize)},{key:"wastedBytes",valueType:"bytes",label:Sm(Dr.columnWastedBytes)}]}}}var Cm=Object.freeze({__proto__:null,default:UnminifiedCSS,UIStrings:Tm});const _m={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/)."},Am=createIcuMessageFn("core/audits/byte-efficiency/unminified-javascript.js",_m);class UnminifiedJavaScript extends ByteEfficiencyAudit{static get meta(){return{id:"unminified-javascript",title:Am(_m.title),description:Am(_m.description),scoreDisplayMode:ByteEfficiencyAudit.SCORING_MODES.NUMERIC,requiredArtifacts:["Scripts","devtoolsLogs","traces","GatherContext","URL"]}}static computeWaste(e,t,n){const a=e.length,r=function computeJSTokenLength(e){return computeTokenLength(e,{singlelineComments:!0,regex:!0})
}(e),o=ByteEfficiencyAudit.estimateTransferSize(n,a,"Script"),i=1-r/a;return{url:t,totalBytes:o,wastedBytes:Math.round(o*i),wastedPercent:100*i}}static audit_(e,t){const n=[],a=[];for(const r of e.Scripts){if(!r.content)continue;const e=getRequestForScript(t,r),o=isInline(r)?`inline: ${r.content.substring(0,40)}...`:r.url;try{const t=UnminifiedJavaScript.computeWaste(r.content,o,e);if(t.wastedPercent<10||t.wastedBytes<2048||!Number.isFinite(t.wastedBytes))continue;n.push(t)}catch(e){a.push(`Unable to process script ${r.url}: ${e.message}`)}}return{items:n,warnings:a,headings:[{key:"url",valueType:"url",label:Am(Dr.columnURL)},{key:"totalBytes",valueType:"bytes",label:Am(Dr.columnTransferSize)},{key:"wastedBytes",valueType:"bytes",label:Am(Dr.columnWastedBytes)}]}}}var km=Object.freeze({__proto__:null,default:UnminifiedJavaScript,UIStrings:_m});const Fm={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/)."},Rm=createIcuMessageFn("core/audits/byte-efficiency/unused-css-rules.js",Fm);var xm=Object.freeze({__proto__:null,default:class UnusedCSSRules extends ByteEfficiencyAudit{static get meta(){return{id:"unused-css-rules",title:Rm(Fm.title),description:Rm(Fm.description),scoreDisplayMode:ByteEfficiencyAudit.SCORING_MODES.NUMERIC,requiredArtifacts:["CSSUsage","URL","devtoolsLogs","traces","GatherContext"]}}static async audit_(e,t,n){return{items:(await pm.request({CSSUsage:e.CSSUsage,devtoolsLog:e.devtoolsLogs[ByteEfficiencyAudit.DEFAULT_PASS]},n)).filter((e=>e&&e.wastedBytes>10240)),headings:[{key:"url",valueType:"url",label:Rm(Dr.columnURL)},{key:"totalBytes",valueType:"bytes",label:Rm(Dr.columnTransferSize)},{key:"wastedBytes",
valueType:"bytes",label:Rm(Dr.columnWastedBytes)}]}}},UIStrings:Fm});
/**
* @license Copyright 2020 Google Inc. All Rights Reserved.
* 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.
*/class UnusedJavascriptSummary{static computeWaste(e){let t=0;for(const n of e.functions)t=Math.max(t,...n.ranges.map((e=>e.endOffset)));const n=new Uint8Array(t);for(const t of e.functions)for(const e of t.ranges)if(0===e.count)for(let t=e.startOffset;t<e.endOffset;t++)n[t]=1;let a=0;for(const e of n)a+=e;return{unusedByIndex:n,unusedLength:a,contentLength:t}}static createItem(e,t){const n=t.unusedLength/t.contentLength||0,a=Math.round(t.contentLength*n);return{scriptId:e,totalBytes:t.contentLength,wastedBytes:a,wastedPercent:100*n}}static createSourceWastedBytes(e,t){if(!t.script.content)return;const n={},a=t.script.content.split("\n").map((e=>e.length));let r=0;const o=a.map((e=>{const t=r;return r+=e+1,t}));t.map.computeLastGeneratedColumns();for(const r of t.map.mappings()){let t=o[r.lineNumber];t+=r.columnNumber;const i=void 0!==r.lastColumnNumber?r.lastColumnNumber-1:a[r.lineNumber];for(let a=r.columnNumber;a<=i;a++){if(1===e.unusedByIndex[t]){
const e=r.sourceURL||"(unmapped)";n[e]=(n[e]||0)+1}t+=1}}const i=Object.entries(n).sort((([e,t],[n,a])=>a-t)),s={};for(const[e,t]of i)s[e]=t;return s}static async compute_(e){const{scriptId:t,scriptCoverage:n,bundle:a}=e,r=UnusedJavascriptSummary.computeWaste(n),o=UnusedJavascriptSummary.createItem(t,r);return a?{...o,sourcesWastedBytes:UnusedJavascriptSummary.createSourceWastedBytes(r,a)}:o}}const Im=makeComputedArtifact(UnusedJavascriptSummary,["bundle","scriptCoverage","scriptId"]),Nm={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/)."},Lm=createIcuMessageFn("core/audits/byte-efficiency/unused-javascript.js",Nm),Mm=20480,Pm=512;function commonPrefix(e){if(!e.length)return"";const t=e.reduce(((e,t)=>e>t?e:t));let n=e.reduce(((e,t)=>e>t?t:e))
;for(;!t.startsWith(n);)n=n.slice(0,-1);return n}function trimCommonPrefix(e,t){return t&&e.startsWith(t)?"…"+e.slice(t.length):e}var Om=Object.freeze({__proto__:null,default:class UnusedJavaScript extends ByteEfficiencyAudit{static get meta(){return{id:"unused-javascript",title:Lm(Nm.title),description:Lm(Nm.description),scoreDisplayMode:ByteEfficiencyAudit.SCORING_MODES.NUMERIC,requiredArtifacts:["JsUsage","Scripts","SourceMaps","GatherContext","devtoolsLogs","traces","URL"]}}static async audit_(e,t,n){const a=await Hd.request(e,n),{unusedThreshold:r=Mm,bundleSourceUnusedThreshold:o=Pm}=n.options||{},i=[];for(const[s,c]of Object.entries(e.JsUsage)){const l=e.Scripts.find((e=>e.scriptId===s));if(!l)continue;const u=getRequestForScript(t,l);if(!u)continue;const d=a.find((e=>e.script.scriptId===s)),m=await Im.request({scriptId:s,scriptCoverage:c,bundle:d},n);if(0===m.wastedBytes||0===m.totalBytes)continue
;const p=ByteEfficiencyAudit.estimateTransferSize(u,m.totalBytes,"Script")/m.totalBytes,h={url:l.url,totalBytes:Math.round(p*m.totalBytes),wastedBytes:Math.round(p*m.wastedBytes),wastedPercent:m.wastedPercent};if(h.wastedBytes<=r)continue;if(i.push(h),!d||"errorMessage"in d.sizes)continue;const f=d.sizes;if(m.sourcesWastedBytes){const e=Object.entries(m.sourcesWastedBytes).sort(((e,t)=>t[1]-e[1])).slice(0,5).map((([e,t])=>{const n="(unmapped)"===e?f.unmappedBytes:f.files[e];return{source:e,unused:Math.round(t*p),total:Math.round(n*p)}})).filter((e=>e.unused>=o)),t=commonPrefix(d.map.sourceURLs());h.subItems={type:"subitems",items:e.map((({source:e,unused:n,total:a})=>({source:trimCommonPrefix(e,t),sourceBytes:a,sourceWastedBytes:n})))}}}return{items:i,headings:[{key:"url",valueType:"url",subItemsHeading:{key:"source",valueType:"code"},label:Lm(Dr.columnURL)},{key:"totalBytes",valueType:"bytes",subItemsHeading:{key:"sourceBytes"},label:Lm(Dr.columnTransferSize)},{key:"wastedBytes",
valueType:"bytes",subItemsHeading:{key:"sourceWastedBytes"},label:Lm(Dr.columnWastedBytes)}]}}},UIStrings:Nm}),Bm=function parseCacheControl(e){if("string"!=typeof e)return null;var t={},n=e.replace(/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,(function(e,n,a,r){var o=a||r;return t[n]=!o||o.toLowerCase(),""}));if(t["max-age"])try{var a=parseInt(t["max-age"],10);if(isNaN(a))return null;t["max-age"]=a}catch(n){}return n?null:t};const Um={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,\n =1 {1 resource found}\n other {# resources found}\n }"
},jm=createIcuMessageFn("core/audits/byte-efficiency/uses-long-cache-ttl.js",Um);class CacheHeaders extends Audit{static get meta(){return{id:"uses-long-cache-ttl",title:jm(Um.title),failureTitle:jm(Um.failureTitle),description:jm(Um.description),scoreDisplayMode:Audit.SCORING_MODES.NUMERIC,requiredArtifacts:["devtoolsLogs"]}}static get defaultOptions(){return{p10:28672,median:131072}}static getCacheHitProbability(e){const t=[0,.2,1,3,8,12,24,48,72,168,8760,1/0];if(12!==t.length)throw new Error("deciles 0-10 and 1 for overflow");const n=e/3600,a=t.findIndex((e=>e>=n));if(a===t.length-1)return 1;if(0===a)return 0;const r=t[a];return linearInterpolation(t[a-1],(a-1)/10,r,a/10,n)}static computeCacheLifetimeInSeconds(e,t){if(t&&void 0!==t["max-age"])return t["max-age"];const n=e.get("expires");if(n){const e=new Date(n).getTime();return e?Math.ceil((e-Date.now())/1e3):0}return null}static isCacheableAsset(e){
const t=new Set([200,203,206]),n=new Set([NetworkRequest.TYPES.Font,NetworkRequest.TYPES.Image,NetworkRequest.TYPES.Media,NetworkRequest.TYPES.Script,NetworkRequest.TYPES.Stylesheet]);return!NetworkRequest.isNonNetworkRequest(e)&&(t.has(e.statusCode)&&n.has(e.resourceType||"Other"))}static shouldSkipRecord(e,t){return!(t||!(e.get("pragma")||"").includes("no-cache"))||!(!t||!(t["must-revalidate"]||t["no-cache"]||t["no-store"]||t["stale-while-revalidate"]||t.private))}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=await go.request(n,t),r=[];let o=0;for(const e of a){if(!CacheHeaders.isCacheableAsset(e))continue;const t=new Map;for(const n of e.responseHeaders||[])if(t.has(n.name.toLowerCase())){const e=t.get(n.name.toLowerCase());t.set(n.name.toLowerCase(),`${e}, ${n.value}`)}else t.set(n.name.toLowerCase(),n.value);const n=Bm(t.get("cache-control"));if(this.shouldSkipRecord(t,n))continue;let a=CacheHeaders.computeCacheLifetimeInSeconds(t,n)
;if(null!==a&&(!Number.isFinite(a)||a<=0))continue;a=a||0;const i=CacheHeaders.getCacheHitProbability(a);if(i>.925)continue;const s=UrlUtils.elideDataURI(e.url),c=e.transferSize||0,l=(1-i)*c;let u;o+=l,n&&(u={type:"debugdata",...n}),r.push({url:s,debugData:u,cacheLifetimeMs:1e3*a,cacheHitProbability:i,totalBytes:c,wastedBytes:l})}r.sort(((e,t)=>e.cacheLifetimeMs-t.cacheLifetimeMs||t.totalBytes-e.totalBytes||e.url.localeCompare(t.url)));const i=Audit.computeLogNormalScore({p10:t.options.p10,median:t.options.median},o),s=[{key:"url",valueType:"url",label:jm(Dr.columnURL)},{key:"cacheLifetimeMs",valueType:"ms",label:jm(Dr.columnCacheTTL),displayUnit:"duration"},{key:"totalBytes",valueType:"bytes",label:jm(Dr.columnTransferSize),displayUnit:"kb",granularity:1}],c={wastedBytes:o},l=Audit.makeTableDetails(s,r,c);return{score:i,numericValue:o,numericUnit:"byte",displayValue:jm(Um.displayValue,{itemCount:r.length}),details:l}}}var zm=Object.freeze({__proto__:null,default:CacheHeaders,
UIStrings:Um});const qm={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/)."},$m=createIcuMessageFn("core/audits/byte-efficiency/uses-optimized-images.js",qm);class UsesOptimizedImages extends ByteEfficiencyAudit{static get meta(){return{id:"uses-optimized-images",title:$m(qm.title),description:$m(qm.description),scoreDisplayMode:ByteEfficiencyAudit.SCORING_MODES.NUMERIC,requiredArtifacts:["OptimizedImages","ImageElements","GatherContext","devtoolsLogs","traces","URL"]}}static computeSavings(e){const t=e.originalSize-e.jpegSize;return{bytes:t,percent:100*t/e.originalSize}}static estimateJPEGSizeFromDimensions(e){const t=e.naturalWidth*e.naturalHeight;return Math.round(t*(2/8))}static audit_(e){const t=e.URL.finalDisplayedUrl,n=e.OptimizedImages,a=e.ImageElements,r=new Map;a.forEach((e=>r.set(e.src,e)))
;const o=[],i=[];for(const e of n){const n=r.get(e.url);if(e.failed){i.push(`Unable to decode ${UrlUtils.getURLDisplayName(e.url)}`);continue}if(!1===/(jpeg|bmp)/.test(e.mimeType))continue;let a=e.jpegSize,s=!0;if(void 0===a){if(!n){i.push(`Unable to locate resource ${UrlUtils.getURLDisplayName(e.url)}`);continue}if(!n.naturalDimensions)continue;const t=n.naturalDimensions.height,r=n.naturalDimensions.width;if(!t||!r)continue;a=UsesOptimizedImages.estimateJPEGSizeFromDimensions({naturalHeight:t,naturalWidth:r}),s=!1}if(e.originalSize<a+4096)continue;const c=UrlUtils.elideDataURI(e.url),l=!UrlUtils.originsMatch(t,e.url),u=UsesOptimizedImages.computeSavings({...e,jpegSize:a});o.push({node:n?ByteEfficiencyAudit.makeNodeItem(n.node):void 0,url:c,fromProtocol:s,isCrossOrigin:l,totalBytes:e.originalSize,wastedBytes:u.bytes})}return{warnings:i,items:o,headings:[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:$m(Dr.columnURL)},{key:"totalBytes",valueType:"bytes",
label:$m(Dr.columnResourceSize)},{key:"wastedBytes",valueType:"bytes",label:$m(Dr.columnWastedBytes)}]}}}var Vm=Object.freeze({__proto__:null,default:UsesOptimizedImages,UIStrings:qm});class ImageRecords{static indexNetworkRecords(e){return e.reduce(((e,t)=>((/^image/.test(t.mimeType)||/\.(avif|webp)$/i.test(t.url))&&t.finished&&200===t.statusCode&&(e[t.url]=t),e)),{})}static async compute_(e){const t=ImageRecords.indexNetworkRecords(e.networkRecords),n=[];for(const a of e.ImageElements){const e=t[a.src]?.mimeType;n.push({...a,mimeType:e||UrlUtils.guessMimeType(a.src)})}return n.sort(((e,n)=>{const a=t[e.src]||{};return(t[n.src]||{}).resourceSize-a.resourceSize})),n}}const Wm=makeComputedArtifact(ImageRecords,["ImageElements","networkRecords"]),Hm={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/)."
},Gm=createIcuMessageFn("core/audits/byte-efficiency/uses-responsive-images.js",Hm);class UsesResponsiveImages extends ByteEfficiencyAudit{static get meta(){return{id:"uses-responsive-images",title:Gm(Hm.title),description:Gm(Hm.description),scoreDisplayMode:ByteEfficiencyAudit.SCORING_MODES.NUMERIC,requiredArtifacts:["ImageElements","ViewportDimensions","GatherContext","devtoolsLogs","traces","URL"]}}static getDisplayedDimensions(e,t){if(e.displayedWidth&&e.displayedHeight)return{width:e.displayedWidth*t.devicePixelRatio,height:e.displayedHeight*t.devicePixelRatio};const n=t.innerWidth,a=2*t.innerHeight,r=e.naturalWidth/e.naturalHeight;let o=n,i=a;return r>n/a?i=n/r:o=a*r,{width:o*t.devicePixelRatio,height:i*t.devicePixelRatio}}static computeWaste(e,t,n){const a=n.find((t=>t.url===e.src));if(!a)return null
;const r=this.getDisplayedDimensions(e,t),o=r.width*r.height,i=UrlUtils.elideDataURI(e.src),s=1-o/(e.naturalWidth*e.naturalHeight),c=NetworkRequest.getResourceSizeOnNetwork(a),l=Math.round(c*s);return{node:ByteEfficiencyAudit.makeNodeItem(e.node),url:i,totalBytes:c,wastedBytes:l,wastedPercent:100*s}}static determineAllowableWaste(e){return e.srcset||e.isPicture?12288:4096}static async audit_(e,t,n){const a=await Wm.request({ImageElements:e.ImageElements,networkRecords:t},n),r=e.ViewportDimensions,o=new Map,i=[];for(const e of a){if("image/svg+xml"===e.mimeType||e.isCss)continue;if(!e.naturalDimensions)continue;const n=e.naturalDimensions.height,a=e.naturalDimensions.width;if(!a||!n)continue;const s=UsesResponsiveImages.computeWaste({...e,naturalHeight:n,naturalWidth:a},r,t);if(!s)continue;const c=s.wastedBytes>this.determineAllowableWaste(e),l=o.get(s.url);c&&!i.includes(s.url)?(!l||l.wastedBytes>s.wastedBytes)&&o.set(s.url,s):(o.delete(s.url),i.push(s.url))}return{
items:Array.from(o.values()),headings:[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:Gm(Dr.columnURL)},{key:"totalBytes",valueType:"bytes",label:Gm(Dr.columnResourceSize)},{key:"wastedBytes",valueType:"bytes",label:Gm(Dr.columnWastedBytes)}]}}}var Ym=Object.freeze({__proto__:null,default:UsesResponsiveImages,UIStrings:Hm,str_:Gm});const Km={title:"Images were appropriate for their displayed size",failureTitle:"Images were larger than their displayed size",columnDisplayedDimensions:"Displayed dimensions",columnActualDimensions:"Actual dimensions"},Jm=createIcuMessageFn("core/audits/byte-efficiency/uses-responsive-images-snapshot.js",Km);var Zm=Object.freeze({__proto__:null,default:class UsesResponsiveImagesSnapshot extends Audit{static get meta(){return{id:"uses-responsive-images-snapshot",title:Jm(Km.title),failureTitle:Jm(Km.failureTitle),description:Gm(Hm.description),supportedModes:["snapshot"],requiredArtifacts:["ImageElements","ViewportDimensions"]}}
static async audit(e){let t=1;const n=[];for(const a of e.ImageElements){if(!a.naturalDimensions)continue;const r=a.naturalDimensions,o=UsesResponsiveImages.getDisplayedDimensions({...a,naturalWidth:r.width,naturalHeight:r.height},e.ViewportDimensions),i=r.width*r.height,s=o.width*o.height;i<=s||(i-s>1365&&(t=0),n.push({node:Audit.makeNodeItem(a.node),url:UrlUtils.elideDataURI(a.src),displayedDimensions:`${o.width}x${o.height}`,actualDimensions:`${r.width}x${r.height}`}))}const a=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:Jm(Dr.columnURL)},{key:"displayedDimensions",valueType:"text",label:Jm(Km.columnDisplayedDimensions)},{key:"actualDimensions",valueType:"text",label:Jm(Km.columnActualDimensions)}];return{score:t,details:Audit.makeTableDetails(a,n)}}},UIStrings:Km});const Xm={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/)."},Qm=createIcuMessageFn("core/audits/byte-efficiency/uses-text-compression.js",Xm);var ep=Object.freeze({__proto__:null,default:class ResponsesAreCompressed extends ByteEfficiencyAudit{static get meta(){return{id:"uses-text-compression",title:Qm(Xm.title),description:Qm(Xm.description),scoreDisplayMode:ByteEfficiencyAudit.SCORING_MODES.NUMERIC,requiredArtifacts:["ResponseCompression","GatherContext","devtoolsLogs","traces","URL"]}}static audit_(e){const t=e.ResponseCompression,n=[];t.forEach((e=>{if(!e.gzipSize||e.gzipSize<0)return;const t=e.resourceSize,a=e.gzipSize,r=t-a;if(1-a/t<.1||r<1400||e.transferSize<a)return;const o=UrlUtils.elideDataURI(e.url);n.find((t=>t.url===o&&t.totalBytes===e.resourceSize))||n.push({url:o,totalBytes:t,
wastedBytes:r})}));const a=[{key:"url",valueType:"url",label:Qm(Dr.columnURL)},{key:"totalBytes",valueType:"bytes",label:Qm(Dr.columnTransferSize)},{key:"wastedBytes",valueType:"bytes",label:Qm(Dr.columnWastedBytes)}];return{items:n,headings:a}}},UIStrings:Xm});const tp={title:"Content is sized correctly for the viewport",failureTitle:"Content is not sized correctly for the viewport",description:"If the width of your app's content doesn't match the width of the viewport, your app might not be optimized for mobile screens. [Learn how to size content for the viewport](https://developer.chrome.com/docs/lighthouse/pwa/content-width/).",explanation:"The viewport size of {innerWidth}px does not match the window size of {outerWidth}px."},np=createIcuMessageFn("core/audits/content-width.js",tp);var ap=Object.freeze({__proto__:null,default:class ContentWidth extends Audit{static get meta(){return{id:"content-width",title:np(tp.title),failureTitle:np(tp.failureTitle),
description:np(tp.description),requiredArtifacts:["ViewportDimensions"]}}static audit(e,t){const n=e.ViewportDimensions.innerWidth===e.ViewportDimensions.outerWidth;if("desktop"===t.settings.formFactor)return{score:1,notApplicable:!0};let a;return n||(a=np(tp.explanation,{innerWidth:e.ViewportDimensions.innerWidth,outerWidth:e.ViewportDimensions.outerWidth})),{score:Number(n),explanation:a}}},UIStrings:tp});class CriticalRequestChains$1{static isCritical(e,t){if(!t)throw new Error("mainResource not provided");if(e.requestId===t.requestId)return!0;if(e.isLinkPreload)return!1;for(;e.redirectDestination;)e=e.redirectDestination;const n=e.resourceType===NetworkRequest.TYPES.Document&&e.frameId!==t.frameId;return!([NetworkRequest.TYPES.Image,NetworkRequest.TYPES.XHR,NetworkRequest.TYPES.Fetch,NetworkRequest.TYPES.EventSource].includes(e.resourceType||"Other")||n||e.mimeType&&e.mimeType.startsWith("image/"))&&(!!e.initiatorRequest&&["VeryHigh","High","Medium"].includes(e.priority))}
static extractChainsFromGraph(e,t){const n={};const a=new Set;return t.traverse(((t,r)=>{if(a.add(t),"network"!==t.type)return;if(!CriticalRequestChains$1.isCritical(t.record,e))return;const o=r.filter((e=>"network"===e.type)).reverse().map((e=>e.record));o.some((t=>!CriticalRequestChains$1.isCritical(t,e)))||NetworkRequest.isNonNetworkRequest(t.record)||function addChain(e){let t=n;for(const n of e)t[n.requestId]||(t[n.requestId]={request:n,children:{}}),t=t[n.requestId].children}(o)}),(function getNextNodes(e){return e.getDependents().filter((e=>e.getDependencies().every((e=>a.has(e)))))})),n}static async compute_(e,t){const n=await sc.request(e,t),a=await mo.request(e,t);return CriticalRequestChains$1.extractChainsFromGraph(n,a)}}const rp=makeComputedArtifact(CriticalRequestChains$1,["URL","devtoolsLog","trace"]),op={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,\n =1 {1 chain found}\n other {# chains found}\n }"},ip=createIcuMessageFn("core/audits/critical-request-chains.js",op);class CriticalRequestChains extends Audit{static get meta(){return{id:"critical-request-chains",title:ip(op.title),description:ip(op.description),scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","URL"]}}static _traverse(e,t){!function walk(e,n,a,r=0){const o=Object.keys(e);0!==o.length&&o.forEach((o=>{const i=e[o];a||(a=i.request.networkRequestTime),t({depth:n,id:o,
node:i,chainDuration:i.request.networkEndTime-a,chainTransferSize:r+i.request.transferSize}),i.children&&walk(i.children,n+1,a)}),"")}(e,0)}static _getLongestChain(e){const t={duration:0,length:0,transferSize:0};return CriticalRequestChains._traverse(e,(e=>{const n=e.chainDuration;n>t.duration&&(t.duration=n,t.transferSize=e.chainTransferSize,t.length=e.depth)})),t.length++,t}static flattenRequests(e){const t={},n=new Map;return CriticalRequestChains._traverse(e,(function flatten(e){const a=e.node.request,r={url:a.url,startTime:a.networkRequestTime/1e3,endTime:a.networkEndTime/1e3,responseReceivedTime:a.responseHeadersEndTime/1e3,transferSize:a.transferSize};let o=n.get(e.id);if(o?o.request=r:(o={request:r},t[e.id]=o),e.node.children)for(const t of Object.keys(e.node.children)){const e={request:{}};n.set(t,e),o.children||(o.children={}),o.children[t]=e}n.set(e.id,o)})),t}static async audit(e,t){
const n=e.traces[Audit.DEFAULT_PASS],a=e.devtoolsLogs[Audit.DEFAULT_PASS],r=e.URL,o=await rp.request({devtoolsLog:a,trace:n,URL:r},t);let i=0;const s=CriticalRequestChains.flattenRequests(o),c=Object.keys(s)[0],l=c&&s[c].children;l&&Object.keys(l).length>0&&function walk(e,t){Object.keys(e).forEach((t=>{const n=e[t];n.children?walk(n.children):i++}),"")}(l);const u=CriticalRequestChains._getLongestChain(o);return{score:Number(0===i),notApplicable:0===i,displayValue:i?ip(op.displayValue,{itemCount:i}):"",details:{type:"criticalrequestchain",chains:s,longestChain:u}}}}var sp=Object.freeze({__proto__:null,default:CriticalRequestChains,UIStrings:op}),cp={},lp={},up={},dp={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Type=e.Severity=e.Finding=void 0;class Finding{constructor(e,t,n,a,r){this.type=e,this.description=t,this.severity=n,this.directive=a,this.value=r}static getHighestSeverity(e){if(0===e.length)return t.NONE
;return e.map((e=>e.severity)).reduce(((e,t)=>e<t?e:t),t.NONE)}equals(e){return e instanceof Finding&&(e.type===this.type&&e.description===this.description&&e.severity===this.severity&&e.directive===this.directive&&e.value===this.value)}}var t,n;e.Finding=Finding,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"}(t=e.Severity||(e.Severity={})),(n=e.Type||(e.Type={}))[n.MISSING_SEMICOLON=100]="MISSING_SEMICOLON",n[n.UNKNOWN_DIRECTIVE=101]="UNKNOWN_DIRECTIVE",n[n.INVALID_KEYWORD=102]="INVALID_KEYWORD",n[n.NONCE_CHARSET=106]="NONCE_CHARSET",n[n.MISSING_DIRECTIVES=300]="MISSING_DIRECTIVES",n[n.SCRIPT_UNSAFE_INLINE=301]="SCRIPT_UNSAFE_INLINE",n[n.SCRIPT_UNSAFE_EVAL=302]="SCRIPT_UNSAFE_EVAL",n[n.PLAIN_URL_SCHEMES=303]="PLAIN_URL_SCHEMES",n[n.PLAIN_WILDCARD=304]="PLAIN_WILDCARD",
n[n.SCRIPT_ALLOWLIST_BYPASS=305]="SCRIPT_ALLOWLIST_BYPASS",n[n.OBJECT_ALLOWLIST_BYPASS=306]="OBJECT_ALLOWLIST_BYPASS",n[n.NONCE_LENGTH=307]="NONCE_LENGTH",n[n.IP_SOURCE=308]="IP_SOURCE",n[n.DEPRECATED_DIRECTIVE=309]="DEPRECATED_DIRECTIVE",n[n.SRC_HTTP=310]="SRC_HTTP",n[n.STRICT_DYNAMIC=400]="STRICT_DYNAMIC",n[n.STRICT_DYNAMIC_NOT_STANDALONE=401]="STRICT_DYNAMIC_NOT_STANDALONE",n[n.NONCE_HASH=402]="NONCE_HASH",n[n.UNSAFE_INLINE_FALLBACK=403]="UNSAFE_INLINE_FALLBACK",n[n.ALLOWLIST_FALLBACK=404]="ALLOWLIST_FALLBACK",n[n.IGNORED=405]="IGNORED",n[n.REQUIRE_TRUSTED_TYPES_FOR_SCRIPTS=500]="REQUIRE_TRUSTED_TYPES_FOR_SCRIPTS",n[n.REPORTING_DESTINATION_MISSING=600]="REPORTING_DESTINATION_MISSING",n[n.REPORT_TO_ONLY=601]="REPORT_TO_ONLY"}(dp),function(e){Object.defineProperty(e,"__esModule",{value:!0}),
e.CspError=e.isHash=e.HASH_PATTERN=e.STRICT_HASH_PATTERN=e.isNonce=e.NONCE_PATTERN=e.STRICT_NONCE_PATTERN=e.isUrlScheme=e.isKeyword=e.isDirective=e.Version=e.FETCH_DIRECTIVES=e.Directive=e.TrustedTypesSink=e.Keyword=e.Csp=void 0;const t=dp;class Csp{constructor(){this.directives={}}clone(){const e=new Csp;for(const[t,n]of Object.entries(this.directives))n&&(e.directives[t]=[...n]);return e}convertToString(){let e="";for(const[t,n]of Object.entries(this.directives)){if(e+=t,void 0!==n)for(let t,a=0;t=n[a];a++)e+=" ",e+=t;e+="; "}return e}getEffectiveCsp(e,o){const i=o||[],s=this.clone(),c=s.getEffectiveDirective(a.SCRIPT_SRC),l=this.directives[c]||[],u=s.directives[c];if(u&&(s.policyHasScriptNonces()||s.policyHasScriptHashes()))if(e>=r.CSP2)l.includes(n.UNSAFE_INLINE)&&(arrayRemove(u,n.UNSAFE_INLINE),
i.push(new t.Finding(t.Type.IGNORED,"unsafe-inline is ignored if a nonce or a hash is present. (CSP2 and above)",t.Severity.NONE,c,n.UNSAFE_INLINE)));else for(const e of l)(e.startsWith("'nonce-")||e.startsWith("'sha"))&&arrayRemove(u,e);if(u&&this.policyHasStrictDynamic())if(e>=r.CSP3)for(const e of l)e.startsWith("'")&&e!==n.SELF&&e!==n.UNSAFE_INLINE||(arrayRemove(u,e),i.push(new t.Finding(t.Type.IGNORED,"Because of strict-dynamic this entry is ignored in CSP3 and above",t.Severity.NONE,c,e)));else arrayRemove(u,n.STRICT_DYNAMIC);return e<r.CSP3&&(delete s.directives[a.REPORT_TO],delete s.directives[a.WORKER_SRC],delete s.directives[a.MANIFEST_SRC],delete s.directives[a.TRUSTED_TYPES],delete s.directives[a.REQUIRE_TRUSTED_TYPES_FOR]),s}getEffectiveDirective(t){return!(t in this.directives)&&e.FETCH_DIRECTIVES.includes(t)?a.DEFAULT_SRC:t}getEffectiveDirectives(e){return[...new Set(e.map((e=>this.getEffectiveDirective(e))))]}policyHasScriptNonces(){
const e=this.getEffectiveDirective(a.SCRIPT_SRC);return(this.directives[e]||[]).some((e=>isNonce(e)))}policyHasScriptHashes(){const e=this.getEffectiveDirective(a.SCRIPT_SRC);return(this.directives[e]||[]).some((e=>isHash(e)))}policyHasStrictDynamic(){const e=this.getEffectiveDirective(a.SCRIPT_SRC);return(this.directives[e]||[]).includes(n.STRICT_DYNAMIC)}}var n,a,r;function isNonce(t,n){return(n?e.STRICT_NONCE_PATTERN:e.NONCE_PATTERN).test(t)}function isHash(t,n){return(n?e.STRICT_HASH_PATTERN:e.HASH_PATTERN).test(t)}e.Csp=Csp,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'"}(n=e.Keyword||(e.Keyword={})),(e.TrustedTypesSink||(e.TrustedTypesSink={})).SCRIPT="'script'",
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"}(a=e.Directive||(e.Directive={})),e.FETCH_DIRECTIVES=[a.CHILD_SRC,a.CONNECT_SRC,a.DEFAULT_SRC,a.FONT_SRC,a.FRAME_SRC,a.IMG_SRC,a.MANIFEST_SRC,a.MEDIA_SRC,a.OBJECT_SRC,a.SCRIPT_SRC,a.SCRIPT_SRC_ATTR,a.SCRIPT_SRC_ELEM,a.STYLE_SRC,a.STYLE_SRC_ATTR,a.STYLE_SRC_ELEM,a.WORKER_SRC],function(e){e[e.CSP1=1]="CSP1",e[e.CSP2=2]="CSP2",e[e.CSP3=3]="CSP3"}(r=e.Version||(e.Version={})),e.isDirective=function isDirective(e){return Object.values(a).includes(e)},e.isKeyword=function isKeyword(e){return Object.values(n).includes(e)},e.isUrlScheme=function isUrlScheme(e){return new RegExp("^[a-zA-Z][+a-zA-Z0-9.-]*:$").test(e)},e.STRICT_NONCE_PATTERN=new RegExp("^'nonce-[a-zA-Z0-9+/_-]+[=]{0,2}'$"),e.NONCE_PATTERN=new RegExp("^'nonce-(.+)'$"),e.isNonce=isNonce,e.STRICT_HASH_PATTERN=new RegExp("^'(sha256|sha384|sha512)-[a-zA-Z0-9+/]+[=]{0,2}'$"),e.HASH_PATTERN=new RegExp("^'(sha256|sha384|sha512)-(.+)'$"),e.isHash=isHash
;class CspError extends Error{constructor(e){super(e)}}function arrayRemove(e,t){if(e.includes(t)){const n=e.findIndex((e=>t===e));e.splice(n,1)}}e.CspError=CspError}(up);var mp=globalThis&&globalThis.__createBinding||(Object.create?function(e,t,n,a){void 0===a&&(a=n),Object.defineProperty(e,a,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,a){void 0===a&&(a=n),e[a]=t[n]}),pp=globalThis&&globalThis.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),gp=globalThis&&globalThis.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&mp(t,e,n);return pp(t,e),t};Object.defineProperty(lp,"__esModule",{value:!0}),lp.checkInvalidKeyword=lp.checkMissingSemicolon=lp.checkUnknownDirective=void 0;const hp=gp(up),fp=up,yp=dp;lp.checkUnknownDirective=function checkUnknownDirective(e){const t=[]
;for(const n of Object.keys(e.directives))hp.isDirective(n)||(n.endsWith(":")?t.push(new yp.Finding(yp.Type.UNKNOWN_DIRECTIVE,"CSP directives don't end with a colon.",yp.Severity.SYNTAX,n)):t.push(new yp.Finding(yp.Type.UNKNOWN_DIRECTIVE,'Directive "'+n+'" is not a known CSP directive.',yp.Severity.SYNTAX,n)));return t},lp.checkMissingSemicolon=function checkMissingSemicolon(e){const t=[];for(const[n,a]of Object.entries(e.directives))if(void 0!==a)for(const e of a)hp.isDirective(e)&&t.push(new yp.Finding(yp.Type.MISSING_SEMICOLON,'Did you forget the semicolon? "'+e+'" seems to be a directive, not a value.',yp.Severity.SYNTAX,n,e));return t},lp.checkInvalidKeyword=function checkInvalidKeyword(e){const t=[],n=Object.values(fp.Keyword).map((e=>e.replace(/'/g,"")))
;for(const[a,r]of Object.entries(e.directives))if(void 0!==r)for(const e of r)if(n.some((t=>t===e))||e.startsWith("nonce-")||e.match(/^(sha256|sha384|sha512)-/))t.push(new yp.Finding(yp.Type.INVALID_KEYWORD,'Did you forget to surround "'+e+'" with single-ticks?',yp.Severity.SYNTAX,a,e));else if(e.startsWith("'")){if(a===hp.Directive.REQUIRE_TRUSTED_TYPES_FOR){if(e===hp.TrustedTypesSink.SCRIPT)continue}else if(a===hp.Directive.TRUSTED_TYPES){if("'allow-duplicates'"===e||"'none'"===e)continue}else if(hp.isKeyword(e)||hp.isHash(e)||hp.isNonce(e))continue;t.push(new yp.Finding(yp.Type.INVALID_KEYWORD,e+" seems to be an invalid CSP keyword.",yp.Severity.SYNTAX,a,e))}return t};var bp={},vp={};Object.defineProperty(vp,"__esModule",{value:!0}),vp.URLS=void 0,
vp.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-providers/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 wp={};Object.defineProperty(wp,"__esModule",{value:!0}),wp.URLS=void 0,wp.URLS=["//vk.com/swf/video.swf","//ajax.googleapis.com/ajax/libs/yui/2.8.0r4/build/charts/assets/charts.swf"];var Dp={};Object.defineProperty(Dp,"__esModule",{value:!0}),Dp.URLS=Dp.NEEDS_EVAL=void 0,Dp.NEEDS_EVAL=["googletagmanager.com","www.googletagmanager.com","www.googleadservices.com","google-analytics.com","ssl.google-analytics.com","www.google-analytics.com"],
Dp.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/revoke","//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/AerialWithLabels/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 Ep={};function getSchemeFreeUrl(e){return e=(e=e.replace(/^\w[+\w.-]*:\/\//i,"")).replace(/^\/\//,"")}function setScheme(e){return e.startsWith("//")?e.replace("//","https://"):e}Object.defineProperty(Ep,"__esModule",{value:!0}),Ep.applyCheckFunktionToDirectives=Ep.matchWildcardUrls=Ep.getHostname=Ep.getSchemeFreeUrl=void 0,Ep.getSchemeFreeUrl=getSchemeFreeUrl,Ep.getHostname=function getHostname(e){const t=new URL("https://"+getSchemeFreeUrl(e).replace(":*","").replace("*","wildcard_placeholder")).hostname.replace("wildcard_placeholder","*"),n=/^\[[\d:]+\]/;return getSchemeFreeUrl(e).match(n)&&!t.match(n)?"["+t+"]":t},Ep.matchWildcardUrls=function matchWildcardUrls(e,t){const n=new URL(setScheme(e.replace(":*","").replace("*","wildcard_placeholder"))),a=t.map((e=>new URL(setScheme(e)))),r=n.hostname.toLowerCase(),o=r.startsWith("wildcard_placeholder."),i=r.replace(/^\wildcard_placeholder/i,""),s=n.pathname,c="/"!==s;for(const e of a){const t=e.hostname
;if(t.endsWith(i)&&(o||r===t)){if(c)if(s.endsWith("/")){if(!e.pathname.startsWith(s))continue}else if(e.pathname!==s)continue;return e}}return null},Ep.applyCheckFunktionToDirectives=function applyCheckFunktionToDirectives(e,t){const n=Object.keys(e.directives);for(const a of n){const n=e.directives[a];n&&t(a,n)}},function(e){var t=this&&this.__createBinding||(Object.create?function(e,t,n,a){void 0===a&&(a=n),Object.defineProperty(e,a,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,a){void 0===a&&(a=n),e[a]=t[n]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var a={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&t(a,e,r);return n(a,e),a};Object.defineProperty(e,"__esModule",{value:!0}),
e.checkHasConfiguredReporting=e.checkSrcHttp=e.checkNonceLength=e.checkDeprecatedDirective=e.checkIpSource=e.looksLikeIpAddress=e.checkFlashObjectAllowlistBypass=e.checkScriptAllowlistBypass=e.checkMissingDirectives=e.checkMultipleMissingBaseUriDirective=e.checkMissingBaseUriDirective=e.checkMissingScriptSrcDirective=e.checkMissingObjectSrcDirective=e.checkWildcards=e.checkPlainUrlSchemes=e.checkScriptUnsafeEval=e.checkScriptUnsafeInline=e.URL_SCHEMES_CAUSING_XSS=e.DIRECTIVES_CAUSING_XSS=void 0;const r=a(vp),o=a(wp),i=a(Dp),s=a(up),c=up,l=dp,u=a(Ep);function checkMissingObjectSrcDirective(e){let t=[];return c.Directive.OBJECT_SRC in e.directives?t=e.directives[c.Directive.OBJECT_SRC]:c.Directive.DEFAULT_SRC in e.directives&&(t=e.directives[c.Directive.DEFAULT_SRC]),void 0!==t&&t.length>=1?[]:[new l.Finding(l.Type.MISSING_DIRECTIVES,"Missing object-src allows the injection of plugins which can execute JavaScript. Can you set it to 'none'?",l.Severity.HIGH,c.Directive.OBJECT_SRC)]}
function checkMissingScriptSrcDirective(e){return c.Directive.SCRIPT_SRC in e.directives||c.Directive.DEFAULT_SRC in e.directives?[]:[new l.Finding(l.Type.MISSING_DIRECTIVES,"script-src directive is missing.",l.Severity.HIGH,c.Directive.SCRIPT_SRC)]}function checkMissingBaseUriDirective(e){return checkMultipleMissingBaseUriDirective([e])}function checkMultipleMissingBaseUriDirective(e){if(e.some((e=>e.policyHasScriptNonces()||e.policyHasScriptHashes()&&e.policyHasStrictDynamic()))&&!e.some((e=>c.Directive.BASE_URI in e.directives))){const e="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 l.Finding(l.Type.MISSING_DIRECTIVES,e,l.Severity.HIGH,c.Directive.BASE_URI)]}return[]}function looksLikeIpAddress(e){return!(!e.startsWith("[")||!e.endsWith("]"))||!!/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/.test(e)}
e.DIRECTIVES_CAUSING_XSS=[c.Directive.SCRIPT_SRC,c.Directive.OBJECT_SRC,c.Directive.BASE_URI],e.URL_SCHEMES_CAUSING_XSS=["data:","http:","https:"],e.checkScriptUnsafeInline=function checkScriptUnsafeInline(e){const t=e.getEffectiveDirective(c.Directive.SCRIPT_SRC);return(e.directives[t]||[]).includes(c.Keyword.UNSAFE_INLINE)?[new l.Finding(l.Type.SCRIPT_UNSAFE_INLINE,"'unsafe-inline' allows the execution of unsafe in-page scripts and event handlers.",l.Severity.HIGH,t,c.Keyword.UNSAFE_INLINE)]:[]},e.checkScriptUnsafeEval=function checkScriptUnsafeEval(e){const t=e.getEffectiveDirective(c.Directive.SCRIPT_SRC);return(e.directives[t]||[]).includes(c.Keyword.UNSAFE_EVAL)?[new l.Finding(l.Type.SCRIPT_UNSAFE_EVAL,"'unsafe-eval' allows the execution of code injected into DOM APIs such as eval().",l.Severity.MEDIUM_MAYBE,t,c.Keyword.UNSAFE_EVAL)]:[]},e.checkPlainUrlSchemes=function checkPlainUrlSchemes(t){const n=[],a=t.getEffectiveDirectives(e.DIRECTIVES_CAUSING_XSS);for(const r of a){
const a=t.directives[r]||[];for(const t of a)e.URL_SCHEMES_CAUSING_XSS.includes(t)&&n.push(new l.Finding(l.Type.PLAIN_URL_SCHEMES,t+" URI in "+r+" allows the execution of unsafe scripts.",l.Severity.HIGH,r,t))}return n},e.checkWildcards=function checkWildcards(t){const n=[],a=t.getEffectiveDirectives(e.DIRECTIVES_CAUSING_XSS);for(const e of a){const a=t.directives[e]||[];for(const t of a){"*"!==u.getSchemeFreeUrl(t)||n.push(new l.Finding(l.Type.PLAIN_WILDCARD,e+" should not allow '*' as source",l.Severity.HIGH,e,t))}}return n},e.checkMissingObjectSrcDirective=checkMissingObjectSrcDirective,e.checkMissingScriptSrcDirective=checkMissingScriptSrcDirective,e.checkMissingBaseUriDirective=checkMissingBaseUriDirective,e.checkMultipleMissingBaseUriDirective=checkMultipleMissingBaseUriDirective,e.checkMissingDirectives=function checkMissingDirectives(e){return[...checkMissingObjectSrcDirective(e),...checkMissingScriptSrcDirective(e),...checkMissingBaseUriDirective(e)]},
e.checkScriptAllowlistBypass=function checkScriptAllowlistBypass(e){const t=[],n=e.getEffectiveDirective(c.Directive.SCRIPT_SRC),a=e.directives[n]||[];if(a.includes(c.Keyword.NONE))return t;for(const e of a){if(e===c.Keyword.SELF){t.push(new l.Finding(l.Type.SCRIPT_ALLOWLIST_BYPASS,"'self' can be problematic if you host JSONP, AngularJS or user uploaded files.",l.Severity.MEDIUM_MAYBE,n,e));continue}if(e.startsWith("'"))continue;if(s.isUrlScheme(e)||-1===e.indexOf("."))continue;const o="//"+u.getSchemeFreeUrl(e),d=u.matchWildcardUrls(o,r.URLS);let m=u.matchWildcardUrls(o,i.URLS);if(m){const e=i.NEEDS_EVAL.includes(m.hostname),t=a.includes(c.Keyword.UNSAFE_EVAL);e&&!t&&(m=null)}if(m||d){let a="",r="";m&&(a=m.hostname,r=" JSONP endpoints"),d&&(a=d.hostname,r+=""===r.trim()?"":" and",r+=" Angular libraries"),t.push(new l.Finding(l.Type.SCRIPT_ALLOWLIST_BYPASS,a+" is known to host"+r+" which allow to bypass this CSP.",l.Severity.HIGH,n,e))
}else t.push(new l.Finding(l.Type.SCRIPT_ALLOWLIST_BYPASS,"No bypass found; make sure that this URL doesn't serve JSONP replies or Angular libraries.",l.Severity.MEDIUM_MAYBE,n,e))}return t},e.checkFlashObjectAllowlistBypass=function checkFlashObjectAllowlistBypass(e){const t=[],n=e.getEffectiveDirective(c.Directive.OBJECT_SRC),a=e.directives[n]||[],r=e.directives[c.Directive.PLUGIN_TYPES];if(r&&!r.includes("application/x-shockwave-flash"))return[];for(const e of a){if(e===c.Keyword.NONE)return[];const a="//"+u.getSchemeFreeUrl(e),r=u.matchWildcardUrls(a,o.URLS);r?t.push(new l.Finding(l.Type.OBJECT_ALLOWLIST_BYPASS,r.hostname+" is known to host Flash files which allow to bypass this CSP.",l.Severity.HIGH,n,e)):n===c.Directive.OBJECT_SRC&&t.push(new l.Finding(l.Type.OBJECT_ALLOWLIST_BYPASS,"Can you restrict object-src to 'none' only?",l.Severity.MEDIUM_MAYBE,n,e))}return t},e.looksLikeIpAddress=looksLikeIpAddress,e.checkIpSource=function checkIpSource(e){const t=[]
;return u.applyCheckFunktionToDirectives(e,((e,n)=>{for(const a of n){const n=u.getHostname(a);looksLikeIpAddress(n)&&("127.0.0.1"===n?t.push(new l.Finding(l.Type.IP_SOURCE,e+" directive allows localhost as source. Please make sure to remove this in production environments.",l.Severity.INFO,e,a)):t.push(new l.Finding(l.Type.IP_SOURCE,e+" directive has an IP-Address as source: "+n+" (will be ignored by browsers!). ",l.Severity.INFO,e,a)))}})),t},e.checkDeprecatedDirective=function checkDeprecatedDirective(e){const t=[];return c.Directive.REFLECTED_XSS in e.directives&&t.push(new l.Finding(l.Type.DEPRECATED_DIRECTIVE,"reflected-xss is deprecated since CSP2. Please, use the X-XSS-Protection header instead.",l.Severity.INFO,c.Directive.REFLECTED_XSS)),c.Directive.REFERRER in e.directives&&t.push(new l.Finding(l.Type.DEPRECATED_DIRECTIVE,"referrer is deprecated since CSP2. Please, use the Referrer-Policy header instead.",l.Severity.INFO,c.Directive.REFERRER)),
c.Directive.DISOWN_OPENER in e.directives&&t.push(new l.Finding(l.Type.DEPRECATED_DIRECTIVE,"disown-opener is deprecated since CSP3. Please, use the Cross Origin Opener Policy header instead.",l.Severity.INFO,c.Directive.DISOWN_OPENER)),t},e.checkNonceLength=function checkNonceLength(e){const t=new RegExp("^'nonce-(.+)'$"),n=[];return u.applyCheckFunktionToDirectives(e,((e,a)=>{for(const r of a){const a=r.match(t);if(!a)continue;a[1].length<8&&n.push(new l.Finding(l.Type.NONCE_LENGTH,"Nonces should be at least 8 characters long.",l.Severity.MEDIUM,e,r)),s.isNonce(r,!0)||n.push(new l.Finding(l.Type.NONCE_CHARSET,"Nonces should only use the base64 charset.",l.Severity.INFO,e,r))}})),n},e.checkSrcHttp=function checkSrcHttp(e){const t=[];return u.applyCheckFunktionToDirectives(e,((e,n)=>{for(const a of n){const n=e===c.Directive.REPORT_URI?"Use HTTPS to send violation reports securely.":"Allow only resources downloaded over HTTPS."
;a.startsWith("http://")&&t.push(new l.Finding(l.Type.SRC_HTTP,n,l.Severity.MEDIUM,e,a))}})),t},e.checkHasConfiguredReporting=function checkHasConfiguredReporting(e){return(e.directives[c.Directive.REPORT_URI]||[]).length>0?[]:(e.directives[c.Directive.REPORT_TO]||[]).length>0?[new l.Finding(l.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.",l.Severity.INFO,c.Directive.REPORT_TO)]:[new l.Finding(l.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.",l.Severity.INFO,c.Directive.REPORT_URI)]}}(bp);var Tp={},Sp=globalThis&&globalThis.__createBinding||(Object.create?function(e,t,n,a){void 0===a&&(a=n),Object.defineProperty(e,a,{enumerable:!0,get:function(){return t[n]}})
}:function(e,t,n,a){void 0===a&&(a=n),e[a]=t[n]}),Cp=globalThis&&globalThis.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),_p=globalThis&&globalThis.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Sp(t,e,n);return Cp(t,e),t};Object.defineProperty(Tp,"__esModule",{value:!0}),Tp.checkRequiresTrustedTypesForScripts=Tp.checkAllowlistFallback=Tp.checkUnsafeInlineFallback=Tp.checkStrictDynamicNotStandalone=Tp.checkStrictDynamic=void 0;const Ap=_p(up),kp=up,Fp=dp;Tp.checkStrictDynamic=function checkStrictDynamic(e){const t=e.getEffectiveDirective(Ap.Directive.SCRIPT_SRC),n=e.directives[t]||[]
;return n.some((e=>!e.startsWith("'")))&&!n.includes(kp.Keyword.STRICT_DYNAMIC)?[new Fp.Finding(Fp.Type.STRICT_DYNAMIC,"Host allowlists can frequently be bypassed. Consider using 'strict-dynamic' in combination with CSP nonces or hashes.",Fp.Severity.STRICT_CSP,t)]:[]},Tp.checkStrictDynamicNotStandalone=function checkStrictDynamicNotStandalone(e){const t=e.getEffectiveDirective(Ap.Directive.SCRIPT_SRC);return!(e.directives[t]||[]).includes(kp.Keyword.STRICT_DYNAMIC)||e.policyHasScriptNonces()||e.policyHasScriptHashes()?[]:[new Fp.Finding(Fp.Type.STRICT_DYNAMIC_NOT_STANDALONE,"'strict-dynamic' without a CSP nonce/hash will block all scripts.",Fp.Severity.INFO,t)]},Tp.checkUnsafeInlineFallback=function checkUnsafeInlineFallback(e){if(!e.policyHasScriptNonces()&&!e.policyHasScriptHashes())return[];const t=e.getEffectiveDirective(Ap.Directive.SCRIPT_SRC)
;return(e.directives[t]||[]).includes(kp.Keyword.UNSAFE_INLINE)?[]:[new Fp.Finding(Fp.Type.UNSAFE_INLINE_FALLBACK,"Consider adding 'unsafe-inline' (ignored by browsers supporting nonces/hashes) to be backward compatible with older browsers.",Fp.Severity.STRICT_CSP,t)]},Tp.checkAllowlistFallback=function checkAllowlistFallback(e){const t=e.getEffectiveDirective(Ap.Directive.SCRIPT_SRC),n=e.directives[t]||[];return n.includes(kp.Keyword.STRICT_DYNAMIC)?n.some((e=>["http:","https:","*"].includes(e)||e.includes(".")))?[]:[new Fp.Finding(Fp.Type.ALLOWLIST_FALLBACK,"Consider adding https: and http: url schemes (ignored by browsers supporting 'strict-dynamic') to be backward compatible with older browsers.",Fp.Severity.STRICT_CSP,t)]:[]},Tp.checkRequiresTrustedTypesForScripts=function checkRequiresTrustedTypesForScripts(e){const t=e.getEffectiveDirective(Ap.Directive.REQUIRE_TRUSTED_TYPES_FOR)
;return(e.directives[t]||[]).includes(Ap.TrustedTypesSink.SCRIPT)?[]:[new Fp.Finding(Fp.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.",Fp.Severity.INFO,Ap.Directive.REQUIRE_TRUSTED_TYPES_FOR)]},Object.defineProperty(cp,"__esModule",{value:!0});var Rp=cp.evaluateForSyntaxErrors=Pp=cp.evaluateForWarnings=Mp=cp.evaluateForFailure=void 0;const xp=lp,Ip=bp,Np=Tp,Lp=up;function arrayContains(e,t){return e.some((e=>e.equals(t)))}function atLeastOnePasses(e,t){const n=[];for(const a of e)n.push(t(a));return function setIntersection(e){const t=[];if(0===e.length)return t;const n=e[0];for(const a of n)e.every((e=>arrayContains(e,a)))&&t.push(a);return t}(n)}function atLeastOneFails(e,t){const n=[];for(const a of e)n.push(t(a));return function setUnion(e){const t=[];for(const n of e)for(const e of n)arrayContains(t,e)||t.push(e);return t}(n)
}var Mp=cp.evaluateForFailure=function evaluateForFailure(e){const t=[...atLeastOnePasses(e,Ip.checkMissingScriptSrcDirective),...atLeastOnePasses(e,Ip.checkMissingObjectSrcDirective),...Ip.checkMultipleMissingBaseUriDirective(e)],n=e.map((e=>e.getEffectiveCsp(Lp.Version.CSP3))),a=n.filter((e=>{const t=e.getEffectiveDirective(Lp.Directive.SCRIPT_SRC);return e.directives[t]}));return[...t,...[...atLeastOnePasses(a,Np.checkStrictDynamic),...atLeastOnePasses(a,Ip.checkScriptUnsafeInline),...atLeastOnePasses(n,Ip.checkWildcards),...atLeastOnePasses(n,Ip.checkPlainUrlSchemes)]]};var Pp=cp.evaluateForWarnings=function evaluateForWarnings(e){return[...atLeastOneFails(e,Np.checkUnsafeInlineFallback),...atLeastOneFails(e,Np.checkAllowlistFallback)]};Rp=cp.evaluateForSyntaxErrors=function evaluateForSyntaxErrors(e){const t=[];for(const n of e){
const e=[...Ip.checkNonceLength(n),...xp.checkUnknownDirective(n),...Ip.checkDeprecatedDirective(n),...xp.checkMissingSemicolon(n),...xp.checkInvalidKeyword(n)];t.push(e)}return t};var Op={},Bp=globalThis&&globalThis.__createBinding||(Object.create?function(e,t,n,a){void 0===a&&(a=n),Object.defineProperty(e,a,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,a){void 0===a&&(a=n),e[a]=t[n]}),Up=globalThis&&globalThis.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),jp=globalThis&&globalThis.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Bp(t,e,n);return Up(t,e),t};Object.defineProperty(Op,"__esModule",{value:!0}),Op.TEST_ONLY=qp=Op.CspParser=void 0;const zp=jp(up);var qp=Op.CspParser=class CspParser{constructor(e){this.csp=new zp.Csp,this.parse(e)}parse(e){this.csp=new zp.Csp
;const t=e.split(";");for(let e=0;e<t.length;e++){const n=t[e].trim().match(/\S+/g);if(Array.isArray(n)){const e=n[0].toLowerCase();if(e in this.csp.directives)continue;zp.isDirective(e);const t=[];for(let e,a=1;e=n[a];a++)e=normalizeDirectiveValue(e),t.includes(e)||t.push(e);this.csp.directives[e]=t}}return this.csp}};function normalizeDirectiveValue(e){const t=(e=e.trim()).toLowerCase();return zp.isKeyword(t)||zp.isUrlScheme(e)?t:e}Op.TEST_ONLY={normalizeDirectiveValue};const $p={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 object-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 configures 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."
},Vp=createIcuMessageFn("core/lib/csp-evaluator.js",$p),Wp={[dp.Type.MISSING_SEMICOLON]:$p.missingSemicolon,[dp.Type.UNKNOWN_DIRECTIVE]:Vp($p.unknownDirective),[dp.Type.INVALID_KEYWORD]:$p.unknownKeyword,[dp.Type.MISSING_DIRECTIVES]:{[up.Directive.BASE_URI]:Vp($p.missingBaseUri),[up.Directive.SCRIPT_SRC]:Vp($p.missingScriptSrc),[up.Directive.OBJECT_SRC]:Vp($p.missingObjectSrc)},[dp.Type.SCRIPT_UNSAFE_INLINE]:Vp($p.unsafeInline),[dp.Type.PLAIN_WILDCARD]:$p.plainWildcards,[dp.Type.PLAIN_URL_SCHEMES]:$p.plainUrlScheme,[dp.Type.NONCE_LENGTH]:Vp($p.nonceLength),[dp.Type.NONCE_CHARSET]:Vp($p.nonceCharset),[dp.Type.DEPRECATED_DIRECTIVE]:{[up.Directive.REFLECTED_XSS]:Vp($p.deprecatedReflectedXSS),[up.Directive.REFERRER]:Vp($p.deprecatedReferrer),[up.Directive.DISOWN_OPENER]:Vp($p.deprecatedDisownOpener)},[dp.Type.STRICT_DYNAMIC]:Vp($p.strictDynamic),[dp.Type.UNSAFE_INLINE_FALLBACK]:Vp($p.unsafeInlineFallback),[dp.Type.ALLOWLIST_FALLBACK]:Vp($p.allowlistFallback),
[dp.Type.REPORTING_DESTINATION_MISSING]:Vp($p.reportingDestinationMissing),[dp.Type.REPORT_TO_ONLY]:Vp($p.reportToOnly)};function getTranslatedDescription(e){let t=Wp[e.type];return t?isIcuMessage(t)?t:"string"==typeof t?Vp(t,{keyword:e.value||""}):(t=t[e.directive],t||(Log.warn("CSP Evaluator",`No translation found for description: ${e.description}`),e.description)):(Log.warn("CSP Evaluator",`No translation found for description: ${e.description}`),e.description)}function parseCsp(e){return new qp(e).csp}function evaluateRawCspsForXss(e){const t=e.map(parseCsp);return{bypasses:Mp(t),warnings:Pp(t),syntax:Rp(t)}}const Hp={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"},Gp=createIcuMessageFn("core/audits/csp-xss.js",Hp);var Yp=Object.freeze({__proto__:null,default:class CspXss extends Audit{static get meta(){return{id:"csp-xss",scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,title:Gp(Hp.title),description:Gp(Hp.description),requiredArtifacts:["devtoolsLogs","MetaElements","URL"]}}static async getRawCsps(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=await sc.request({devtoolsLog:n,URL:e.URL},t),r=e.MetaElements.filter((e=>e.httpEquiv&&"content-security-policy"===e.httpEquiv.toLowerCase())).flatMap((e=>(e.content||"").split(","))).filter((e=>e.replace(/\s/g,"")));return{
cspHeaders:a.responseHeaders.filter((e=>"content-security-policy"===e.name.toLowerCase())).flatMap((e=>e.value.split(","))).filter((e=>e.replace(/\s/g,""))),cspMetaTags:r}}static findingToTableItem(e,t){return{directive:e.directive,description:getTranslatedDescription(e),severity:t}}static constructSyntaxResults(e,t){const n=[];for(let a=0;a<e.length;++a){const r=e[a].map((e=>this.findingToTableItem(e)));r.length&&n.push({severity:Gp(Hp.itemSeveritySyntax),description:{type:"code",value:t[a]},subItems:{type:"subitems",items:r}})}return n}static constructResults(e,t){const n=[...e,...t];if(!n.length)return{score:0,results:[{severity:Gp(Dr.itemSeverityHigh),description:Gp(Hp.noCsp),directive:void 0}]}
;const{bypasses:a,warnings:r,syntax:o}=evaluateRawCspsForXss(n),i=[...this.constructSyntaxResults(o,n),...a.map((e=>this.findingToTableItem(e,Gp(Dr.itemSeverityHigh)))),...r.map((e=>this.findingToTableItem(e,Gp(Dr.itemSeverityMedium))))],s=evaluateRawCspsForXss(e).bypasses.length>0||0===e.length;return t.length>0&&s&&i.push({severity:Gp(Dr.itemSeverityMedium),description:Gp(Hp.metaTagMessage),directive:void 0}),{score:a.length?0:1,results:i}}static async audit(e,t){const{cspHeaders:n,cspMetaTags:a}=await this.getRawCsps(e,t),{score:r,results:o}=this.constructResults(n,a),i=[{key:"description",valueType:"text",subItemsHeading:{key:"description"},label:Gp(Dr.columnDescription)},{key:"directive",valueType:"code",subItemsHeading:{key:"directive"},label:Gp(Hp.columnDirective)},{key:"severity",valueType:"text",subItemsHeading:{key:"severity"},label:Gp(Hp.columnSeverity)}],s=Audit.makeTableDetails(i,o);return{score:r,notApplicable:!o.length,details:s}}},UIStrings:Hp});const Kp={
feature:"Check the feature status page for more details.",milestone:"This change will go into effect with milestone {milestone}.",title:"Deprecated Feature Used",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`.",crossOriginWindowApi:"Triggering {PH1} 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.",deprecationExample:"This is an example of a translated deprecation issue message.",
documentDomainSettingWithoutOriginAgentClusterHeader:"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.",eventPath:"`Event.path` is deprecated and will be removed. Please use `Event.composedPath()` 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-insecure-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:"The website requested a subresource from a network that it could only access because of its users' privileged network position. These requests expose non-public devices and servers to the internet, increasing the risk of a cross-site request forgery (CSRF) attack, and/or information leakage. To mitigate these risks, Chrome deprecates requests to non-public subresources when initiated from non-secure contexts, and will start blocking them.",localCSSFileExtensionRejected:"CSS cannot be loaded from `file:` URLs unless they end in a `.css` file extension.",mediaSourceAbortRemove:"Using `SourceBuffer.abort()` to abort `remove()`'s asynchronous range removal is deprecated due to specification change. Support will be removed in the future. You should listen to the `updateend` event instead. `abort()` is intended to only abort an asynchronous media append or reset parser state.",
mediaSourceDurationTruncatingBuffered:"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`.",noSysexWebMIDIWithoutPermission:"Web MIDI will ask a permission to use even if the sysex is not specified in the `MIDIOptions`.",notificationInsecureOrigin:"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.",notificationPermissionRequestedIframe:"Permission for the Notification API may no longer be requested from a cross-origin iframe. You should consider requesting permission from a top-level frame or opening a new window instead.",
obsoleteWebRtcCipherSuite:"Your partner is negotiating an obsolete (D)TLS version. Please check with your partner to have this fixed.",openWebDatabaseInsecureContext:"WebSQL in non-secure contexts is deprecated and will be removed soon. Please use Web Storage or Indexed Database.",paymentInstruments:"`paymentManager.instruments` is deprecated. Please use just-in-time install for payment handlers instead.",paymentRequestCSPViolation:"Your `PaymentRequest` call bypassed Content-Security-Policy (CSP) `connect-src` directive. This bypass is deprecated. Please add the payment method identifier from the `PaymentRequest` API (in `supportedMethods` field) to your CSP `connect-src` directive.",persistentQuotaType:"`StorageType.persistent` is deprecated. Please use standardized `navigator.storage` instead.",pictureSourceSrc:"`<source src>` with a `<picture>` parent is invalid and therefore ignored. Please use `<source srcset>` instead.",
vendorSpecificApi:"{PH1} is vendor-specific. Please use the standard {PH2} instead.",prefixedStorageInfo:"`window.webkitStorageInfo` is deprecated. Please use standardized `navigator.storage` instead.",deprecatedWithReplacement:"{PH1} is deprecated. Please use {PH2} 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.",
rtcPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics:"`Complex Plan B SDP` detected. This dialect of the `Session Description Protocol` is no longer supported. Please use `Unified Plan SDP` instead.",rtcPeerConnectionSdpSemanticsPlanB:"`Plan B SDP semantics`, which is used when constructing an `RTCPeerConnection` with `{sdpSemantics:plan-b}`, is a legacy non-standard version of the `Session Description Protocol` that has been permanently deleted from the Web Platform. It is still available when building with `IS_FUCHSIA`, but we intend to delete it as soon as possible. Stop depending on it. See https://crbug.com/1302249 for status.",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/.",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.",
overflowVisibleOnReplacedElement:"Specifying `overflow: visible` on img, video and canvas tags may cause them to produce visual content outside of the element bounds. See https://github.com/WICG/shared-element-transitions/blob/main/debugging_overflow_on_images.md."},Jp=createIcuMessageFn("core/lib/deprecations-strings.js",Kp);const Zp={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,\n =1 {1 warning found}\n other {# warnings found}\n }",columnDeprecate:"Deprecation / Warning",columnLine:"Line"},Xp=createIcuMessageFn("core/audits/deprecations.js",Zp);var Qp=Object.freeze({__proto__:null,default:class Deprecations extends Audit{static get meta(){return{id:"deprecations",title:Xp(Zp.title),failureTitle:Xp(Zp.failureTitle),
description:Xp(Zp.description),requiredArtifacts:["InspectorIssues","SourceMaps","Scripts"]}}static async audit(e,t){const n=await Hd.request(e,t),a=e.InspectorIssues.deprecationIssue.map((e=>{const{scriptId:t,url:a,lineNumber:r,columnNumber:o}=e.sourceCodeLocation,i=n.find((e=>e.script.scriptId===t)),s=function getDescription(e){let t,n=0,a=0;switch(e.type){case"AuthorizationCoveredByWildcard":t=Jp(Kp.authorizationCoveredByWildcard),a=97;break;case"CanRequestURLHTTPContainingNewline":t=Jp(Kp.canRequestURLHTTPContainingNewline),n=5735596811091968;break;case"ChromeLoadTimesConnectionInfo":t=Jp(Kp.chromeLoadTimesConnectionInfo),n=5637885046816768;break;case"ChromeLoadTimesFirstPaintAfterLoadTime":t=Jp(Kp.chromeLoadTimesFirstPaintAfterLoadTime),n=5637885046816768;break;case"ChromeLoadTimesWasAlternateProtocolAvailable":t=Jp(Kp.chromeLoadTimesWasAlternateProtocolAvailable),n=5637885046816768;break;case"CookieWithTruncatingChar":t=Jp(Kp.cookieWithTruncatingChar),a=103;break
;case"CrossOriginAccessBasedOnDocumentDomain":t=Jp(Kp.crossOriginAccessBasedOnDocumentDomain),a=109;break;case"CrossOriginWindowAlert":t=Jp(Kp.crossOriginWindowApi,{PH1:"window.alert"});break;case"CrossOriginWindowConfirm":t=Jp(Kp.crossOriginWindowApi,{PH1:"window.confirm"});break;case"CSSSelectorInternalMediaControlsOverlayCastButton":t=Jp(Kp.cssSelectorInternalMediaControlsOverlayCastButton),n=5714245488476160;break;case"DeprecationExample":t=Jp(Kp.deprecationExample),n=5684289032159232,a=100;break;case"DocumentDomainSettingWithoutOriginAgentClusterHeader":t=Jp(Kp.documentDomainSettingWithoutOriginAgentClusterHeader),a=109;break;case"EventPath":t=Jp(Kp.eventPath),n=5726124632965120,a=109;break;case"ExpectCTHeader":t=Jp(Kp.expectCTHeader),n=6244547273687040,a=107;break;case"GeolocationInsecureOrigin":t=Jp(Kp.geolocationInsecureOrigin);break;case"GeolocationInsecureOriginDeprecatedNotRemoved":t=Jp(Kp.geolocationInsecureOriginDeprecatedNotRemoved);break;case"GetUserMediaInsecureOrigin":
t=Jp(Kp.getUserMediaInsecureOrigin);break;case"HostCandidateAttributeGetter":t=Jp(Kp.hostCandidateAttributeGetter);break;case"IdentityInCanMakePaymentEvent":t=Jp(Kp.identityInCanMakePaymentEvent),n=5190978431352832;break;case"InsecurePrivateNetworkSubresourceRequest":t=Jp(Kp.insecurePrivateNetworkSubresourceRequest),n=5436853517811712,a=92;break;case"LocalCSSFileExtensionRejected":t=Jp(Kp.localCSSFileExtensionRejected),a=64;break;case"MediaSourceAbortRemove":t=Jp(Kp.mediaSourceAbortRemove),n=6107495151960064;break;case"MediaSourceDurationTruncatingBuffered":t=Jp(Kp.mediaSourceDurationTruncatingBuffered),n=6107495151960064;break;case"NoSysexWebMIDIWithoutPermission":t=Jp(Kp.noSysexWebMIDIWithoutPermission),n=5138066234671104,a=82;break;case"NotificationInsecureOrigin":t=Jp(Kp.notificationInsecureOrigin);break;case"NotificationPermissionRequestedIframe":t=Jp(Kp.notificationPermissionRequestedIframe),n=6451284559265792;break;case"ObsoleteWebRtcCipherSuite":
t=Jp(Kp.obsoleteWebRtcCipherSuite),a=81;break;case"OpenWebDatabaseInsecureContext":t=Jp(Kp.openWebDatabaseInsecureContext),n=5175124599767040,a=105;break;case"PaymentInstruments":t=Jp(Kp.paymentInstruments),n=5099285054488576;break;case"PaymentRequestCSPViolation":t=Jp(Kp.paymentRequestCSPViolation),n=6286595631087616;break;case"PersistentQuotaType":t=Jp(Kp.persistentQuotaType),n=5176235376246784,a=106;break;case"PictureSourceSrc":t=Jp(Kp.pictureSourceSrc);break;case"PrefixedCancelAnimationFrame":t=Jp(Kp.vendorSpecificApi,{PH1:"webkitCancelAnimationFrame",PH2:"cancelAnimationFrame"});break;case"PrefixedRequestAnimationFrame":t=Jp(Kp.vendorSpecificApi,{PH1:"webkitRequestAnimationFrame",PH2:"requestAnimationFrame"});break;case"PrefixedStorageInfo":t=Jp(Kp.prefixedStorageInfo);break;case"PrefixedVideoDisplayingFullscreen":t=Jp(Kp.deprecatedWithReplacement,{PH1:"HTMLVideoElement.webkitDisplayingFullscreen",PH2:"Document.fullscreenElement"});break;case"PrefixedVideoEnterFullScreen":
t=Jp(Kp.deprecatedWithReplacement,{PH1:"HTMLVideoElement.webkitEnterFullScreen()",PH2:"Element.requestFullscreen()"});break;case"PrefixedVideoEnterFullscreen":t=Jp(Kp.deprecatedWithReplacement,{PH1:"HTMLVideoElement.webkitEnterFullscreen()",PH2:"Element.requestFullscreen()"});break;case"PrefixedVideoExitFullScreen":t=Jp(Kp.deprecatedWithReplacement,{PH1:"HTMLVideoElement.webkitExitFullScreen()",PH2:"Document.exitFullscreen()"});break;case"PrefixedVideoExitFullscreen":t=Jp(Kp.deprecatedWithReplacement,{PH1:"HTMLVideoElement.webkitExitFullscreen()",PH2:"Document.exitFullscreen()"});break;case"PrefixedVideoSupportsFullscreen":t=Jp(Kp.deprecatedWithReplacement,{PH1:"HTMLVideoElement.webkitSupportsFullscreen",PH2:"Document.fullscreenEnabled"});break;case"RangeExpand":t=Jp(Kp.deprecatedWithReplacement,{PH1:"Range.expand()",PH2:"Selection.modify()"});break;case"RequestedSubresourceWithEmbeddedCredentials":t=Jp(Kp.requestedSubresourceWithEmbeddedCredentials),n=5669008342777856;break
;case"OverflowVisibleOnReplacedElement":t=Jp(Kp.overflowVisibleOnReplacedElement),n=5137515594383360,a=108;break;case"RTCConstraintEnableDtlsSrtpFalse":t=Jp(Kp.rtcConstraintEnableDtlsSrtpFalse),a=97;break;case"RTCConstraintEnableDtlsSrtpTrue":t=Jp(Kp.rtcConstraintEnableDtlsSrtpTrue),a=97;break;case"RTCPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics":t=Jp(Kp.rtcPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics),a=72;break;case"RTCPeerConnectionSdpSemanticsPlanB":t=Jp(Kp.rtcPeerConnectionSdpSemanticsPlanB),n=5823036655665152,a=93;break;case"RtcpMuxPolicyNegotiate":t=Jp(Kp.rtcpMuxPolicyNegotiate),n=5654810086866944,a=62;break;case"SharedArrayBufferConstructedWithoutIsolation":t=Jp(Kp.sharedArrayBufferConstructedWithoutIsolation),a=106;break;case"TextToSpeech_DisallowedByAutoplay":t=Jp(Kp.textToSpeech_DisallowedByAutoplay),n=5687444770914304,a=71;break;case"V8SharedArrayBufferConstructedInExtensionWithoutIsolation":
t=Jp(Kp.v8SharedArrayBufferConstructedInExtensionWithoutIsolation),a=96;break;case"XHRJSONEncodingDetection":t=Jp(Kp.xhrJSONEncodingDetection),a=93;break;case"XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload":t=Jp(Kp.xmlHttpRequestSynchronousInNonWorkerOutsideBeforeUnload);break;case"XRSupportsSession":t=Jp(Kp.xrSupportsSession),a=80}const r=[];return 0!==n&&r.push({link:`https://chromestatus.com/feature/${n}`,linkTitle:Jp(Kp.feature)}),0!==a&&r.push({link:"https://chromiumdash.appspot.com/schedule",linkTitle:Jp(Kp.milestone,{milestone:a})}),{file:"deprecation.md",substitutions:new Map([["PLACEHOLDER_title",Jp(Kp.title)],["PLACEHOLDER_message",t]]),links:r,message:t}}(e);let c;s.links.length&&(c={type:"subitems",items:s.links.map((e=>({type:"link",url:e.link,text:e.linkTitle})))});const l=e.message;return{value:s.message||l||e.type,source:Audit.makeSourceLocation(a,r,o-1,i),subItems:c}})),r=[{key:"value",valueType:"text",label:Xp(Zp.columnDeprecate)},{key:"source",
valueType:"source-location",label:Xp(Dr.columnSource)}],o=Audit.makeTableDetails(r,a);let i;return a.length>0&&(i=Xp(Zp.displayValue,{itemCount:a.length})),{score:Number(0===a.length),displayValue:i,details:o}}},UIStrings:Zp});var eg=Object.freeze({__proto__:null,default:class Diagnostics extends Audit{static get meta(){return{id:"diagnostics",scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,title:"Diagnostics",description:"Collection of useful page vitals.",supportedModes:["navigation"],requiredArtifacts:["URL","traces","devtoolsLogs"]}}static async audit(e,t){const n=e.traces[Audit.DEFAULT_PASS],a=e.devtoolsLogs[Audit.DEFAULT_PASS],r=await Rd.request(n,t),o=await go.request(a,t),i=await Vo.request(a,t),s=await sc.request({devtoolsLog:a,URL:e.URL},t),c=r.filter((e=>!e.parent)),l=s.transferSize,u=o.reduce(((e,t)=>e+(t.transferSize||0)),0),d=c.reduce(((e,t)=>e+(t.duration||0)),0),m=Math.max(...i.additionalRttByOrigin.values())+i.rtt,p=Math.max(...i.serverResponseTimeByOrigin.values())
;return{score:1,details:{type:"debugdata",items:[{numRequests:o.length,numScripts:o.filter((e=>"Script"===e.resourceType)).length,numStylesheets:o.filter((e=>"Stylesheet"===e.resourceType)).length,numFonts:o.filter((e=>"Font"===e.resourceType)).length,numTasks:c.length,numTasksOver10ms:c.filter((e=>e.duration>10)).length,numTasksOver25ms:c.filter((e=>e.duration>25)).length,numTasksOver50ms:c.filter((e=>e.duration>50)).length,numTasksOver100ms:c.filter((e=>e.duration>100)).length,numTasksOver500ms:c.filter((e=>e.duration>500)).length,rtt:i.rtt,throughput:i.throughput,maxRtt:m,maxServerLatency:p,totalByteWeight:u,totalTaskTime:d,mainDocumentTransferSize:l}]}}}}});const tg={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/)."},ng=createIcuMessageFn("core/audits/dobetterweb/charset.js",tg),ag=/^[a-zA-Z0-9-_:.()]{2,}$/,rg=/<meta[^>]+charset[^<]+>/i,og=/charset\s*=\s*[a-zA-Z0-9-_:.()]{2,}/i;var ig=Object.freeze({__proto__:null,default:class CharsetDefined extends Audit{static get meta(){return{id:"charset",title:ng(tg.title),failureTitle:ng(tg.failureTitle),description:ng(tg.description),requiredArtifacts:["MainDocumentContent","URL","devtoolsLogs","MetaElements"]}}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=await sc.request({devtoolsLog:n,URL:e.URL},t);let r=!1;if(a.responseHeaders){const e=a.responseHeaders.find((e=>"content-type"===e.name.toLowerCase()));e&&(r=og.test(e.value))}
return r=r||65279===e.MainDocumentContent.charCodeAt(0),rg.test(e.MainDocumentContent.slice(0,1024))&&(r=r||e.MetaElements.some((e=>e.charset&&ag.test(e.charset)||"content-type"===e.httpEquiv&&e.content&&og.test(e.content)))),{score:Number(r)}}},UIStrings:tg,CHARSET_HTML_REGEX:rg,CHARSET_HTTP_REGEX:og,IANA_REGEX:ag});const sg={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`"},cg=createIcuMessageFn("core/audits/dobetterweb/doctype.js",sg);var lg=Object.freeze({__proto__:null,default:class Doctype extends Audit{static get meta(){return{id:"doctype",title:cg(sg.title),failureTitle:cg(sg.failureTitle),description:cg(sg.description),requiredArtifacts:["Doctype"],__internalOptionalArtifacts:["InspectorIssues"]}}static audit(e){if(!e.Doctype)return{score:0,explanation:cg(sg.explanationNoDoctype)};const t=e.Doctype.name,n=e.Doctype.publicId,a=e.Doctype.systemId,r=e.Doctype.documentCompatMode,o=(e.InspectorIssues?.quirksModeIssue||[]).some((e=>e.isLimitedQuirksMode));return"CSS1Compat"!==r||o?o?{score:0,explanation:cg(sg.explanationLimitedQuirks)}:""!==n?{score:0,explanation:cg(sg.explanationPublicId)}:""!==a?{score:0,explanation:cg(sg.explanationSystemId)}:"html"!==t?{score:0,explanation:cg(sg.explanationBadDoctype)}:{score:0,explanation:cg(sg.explanationWrongDoctype)}:{score:1}}},UIStrings:sg})
;const ug={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,\n =1 {1 element}\n other {# elements}\n }",statisticDOMElements:"Total DOM Elements",statisticDOMDepth:"Maximum DOM Depth",statisticDOMWidth:"Maximum Child Elements"},dg=createIcuMessageFn("core/audits/dobetterweb/dom-size.js",ug);var mg=Object.freeze({__proto__:null,default:class DOMSize extends Audit{static get meta(){return{id:"dom-size",title:dg(ug.title),failureTitle:dg(ug.failureTitle),
description:dg(ug.description),scoreDisplayMode:Audit.SCORING_MODES.NUMERIC,requiredArtifacts:["DOMStats"]}}static get defaultOptions(){return{p10:818,median:1400}}static audit(e,t){const n=e.DOMStats,a=Audit.computeLogNormalScore({p10:t.options.p10,median:t.options.median},n.totalBodyElements),r=[{key:"statistic",valueType:"text",label:dg(ug.columnStatistic)},{key:"node",valueType:"node",label:dg(Dr.columnElement)},{key:"value",valueType:"numeric",label:dg(ug.columnValue)}],o=[{statistic:dg(ug.statisticDOMElements),value:{type:"numeric",granularity:1,value:n.totalBodyElements}},{node:Audit.makeNodeItem(n.depth),statistic:dg(ug.statisticDOMDepth),value:{type:"numeric",granularity:1,value:n.depth.max}},{node:Audit.makeNodeItem(n.width),statistic:dg(ug.statisticDOMWidth),value:{type:"numeric",granularity:1,value:n.width.max}}];return{score:a,numericValue:n.totalBodyElements,numericUnit:"element",displayValue:dg(ug.displayValue,{itemCount:n.totalBodyElements}),
details:Audit.makeTableDetails(r,o)}}},UIStrings:ug});var pg=class ViolationAudit extends Audit{static async getViolationResults(e,t,n){const a=await Hd.request(e,t);const r=new Set;return e.ConsoleMessages.filter((e=>e.url&&"violation"===e.source&&n.test(e.text))).map((e=>{const t=a.find((t=>t.script.scriptId===e.scriptId));return Audit.makeSourceLocationFromConsoleMessage(e,t)})).filter((function filterUndefined(e){return void 0!==e})).filter((e=>{const t=`${e.url}!${e.line}!${e.column}`;return!r.has(t)&&(r.add(t),!0)})).map((e=>({source:e})))}};const gg={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/)."
},hg=createIcuMessageFn("core/audits/dobetterweb/geolocation-on-start.js",gg);var fg=Object.freeze({__proto__:null,default:class GeolocationOnStart extends pg{static get meta(){return{id:"geolocation-on-start",title:hg(gg.title),failureTitle:hg(gg.failureTitle),description:hg(gg.description),supportedModes:["navigation"],requiredArtifacts:["ConsoleMessages","SourceMaps","Scripts"]}}static async audit(e,t){const n=await pg.getViolationResults(e,t,/geolocation/),a=[{key:"source",valueType:"source-location",label:hg(Dr.columnSource)}],r=pg.makeTableDetails(a,n);return{score:Number(0===n.length),details:r}}},UIStrings:gg});const yg={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"},bg=createIcuMessageFn("core/audits/dobetterweb/inspector-issues.js",yg);var vg=Object.freeze({__proto__:null,default:class IssuesPanelEntries extends Audit{static get meta(){return{id:"inspector-issues",title:bg(yg.title),failureTitle:bg(yg.failureTitle),description:bg(yg.description),requiredArtifacts:["InspectorIssues"]}}static getMixedContentRow(e){const t=new Set;for(const n of e){const e=n.request?.url||n.mainResourceURL;t.add(e)}return{issueType:"Mixed content",subItems:{type:"subitems",items:Array.from(t).map((e=>({url:e})))}}}static getCookieRow(e){const t=new Set
;for(const n of e){const e=n.request?.url||n.cookieUrl;e&&t.add(e)}return{issueType:"Cookie",subItems:{type:"subitems",items:Array.from(t).map((e=>({url:e})))}}}static getBlockedByResponseRow(e){const t=new Set;for(const n of e){const e=n.request?.url;e&&t.add(e)}return{issueType:bg(yg.issueTypeBlockedByResponse),subItems:{type:"subitems",items:Array.from(t).map((e=>({url:e})))}}}static getContentSecurityPolicyRow(e){const t=new Set;for(const n of e){const e=n.blockedURL;e&&t.add(e)}return{issueType:"Content security policy",subItems:{type:"subitems",items:Array.from(t).map((e=>({url:e})))}}}static audit(e){const t=[{key:"issueType",valueType:"text",subItemsHeading:{key:"url",valueType:"url"},label:bg(yg.columnIssueType)}],n=e.InspectorIssues,a=[];n.mixedContentIssue.length&&a.push(this.getMixedContentRow(n.mixedContentIssue)),n.cookieIssue.length&&a.push(this.getCookieRow(n.cookieIssue)),n.blockedByResponseIssue.length&&a.push(this.getBlockedByResponseRow(n.blockedByResponseIssue)),
n.heavyAdIssue.length&&a.push({issueType:bg(yg.issueTypeHeavyAds)});const r=n.contentSecurityPolicyIssue.filter((e=>"kTrustedTypesSinkViolation"!==e.contentSecurityPolicyViolationType&&"kTrustedTypesPolicyViolation"!==e.contentSecurityPolicyViolationType));return r.length&&a.push(this.getContentSecurityPolicyRow(r)),{score:a.length>0?0:1,details:Audit.makeTableDetails(t,a)}}},UIStrings:yg});const wg={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"},Dg=createIcuMessageFn("core/audits/dobetterweb/js-libraries.js",wg);var Eg=Object.freeze({__proto__:null,default:class JsLibrariesAudit extends Audit{static get meta(){return{id:"js-libraries",title:Dg(wg.title),scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,description:Dg(wg.description),
requiredArtifacts:["Stacks"]}}static audit(e){const t=e.Stacks.filter((e=>"js"===e.detector)).filter((e=>!e.id.endsWith("-fast"))).map((e=>({name:e.name,version:e.version,npm:e.npm}))),n=[{key:"name",valueType:"text",label:Dg(Dr.columnName)},{key:"version",valueType:"text",label:Dg(wg.columnVersion)}],a=Audit.makeTableDetails(n,t),r={type:"debugdata",stacks:e.Stacks.map((e=>({id:e.id,version:e.version})))};return t.length?{score:1,details:{...a,debugData:r}}:{score:null,notApplicable:!0}}},UIStrings:wg});const Tg={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/)."},Sg=createIcuMessageFn("core/audits/dobetterweb/no-document-write.js",Tg);var Cg=Object.freeze({__proto__:null,
default:class NoDocWriteAudit extends pg{static get meta(){return{id:"no-document-write",title:Sg(Tg.title),failureTitle:Sg(Tg.failureTitle),description:Sg(Tg.description),requiredArtifacts:["ConsoleMessages","SourceMaps","Scripts"]}}static async audit(e,t){const n=await pg.getViolationResults(e,t,/document\.write/),a=[{key:"source",valueType:"source-location",label:Sg(Dr.columnSource)}],r=pg.makeTableDetails(a,n);return{score:Number(0===n.length),details:r}}},UIStrings:Tg});const _g={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/)."
},Ag=createIcuMessageFn("core/audits/dobetterweb/notification-on-start.js",_g);var kg=Object.freeze({__proto__:null,default:class NotificationOnStart extends pg{static get meta(){return{id:"notification-on-start",title:Ag(_g.title),failureTitle:Ag(_g.failureTitle),description:Ag(_g.description),supportedModes:["navigation"],requiredArtifacts:["ConsoleMessages","SourceMaps","Scripts"]}}static async audit(e,t){const n=await pg.getViolationResults(e,t,/notification permission/),a=[{key:"source",valueType:"source-location",label:Ag(Dr.columnSource)}],r=pg.makeTableDetails(a,n);return{score:Number(0===n.length),details:r}}},UIStrings:_g});const Fg={title:"Allows users to paste into input fields",failureTitle:"Prevents users from pasting into input fields",description:"Preventing input pasting is a UX anti-pattern, and undermines good security policy. [Learn more about user-friendly input fields](https://developer.chrome.com/docs/lighthouse/best-practices/paste-preventing-inputs/)."
},Rg=createIcuMessageFn("core/audits/dobetterweb/paste-preventing-inputs.js",Fg);var xg=Object.freeze({__proto__:null,default:class PastePreventingInputsAudit extends Audit{static get meta(){return{id:"paste-preventing-inputs",title:Rg(Fg.title),failureTitle:Rg(Fg.failureTitle),description:Rg(Fg.description),requiredArtifacts:["Inputs"]}}static audit(e){const t=e.Inputs.inputs.filter((e=>e.preventsPaste)),n=[];t.forEach((e=>{n.push({node:Audit.makeNodeItem(e.node),type:e.type})}));const a=[{key:"node",valueType:"node",label:Rg(Dr.columnFailingElem)}];return{score:Number(0===t.length),details:Audit.makeTableDetails(a,n)}}},UIStrings:Fg});const Ig={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,\n =1 {1 request not served via HTTP/2}\n other {# requests not served via HTTP/2}\n }",columnProtocol:"Protocol"},Ng=createIcuMessageFn("core/audits/dobetterweb/uses-http2.js",Ig),Lg=new Set([NetworkRequest.TYPES.Document,NetworkRequest.TYPES.Font,NetworkRequest.TYPES.Image,NetworkRequest.TYPES.Stylesheet,NetworkRequest.TYPES.Script,NetworkRequest.TYPES.Media]);class UsesHTTP2Audit extends Audit{static get meta(){return{id:"uses-http2",title:Ng(Ig.title),description:Ng(Ig.description),scoreDisplayMode:Audit.SCORING_MODES.NUMERIC,supportedModes:["timespan","navigation"],requiredArtifacts:["URL","devtoolsLogs","traces","GatherContext"]}}static computeWasteWithTTIGraph(e,t,n){const a=new Set(e.map((e=>e.url))),r=n.simulate(t,{label:"uses-http2-before",flexibleOrdering:true}),o=new Map;t.traverse((e=>{"network"===e.type&&a.has(e.record.url)&&(o.set(e.record.requestId,e.record.protocol),e.record.protocol="h2")}));const i=n.simulate(t,{
label:"uses-http2-after",flexibleOrdering:true});t.traverse((e=>{if("network"!==e.type)return;const t=o.get(e.record.requestId);void 0!==t&&(e.record.protocol=t)}));const s=r.timeInMs-i.timeInMs,c=Bd.getLastLongTaskEndTime(r.nodeTimings)-Bd.getLastLongTaskEndTime(i.nodeTimings),l=Math.max(c,s);return 10*Math.round(Math.max(l,0)/10)}static isStaticAsset(e,t){if(!Lg.has(e.resourceType))return!1;if(e.resourceSize<100){const n=t.entityByUrl.get(e.url);if(n&&!n.isUnrecognized)return!1}return!0}static determineNonHttp2Resources(e,t){const n=[],a=new Set,r=new Map;for(const n of e){if(!UsesHTTP2Audit.isStaticAsset(n,t))continue;if(UrlUtils.isLikeLocalhost(n.parsedURL.host))continue;const e=r.get(n.parsedURL.securityOrigin)||[];e.push(n),r.set(n.parsedURL.securityOrigin,e)}for(const t of e){if(a.has(t.url))continue;if(t.fetchedViaServiceWorker)continue;if(!/HTTP\/[01][.\d]?/i.test(t.protocol))continue;(r.get(t.parsedURL.securityOrigin)||[]).length<6||(a.add(t.url),n.push({protocol:t.protocol,
url:t.url}))}return n}static async audit(e,t){const n=e.traces[Audit.DEFAULT_PASS],a=e.devtoolsLogs[Audit.DEFAULT_PASS],r=e.URL,o=await go.request(a,t),i=await li.request({URL:r,devtoolsLog:a},t),s=UsesHTTP2Audit.determineNonHttp2Resources(o,i);let c;if(s.length>0&&(c=Ng(Ig.displayValue,{itemCount:s.length})),"timespan"===e.GatherContext.gatherMode){const e=[{key:"url",valueType:"url",label:Ng(Dr.columnURL)},{key:"protocol",valueType:"text",label:Ng(Ig.columnProtocol)}],t=Audit.makeTableDetails(e,s);return{displayValue:c,score:s.length?0:1,details:t}}const l={devtoolsLog:a,settings:t?.settings||{}},u=await mo.request({trace:n,devtoolsLog:a,URL:r},t),d=await Wo.request(l,t),m=UsesHTTP2Audit.computeWasteWithTTIGraph(s,u,d),p=[{key:"url",valueType:"url",label:Ng(Dr.columnURL)},{key:"protocol",valueType:"text",label:Ng(Ig.columnProtocol)}],h=Audit.makeOpportunityDetails(p,s,{overallSavingsMs:m});return{displayValue:c,numericValue:m,numericUnit:"millisecond",
score:ByteEfficiencyAudit.scoreForWastedMs(m),details:h}}}var Mg=Object.freeze({__proto__:null,default:UsesHTTP2Audit,UIStrings:Ig});const Pg={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/)."},Og=createIcuMessageFn("core/audits/dobetterweb/uses-passive-event-listeners.js",Pg);var Bg=Object.freeze({__proto__:null,default:class PassiveEventsAudit extends pg{static get meta(){return{id:"uses-passive-event-listeners",title:Og(Pg.title),failureTitle:Og(Pg.failureTitle),description:Og(Pg.description),requiredArtifacts:["ConsoleMessages","SourceMaps","Scripts"]}}static async audit(e,t){
const n=await pg.getViolationResults(e,t,/passive event listener/),a=[{key:"source",valueType:"source-location",label:Og(Dr.columnSource)}],r=pg.makeTableDetails(a,n);return{score:Number(0===n.length),details:r}}},UIStrings:Pg});const Ug={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/)"},jg=createIcuMessageFn("core/audits/errors-in-console.js",Ug);class ErrorLogs extends Audit{static get meta(){return{id:"errors-in-console",title:jg(Ug.title),failureTitle:jg(Ug.failureTitle),description:jg(Ug.description),requiredArtifacts:["ConsoleMessages","SourceMaps","Scripts"]}}static get defaultOptions(){return{ignoredPatterns:["ERR_BLOCKED_BY_CLIENT.Inspector"]}
}static filterAccordingToOptions(e,t){const{ignoredPatterns:n,...a}=t,r=Object.keys(a);return r.length&&Log.warn(this.meta.id,"Unrecognized options",r),n?e.filter((({description:e})=>{if(!e)return!0;for(const t of n){if(t instanceof RegExp&&t.test(e))return!1;if("string"==typeof t&&e.includes(t))return!1}return!0})):e}static async audit(e,t){const n=t.options,a=await Hd.request(e,t),r=e.ConsoleMessages.filter((e=>"error"===e.level)).map((e=>{const t=a.find((t=>t.script.scriptId===e.scriptId));return{source:e.source,description:e.text,sourceLocation:Audit.makeSourceLocationFromConsoleMessage(e,t)}})),o=ErrorLogs.filterAccordingToOptions(r,n).sort(((e,t)=>(e.description||"").localeCompare(t.description||""))),i=[{key:"sourceLocation",valueType:"source-location",label:jg(Dr.columnSource)},{key:"description",valueType:"code",label:jg(Dr.columnDescription)}],s=Audit.makeTableDetails(i,o),c=o.length;return{score:Number(0===c),details:s}}}var zg=Object.freeze({__proto__:null,
default:ErrorLogs,UIStrings:Ug});const qg=makeComputedArtifact(class Screenshots{static async compute_(e){return e.traceEvents.filter((e=>"Screenshot"===e.name)).map((e=>({timestamp:e.ts,datauri:`data:image/jpeg;base64,${e.args.snapshot}`})))}},null);var $g=Object.freeze({__proto__:null,default:class FinalScreenshot extends Audit{static get meta(){return{id:"final-screenshot",scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,title:"Final Screenshot",description:"The last screenshot captured of the pageload.",requiredArtifacts:["traces","GatherContext"]}}static async audit(e,t){const n=e.traces[Audit.DEFAULT_PASS],a=await co.request(n,t),r=await qg.request(n,t),{timeOrigin:o}=a.timestamps,i=r[r.length-1];if(!i){if("timespan"===e.GatherContext.gatherMode)return{notApplicable:!0,score:1};throw new LighthouseError(LighthouseError.errors.NO_SCREENSHOTS)}return{score:1,details:{type:"screenshot",timing:Math.round((i.timestamp-o)/1e3),timestamp:i.timestamp,data:i.datauri}}}}})
;const Vg=/^(block|fallback|optional|swap)$/,Wg=/url\((.*?)\)/,Hg=new RegExp(Wg,"g"),Gg={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}.}}"},Yg=createIcuMessageFn("core/audits/font-display.js",Gg);class FontDisplay extends Audit{static get meta(){return{id:"font-display",title:Yg(Gg.title),failureTitle:Yg(Gg.failureTitle),description:Yg(Gg.description),supportedModes:["navigation"],requiredArtifacts:["devtoolsLogs","CSSUsage","URL"]}}
static findFontDisplayDeclarations(e,t){const n=new Set,a=new Set;for(const r of e.CSSUsage.stylesheets){const o=r.content.replace(/(\r|\n)+/g," ").match(/@font-face\s*{(.*?)}/g)||[];for(const i of o){const o=i.match(Hg);if(!o)continue;const s=i.match(/font-display\s*:\s*(\w+)\s*(;|\})/)?.[1]||"",c=t.test(s)?n:a,l=o.map((e=>e.match(Wg)[1].trim())).map((e=>/^('|").*\1$/.test(e)?e.substr(1,e.length-2):e));for(const t of l)try{const n=UrlUtils.isValid(r.header.sourceURL)?r.header.sourceURL:e.URL.finalDisplayedUrl,a=new URL(t,n);c.add(a.href)}catch(e){Qo.captureException(e,{tags:{audit:this.meta.id}})}}}return{passingURLs:n,failingURLs:a}}static getWarningsForFontUrls(e){const t=new Map;for(const n of e){const e=UrlUtils.getOrigin(n);if(!e)continue;const a=t.get(e)||0;t.set(e,a+1)}return[...t].map((([e,t])=>Yg(Gg.undeclaredFontOriginWarning,{fontCountForOrigin:t,fontOrigin:e})))}static async audit(e,t){
const n=e.devtoolsLogs[this.DEFAULT_PASS],a=await go.request(n,t),{passingURLs:r,failingURLs:o}=FontDisplay.findFontDisplayDeclarations(e,Vg),i=[],s=a.filter((e=>"Font"===e.resourceType)).filter((e=>!/^data:/.test(e.url))).filter((e=>!/^blob:/.test(e.url))).filter((e=>!!o.has(e.url)||(r.has(e.url)||i.push(e.url),!1))).map((e=>{const t=Math.min(e.networkEndTime-e.networkRequestTime,3e3);return{url:e.url,wastedMs:t}})),c=[{key:"url",valueType:"url",label:Yg(Dr.columnURL)},{key:"wastedMs",valueType:"ms",label:Yg(Dr.columnWastedMs)}],l=Audit.makeTableDetails(c,s);return{score:Number(0===s.length),details:l,warnings:FontDisplay.getWarningsForFontUrls(i)}}}var Kg=Object.freeze({__proto__:null,default:FontDisplay,UIStrings:Gg});const Jg={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)"},Zg=createIcuMessageFn("core/audits/image-aspect-ratio.js",Jg);class ImageAspectRatio extends Audit{static get meta(){return{id:"image-aspect-ratio",title:Zg(Jg.title),failureTitle:Zg(Jg.failureTitle),description:Zg(Jg.description),requiredArtifacts:["ImageElements"]}}static computeAspectRatios(e){const t=UrlUtils.elideDataURI(e.src),n=e.naturalDimensions.width/e.naturalDimensions.height,a=e.displayedWidth/e.displayedHeight,r=e.displayedWidth/n,o=Math.abs(r-e.displayedHeight)<2;return{url:t,node:Audit.makeNodeItem(e.node),displayedAspectRatio:`${e.displayedWidth} x ${e.displayedHeight}\n (${a.toFixed(2)})`,
actualAspectRatio:`${e.naturalDimensions.width} x ${e.naturalDimensions.height}\n (${n.toFixed(2)})`,doRatiosMatch:o}}static audit(e){const t=e.ImageElements,n=[];t.filter((e=>!e.isCss&&"image/svg+xml"!==UrlUtils.guessMimeType(e.src)&&e.naturalDimensions&&e.naturalDimensions.height>5&&e.naturalDimensions.width>5&&e.displayedWidth&&e.displayedHeight&&"fill"===e.computedStyles.objectFit)).forEach((e=>{const t=e,a=ImageAspectRatio.computeAspectRatios(t);a.doRatiosMatch||n.push(a)}));const a=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:Zg(Dr.columnURL)},{key:"displayedAspectRatio",valueType:"text",label:Zg(Jg.columnDisplayed)},{key:"actualAspectRatio",valueType:"text",label:Zg(Jg.columnActual)}];return{score:Number(0===n.length),details:Audit.makeTableDetails(a,n)}}}var Xg=Object.freeze({__proto__:null,default:ImageAspectRatio,UIStrings:Jg});const Qg={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 to provide responsive images](https://web.dev/serve-responsive-images/).",columnDisplayed:"Displayed size",columnActual:"Actual size",columnExpected:"Expected size"},eh=createIcuMessageFn("core/audits/image-size-responsive.js",Qg);function isCandidate(e){return!(e.displayedWidth<=1||e.displayedHeight<=1)&&(!!(e.naturalDimensions&&e.naturalDimensions.width&&e.naturalDimensions.height)&&("image/svg+xml"!==UrlUtils.guessMimeType(e.src)&&(!e.isCss&&("fill"===e.computedStyles.objectFit&&(!["pixelated","crisp-edges"].includes(e.computedStyles.imageRendering)&&!/ \d+(\.\d+)?x/.test(e.srcset))))))}function imageHasNaturalDimensions(e){return!!e.naturalDimensions}function imageHasRightSize(e,t){const[n,a]=function allowedImageSize(e,t,n){let a=1;(e>64||t>64)&&(a=.75);const r=quantizeDpr(n),o=Math.ceil(a*r*e),i=Math.ceil(a*r*t);return[o,i]
}(e.displayedWidth,e.displayedHeight,t);return e.naturalDimensions.width>=n&&e.naturalDimensions.height>=a}function getResult(e,t){const[n,a]=function expectedImageSize(e,t,n){const a=Math.ceil(quantizeDpr(n)*e),r=Math.ceil(quantizeDpr(n)*t);return[a,r]}(e.displayedWidth,e.displayedHeight,t);return{url:UrlUtils.elideDataURI(e.src),node:Audit.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 ${a}`,expectedPixels:n*a}}function quantizeDpr(e){return e>=2?2:e>=1.5?1.5:1}var th=Object.freeze({__proto__:null,default:class ImageSizeResponsive extends Audit{static get meta(){return{id:"image-size-responsive",title:eh(Qg.title),failureTitle:eh(Qg.failureTitle),description:eh(Qg.description),requiredArtifacts:["ImageElements","ViewportDimensions"]}}static audit(e){
const t=e.ViewportDimensions.devicePixelRatio,n=Array.from(e.ImageElements).filter(isCandidate).filter(imageHasNaturalDimensions).filter((e=>!imageHasRightSize(e,t))).filter((t=>function isVisible(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}(t.clientRect,e.ViewportDimensions))).filter((t=>function isSmallerThanViewport(e,t){return e.bottom-e.top<=t.innerHeight&&e.right-e.left<=t.innerWidth}(t.clientRect,e.ViewportDimensions))).map((e=>getResult(e,t))),a=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:eh(Dr.columnURL)},{key:"displayedSize",valueType:"text",label:eh(Qg.columnDisplayed)},{key:"actualSize",valueType:"text",label:eh(Qg.columnActual)},{key:"expectedSize",valueType:"text",label:eh(Qg.columnExpected)}],r=function sortResultsBySizeDelta(e){return e.sort(((e,t)=>t.expectedPixels-t.actualPixels-(e.expectedPixels-e.actualPixels)))}(function deduplicateResultsByUrl(e){
e.sort(((e,t)=>e.url===t.url?0:e.url<t.url?-1:1));const t=[];for(const n of e){const e=t[t.length-1];e&&e.url===n.url?e.expectedPixels<n.expectedPixels&&(t[t.length-1]=n):t.push(n)}return t}(n));return{score:Number(0===n.length),details:Audit.makeTableDetails(a,r)}}},UIStrings:Qg});function doExist(e){return!(!e||!e.icons)&&0!==e.icons.value.length}function pngSizedAtLeast(e,t){const n=t.icons.value,a=[];return n.filter((e=>{const t=e.value.type.value;if(t)return"image/png"===t;const n=e.value.src.value;return n&&new URL(n).pathname.endsWith(".png")})).forEach((e=>{e.value.sizes.value&&a.push(...e.value.sizes.value)})),a.filter((e=>/\d+x\d+/.test(e))).filter((t=>{const n=t.split(/x/i),a=[parseFloat(n[0]),parseFloat(n[1])];return a[0]>=e&&a[1]>=e&&a[0]===a[1]}))}const nh=["minimal-ui","fullscreen","standalone"];class ManifestValues{static get manifestChecks(){return[{id:"hasStartUrl",failureText:"Manifest does not contain a `start_url`",validate:e=>!!e.start_url.value},{
id:"hasIconsAtLeast144px",failureText:"Manifest does not have a PNG icon of at least 144px",validate:e=>doExist(e)&&pngSizedAtLeast(144,e).length>0},{id:"hasIconsAtLeast512px",failureText:"Manifest does not have a PNG icon of at least 512px",validate:e=>doExist(e)&&pngSizedAtLeast(512,e).length>0},{id:"fetchesIcon",failureText:"Manifest icon failed to be fetched",validate:(e,t)=>{const n=["cannot-download-icon","no-icon-available"];return doExist(e)&&!t.some((e=>n.includes(e.errorId)))}},{id:"hasPWADisplayValue",failureText:"Manifest's `display` value is not one of: "+nh.join(" | "),validate:e=>nh.includes(e.display.value)},{id:"hasBackgroundColor",failureText:"Manifest does not have `background_color`",validate:e=>!!e.background_color.value},{id:"hasThemeColor",failureText:"Manifest does not have `theme_color`",validate:e=>!!e.theme_color.value},{id:"hasShortName",failureText:"Manifest does not have `short_name`",validate:e=>!!e.short_name.value},{id:"shortNameLength",
failureText:"Manifest's `short_name` is too long (>12 characters) to be displayed on a homescreen without truncation",validate:e=>!!e.short_name.value&&e.short_name.value.length<=12},{id:"hasName",failureText:"Manifest does not have `name`",validate:e=>!!e.name.value},{id:"hasMaskableIcon",failureText:"Manifest does not have at least one icon that is maskable",validate:e=>doExist(e)&&function containsMaskableIcon(e){return e.icons.value.some((e=>e.value.purpose?.value&&e.value.purpose.value.includes("maskable")))}(e)}]}static async compute_({WebAppManifest:e,InstallabilityErrors:t}){if(null===e)return{isParseFailure:!0,parseFailureReason:"No manifest was fetched",allChecks:[]};const n=e.value;if(void 0===n)return{isParseFailure:!0,parseFailureReason:"Manifest failed to parse as valid JSON",allChecks:[]};return{isParseFailure:!1,allChecks:ManifestValues.manifestChecks.map((e=>({id:e.id,failureText:e.failureText,passing:e.validate(n,t.errors)})))}}}
const ah=makeComputedArtifact(ManifestValues,["InstallabilityErrors","WebAppManifest"]),rh={title:"Web app manifest and service worker meet the installability requirements",failureTitle:"Web app manifest or service worker do not meet the installability requirements",description:"Service worker is the technology that enables your app to use many Progressive Web App features, such as offline, add to homescreen, and push notifications. With proper service worker and manifest implementations, browsers can proactively prompt users to add your app to their homescreen, which can lead to higher engagement. [Learn more about manifest installability requirements](https://developer.chrome.com/docs/lighthouse/pwa/installable-manifest/).",columnValue:"Failure reason",displayValue:"{itemCount, plural,\n =1 {1 reason}\n other {# reasons}\n }",noErrorId:"Installability error id '{errorId}' is not recognized","not-in-main-frame":"Page is not loaded in the main frame",
"not-from-secure-origin":"Page is not served from a secure origin","no-manifest":"Page has no manifest <link> URL","start-url-not-valid":"Manifest start URL is not valid","manifest-missing-name-or-short-name":"Manifest does not contain a 'name' or 'short_name' field","manifest-display-not-supported":"Manifest 'display' property must be one of 'standalone', 'fullscreen', or 'minimal-ui'","manifest-empty":"Manifest could not be fetched, is empty, or could not be parsed","no-matching-service-worker":"No matching service worker detected. You may need to reload the page, or check that the scope of the service worker for the current page encloses the scope and start URL from the manifest.","manifest-missing-suitable-icon":'Manifest does not contain a suitable icon - PNG, SVG or WebP format of at least {value0} px is required, the sizes attribute must be set, and the purpose attribute, if set, must include "any".',
"no-acceptable-icon":'No supplied icon is at least {value0} px square in PNG, SVG or WebP format, with the purpose attribute unset or set to "any"',"cannot-download-icon":"Could not download a required icon from the manifest","no-icon-available":"Downloaded icon was empty or corrupted","platform-not-supported-on-android":"The specified application platform is not supported on Android","no-id-specified":"No Play store ID provided","ids-do-not-match":"The Play Store app URL and Play Store ID do not match","already-installed":"The app is already installed","url-not-supported-for-webapk":"A URL in the manifest contains a username, password, or port","in-incognito":"Page is loaded in an incognito window","not-offline-capable":"Page does not work offline","no-url-for-service-worker":"Could not check service worker without a 'start_url' field in the manifest","prefer-related-applications":"Manifest specifies prefer_related_applications: true",
"prefer-related-applications-only-beta-stable":"prefer_related_applications is only supported on Chrome Beta and Stable channels on Android.","manifest-display-override-not-supported":"Manifest contains 'display_override' field, and the first supported display mode must be one of 'standalone', 'fullscreen', or 'minimal-ui'","manifest-location-changed":"Manifest URL changed while the manifest was being fetched.","warn-not-offline-capable":"Page does not work offline. The page will not be regarded as installable after Chrome 93, stable release August 2021.","protocol-timeout":"Lighthouse could not determine if there was a service worker. Please try with a newer version of Chrome.","pipeline-restarted":"PWA has been uninstalled and installability checks resetting.","scheme-not-supported-for-webapk":"The manifest URL scheme ({scheme}) is not supported on Android."},oh=createIcuMessageFn("core/audits/installable-manifest.js",rh);class InstallableManifest extends Audit{static get meta(){
return{id:"installable-manifest",title:oh(rh.title),failureTitle:oh(rh.failureTitle),description:oh(rh.description),supportedModes:["navigation"],requiredArtifacts:["WebAppManifest","InstallabilityErrors"]}}static getInstallabilityErrors(e){const t=e.InstallabilityErrors.errors,n=[],a=[],r=/{([^}]+)}/g;for(const o of t){if("in-incognito"===o.errorId)continue;if("warn-not-offline-capable"===o.errorId){a.push(oh(rh[o.errorId]));continue}if("pipeline-restarted"===o.errorId)continue;const t=rh[o.errorId];if("scheme-not-supported-for-webapk"===o.errorId){const a=e.WebAppManifest?.url;if(!a)continue;const r=new URL(a).protocol;n.push(oh(t,{scheme:r}));continue}if(void 0===t){n.push(oh(rh.noErrorId,{errorId:o.errorId}));continue}const i=t.match(r)||[],s=o.errorArguments?.length&&o.errorArguments[0].value;if(t&&o.errorArguments.length!==i.length){
const e=JSON.stringify(o.errorArguments),t=o.errorArguments.length>i.length?`${o.errorId} has unexpected arguments ${e}`:`${o.errorId} does not have the expected number of arguments.`;n.push(t)}else t&&s?n.push(oh(t,{value0:s})):t&&n.push(oh(t))}return{i18nErrors:n,warnings:a}}static async audit(e,t){const{i18nErrors:n,warnings:a}=InstallableManifest.getInstallabilityErrors(e),r=e.WebAppManifest?e.WebAppManifest.url:null,o=[{key:"reason",valueType:"text",label:oh(rh.columnValue)}],i=n.map((e=>({reason:e})));if(!i.length){const n=await ah.request(e,t);n.isParseFailure&&i.push({reason:n.parseFailureReason})}const s={type:"debugdata",manifestUrl:r};return i.length>0?{score:0,warnings:a,numericValue:i.length,numericUnit:"element",displayValue:oh(rh.displayValue,{itemCount:i.length}),details:{...Audit.makeTableDetails(o,i),debugData:s}}:{score:1,warnings:a,details:{...Audit.makeTableDetails(o,i),debugData:s}}}}var ih=Object.freeze({__proto__:null,default:InstallableManifest,UIStrings:rh})
;const sh={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,\n =1 {1 insecure request found}\n other {# insecure requests found}\n }",columnInsecureURL:"Insecure URL",columnResolution:"Request Resolution",allowed:"Allowed",blocked:"Blocked",warning:"Allowed with warning",upgraded:"Automatically upgraded to HTTPS"},ch={
MixedContentAutomaticallyUpgraded:sh.upgraded,MixedContentBlocked:sh.blocked,MixedContentWarning:sh.warning},lh=createIcuMessageFn("core/audits/is-on-https.js",sh);var uh=Object.freeze({__proto__:null,default:class HTTPS extends Audit{static get meta(){return{id:"is-on-https",title:lh(sh.title),failureTitle:lh(sh.failureTitle),description:lh(sh.description),requiredArtifacts:["devtoolsLogs","InspectorIssues"]}}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=(await go.request(n,t)).filter((e=>!NetworkRequest.isSecureRequest(e))).map((e=>UrlUtils.elideDataURI(e.url))),r=Array.from(new Set(a)).map((e=>({url:e,resolution:void 0}))),o=[{key:"url",valueType:"url",label:lh(sh.columnInsecureURL)},{key:"resolution",valueType:"text",label:lh(sh.columnResolution)}];for(const t of e.InspectorIssues.mixedContentIssue){let e=r.find((e=>e.url===t.insecureURL));e||(e={url:t.insecureURL},r.push(e)),e.resolution=ch[t.resolutionStatus]?lh(ch[t.resolutionStatus]):t.resolutionStatus}
for(const e of r)e.resolution||(e.resolution=lh(sh.allowed));let i;return r.length>0&&(i=lh(sh.displayValue,{itemCount:r.length})),{score:Number(0===r.length),displayValue:i,details:Audit.makeTableDetails(o,r)}}},UIStrings:sh});const dh={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/)"},mh=createIcuMessageFn("core/audits/largest-contentful-paint-element.js",dh);var ph=Object.freeze({__proto__:null,default:class LargestContentfulPaintElement extends Audit{static get meta(){return{id:"largest-contentful-paint-element",title:mh(dh.title),description:mh(dh.description),scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,supportedModes:["navigation"],requiredArtifacts:["traces","TraceElements"]}}static audit(e){
const t=e.TraceElements.find((e=>"largest-contentful-paint"===e.traceEventType)),n=[];t&&n.push({node:Audit.makeNodeItem(t.node)});const a=[{key:"node",valueType:"node",label:mh(Dr.columnElement)}],r=Audit.makeTableDetails(a,n),o=mh(Dr.displayValueElementsFound,{nodeCount:n.length});return{score:1,notApplicable:0===n.length,displayValue:o,details:r}}},UIStrings:dh});
/**
* @license Copyright 2020 Google Inc. All Rights Reserved.
* 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.
*/const gh={title:"Avoid large layout shifts",description:"These DOM elements contribute most to the CLS of the page. [Learn how to improve CLS](https://web.dev/optimize-cls/)",columnContribution:"CLS Contribution"},hh=createIcuMessageFn("core/audits/layout-shift-elements.js",gh);var fh=Object.freeze({__proto__:null,default:class LayoutShiftElements extends Audit{static get meta(){return{id:"layout-shift-elements",title:hh(gh.title),description:hh(gh.description),scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,requiredArtifacts:["traces","TraceElements"]}}static audit(e){const t=e.TraceElements.filter((e=>"layout-shift"===e.traceEventType)).map((e=>({node:Audit.makeNodeItem(e.node),score:e.score}))),n=[{key:"node",valueType:"node",label:hh(Dr.columnElement)},{key:"score",valueType:"numeric",granularity:.001,label:hh(gh.columnContribution)}],a=Audit.makeTableDetails(n,t);let r;return t.length>0&&(r=hh(Dr.displayValueElementsFound,{nodeCount:t.length})),{score:1,
notApplicable:0===a.items.length,displayValue:r,details:a}}},UIStrings:gh});const yh={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/lcp-lazy-loading/)."},bh=createIcuMessageFn("core/audits/lcp-lazy-loaded.js",yh);var vh=Object.freeze({__proto__:null,default:class LargestContentfulPaintLazyLoaded extends Audit{static get meta(){return{id:"lcp-lazy-loaded",title:bh(yh.title),failureTitle:bh(yh.failureTitle),description:bh(yh.description),supportedModes:["navigation"],requiredArtifacts:["TraceElements","ViewportDimensions","ImageElements"]}}static isImageInViewport(e,t){return e.clientRect.top<t.innerHeight}static audit(e){
const t=e.TraceElements.find((e=>"largest-contentful-paint"===e.traceEventType&&"image"===e.type)),n=t?e.ImageElements.find((e=>e.node.devtoolsNodePath===t.node.devtoolsNodePath)):void 0;if(!n||!this.isImageInViewport(n,e.ViewportDimensions))return{score:null,notApplicable:!0};const a=[{key:"node",valueType:"node",label:bh(Dr.columnElement)}],r=Audit.makeTableDetails(a,[{node:Audit.makeNodeItem(n.node)}]);return{score:"lazy"===n.loading?0:1,details:r}}},UIStrings:yh});const wh={startTime:0,endTime:0,duration:0},Dh={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/long-tasks-devtools/)",displayValue:"{itemCount, plural,\n =1 {# long task found}\n other {# long tasks found}\n }"},Eh=createIcuMessageFn("core/audits/long-tasks.js",Dh);class LongTasks$2 extends Audit{static get meta(){return{id:"long-tasks",
scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,title:Eh(Dh.title),description:Eh(Dh.description),requiredArtifacts:["traces","devtoolsLogs","URL"]}}static async audit(e,t){const n=t.settings||{},a=e.URL,r=e.traces[Audit.DEFAULT_PASS],o=await Rd.request(r,t),i=e.devtoolsLogs[LongTasks$2.DEFAULT_PASS],s=await go.request(i,t),c=new Map;if("simulate"===n.throttlingMethod){const e={devtoolsLog:i,settings:t.settings},n=await mo.request({trace:r,devtoolsLog:i,URL:a},t),o=await Wo.request(e,t),s=await o.simulate(n,{label:"long-tasks-diagnostic"});for(const[e,t]of s.nodeTimings.entries())"cpu"===e.type&&c.set(e.event,t)}else for(const e of o)e.unbounded||e.parent||c.set(e.event,e);const l=getJavaScriptURLs(s),u=o.map((e=>{const t=c.get(e.event)||wh;return{...e,duration:t.duration,startTime:t.startTime}})).filter((e=>e.duration>=50&&!e.unbounded&&!e.parent)).sort(((e,t)=>t.duration-e.duration)).slice(0,20).map((e=>({url:getAttributableURLForTask(e,l),duration:e.duration,startTime:e.startTime
}))),d=[{key:"url",valueType:"url",label:Eh(Dr.columnURL)},{key:"startTime",valueType:"ms",granularity:1,label:Eh(Dr.columnStartTime)},{key:"duration",valueType:"ms",granularity:1,label:Eh(Dr.columnDuration)}],m=Audit.makeTableDetails(d,u);let p;return u.length>0&&(p=Eh(Dh.displayValue,{itemCount:u.length})),{score:0===u.length?1:0,notApplicable:0===u.length,details:m,displayValue:p}}}var Th=Object.freeze({__proto__:null,default:LongTasks$2,UIStrings:Dh});var Sh=Object.freeze({__proto__:null,default:class MainThreadTasks extends Audit{static get meta(){return{id:"main-thread-tasks",scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,title:"Tasks",description:"Lists the toplevel main thread tasks that executed during page load.",requiredArtifacts:["traces"]}}static async audit(e,t){const n=e.traces[Audit.DEFAULT_PASS],a=(await Rd.request(n,t)).filter((e=>e.duration>5&&!e.parent)).map((e=>({duration:e.duration,startTime:e.startTime})));return{score:1,details:Audit.makeTableDetails([{
key:"startTime",valueType:"ms",granularity:1,label:"Start Time"},{key:"duration",valueType:"ms",granularity:1,label:"End Time"}],a)}}}});const Ch={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"},_h=createIcuMessageFn("core/audits/mainthread-work-breakdown.js",Ch);class MainThreadWorkBreakdown extends Audit{static get meta(){return{id:"mainthread-work-breakdown",title:_h(Ch.title),failureTitle:_h(Ch.failureTitle),description:_h(Ch.description),scoreDisplayMode:Audit.SCORING_MODES.NUMERIC,requiredArtifacts:["traces"]}}static get defaultOptions(){return{p10:2017,median:4e3}}static getExecutionTimingsByGroup(e){const t=new Map;for(const n of e){
const e=t.get(n.group.id)||0;t.set(n.group.id,e+n.selfTime)}return t}static async audit(e,t){const n=t.settings||{},a=e.traces[MainThreadWorkBreakdown.DEFAULT_PASS],r=await Rd.request(a,t),o="simulate"===n.throttlingMethod?n.throttling.cpuSlowdownMultiplier:1,i=MainThreadWorkBreakdown.getExecutionTimingsByGroup(r);let s=0;const c={},l=Array.from(i).map((([e,t])=>{const n=t*o;s+=n;const a=c[e]||0;return c[e]=a+n,{group:e,groupLabel:kd[e].label,duration:n}})),u=[{key:"groupLabel",valueType:"text",label:_h(Ch.columnCategory)},{key:"duration",valueType:"ms",granularity:1,label:_h(Dr.columnTimeSpent)}];l.sort(((e,t)=>c[t.group]-c[e.group]));const d=MainThreadWorkBreakdown.makeTableDetails(u,l);return{score:Audit.computeLogNormalScore({p10:t.options.p10,median:t.options.median},s),numericValue:s,numericUnit:"millisecond",displayValue:_h(Dr.seconds,{timeInMs:s}),details:d}}}var Ah=Object.freeze({__proto__:null,default:MainThreadWorkBreakdown,UIStrings:Ch});const kh={
title:"Site works cross-browser",description:"To reach the most number of users, sites should work across every major browser. [Learn about cross-browser compatibility](https://developer.chrome.com/docs/lighthouse/pwa/pwa-cross-browser/)."},Fh=createIcuMessageFn("core/audits/manual/pwa-cross-browser.js",kh);var Rh=Object.freeze({__proto__:null,default:class PWACrossBrowser extends ManualAudit{static get meta(){return Object.assign({id:"pwa-cross-browser",title:Fh(kh.title),description:Fh(kh.description)},super.partialMeta)}},UIStrings:kh});const xh={title:"Each page has a URL",description:"Ensure individual pages are deep linkable via URL and that URLs are unique for the purpose of shareability on social media. [Learn more about providing deep links](https://developer.chrome.com/docs/lighthouse/pwa/pwa-each-page-has-url/)."},Ih=createIcuMessageFn("core/audits/manual/pwa-each-page-has-url.js",xh);var Nh=Object.freeze({__proto__:null,default:class PWAEachPageHasURL extends ManualAudit{
static get meta(){return Object.assign({id:"pwa-each-page-has-url",title:Ih(xh.title),description:Ih(xh.description)},super.partialMeta)}},UIStrings:xh});const Lh={title:"Page transitions don't feel like they block on the network",description:"Transitions should feel snappy as you tap around, even on a slow network. This experience is key to a user's perception of performance. [Learn more about page transitions](https://developer.chrome.com/docs/lighthouse/pwa/pwa-page-transitions/)."},Mh=createIcuMessageFn("core/audits/manual/pwa-page-transitions.js",Lh);var Ph=Object.freeze({__proto__:null,default:class PWAPageTransitions extends ManualAudit{static get meta(){return Object.assign({id:"pwa-page-transitions",title:Mh(Lh.title),description:Mh(Lh.description)},super.partialMeta)}},UIStrings:Lh});const Oh={title:"Manifest has a maskable icon",failureTitle:"Manifest doesn't have a maskable icon",
description:"A maskable icon ensures that the image fills the entire shape without being letterboxed when installing the app on a device. [Learn about maskable manifest icons](https://developer.chrome.com/docs/lighthouse/pwa/maskable-icon-audit/)."},Bh=createIcuMessageFn("core/audits/maskable-icon.js",Oh);var Uh=Object.freeze({__proto__:null,default:class MaskableIcon extends Audit{static get meta(){return{id:"maskable-icon",title:Bh(Oh.title),failureTitle:Bh(Oh.failureTitle),description:Bh(Oh.description),supportedModes:["navigation"],requiredArtifacts:["WebAppManifest","InstallabilityErrors"]}}static async audit(e,t){const n=await ah.request(e,t);if(n.isParseFailure)return{score:0,explanation:n.parseFailureReason};return{score:n.allChecks.find((e=>"hasMaskableIcon"===e.id))?.passing?1:0}}},UIStrings:Oh}),jh=getAugmentedNamespace(Z),zh={exports:{}};!function(e){function JPEGEncoder(e){
var t,n,a,r,o,i=Math.floor,s=new Array(64),c=new Array(64),l=new Array(64),u=new Array(64),d=new Array(65535),m=new Array(65535),p=new Array(64),h=new Array(64),f=[],y=0,b=7,v=new Array(64),w=new Array(64),D=new Array(64),E=new Array(256),T=new Array(2048),S=[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],C=[0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0],_=[0,1,2,3,4,5,6,7,8,9,10,11],A=[0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125],k=[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],F=[0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0],R=[0,1,2,3,4,5,6,7,8,9,10,11],x=[0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119],I=[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 computeHuffmanTbl(e,t){for(var n=0,a=0,r=new Array,o=1;o<=16;o++){for(var i=1;i<=e[o];i++)r[t[a]]=[],r[t[a]][0]=n,r[t[a]][1]=o,a++,n++;n*=2}return r}function writeBits(e){for(var t=e[0],n=e[1]-1;n>=0;)t&1<<n&&(y|=1<<b),n--,--b<0&&(255==y?(writeByte(255),writeByte(0)):writeByte(y),b=7,y=0)}function writeByte(e){f.push(e)}function writeWord(e){writeByte(e>>8&255),writeByte(255&e)}function processDU(e,t,n,a,r){for(var o,i=r[0],s=r[240],c=function fDCTQuant(e,t){var n,a,r,o,i,s,c,l,u,d,m=0;for(u=0;u<8;++u){n=e[m],a=e[m+1],r=e[m+2],o=e[m+3],i=e[m+4],s=e[m+5],c=e[m+6];var h=n+(l=e[m+7]),f=n-l,y=a+c,b=a-c,v=r+s,w=r-s,D=o+i,E=o-i,T=h+D,S=h-D,C=y+v,_=y-v;e[m]=T+C,e[m+4]=T-C;var A=.707106781*(_+S);e[m+2]=S+A,e[m+6]=S-A;var k=.382683433*((T=E+w)-(_=b+f)),F=.5411961*T+k,R=1.306562965*_+k,x=.707106781*(C=w+b),I=f+x,N=f-x;e[m+5]=N+F,e[m+3]=N-F,e[m+1]=I+R,e[m+7]=I-R,m+=8}for(m=0,u=0;u<8;++u){n=e[m],a=e[m+8],r=e[m+16],o=e[m+24],i=e[m+32],s=e[m+40],c=e[m+48]
;var L=n+(l=e[m+56]),M=n-l,P=a+c,O=a-c,B=r+s,U=r-s,j=o+i,z=o-i,q=L+j,$=L-j,V=P+B,W=P-B;e[m]=q+V,e[m+32]=q-V;var H=.707106781*(W+$);e[m+16]=$+H,e[m+48]=$-H;var G=.382683433*((q=z+U)-(W=O+M)),Y=.5411961*q+G,K=1.306562965*W+G,J=.707106781*(V=U+O),Z=M+J,X=M-J;e[m+40]=X+Y,e[m+24]=X-Y,e[m+8]=Z+K,e[m+56]=Z-K,m++}for(u=0;u<64;++u)d=e[u]*t[u],p[u]=d>0?d+.5|0:d-.5|0;return p}(e,t),l=0;l<64;++l)h[S[l]]=c[l];var u=h[0]-n;n=h[0],0==u?writeBits(a[0]):(writeBits(a[m[o=32767+u]]),writeBits(d[o]));for(var f=63;f>0&&0==h[f];f--);if(0==f)return writeBits(i),n;for(var y,b=1;b<=f;){for(var v=b;0==h[b]&&b<=f;++b);var w=b-v;if(w>=16){y=w>>4;for(var D=1;D<=y;++D)writeBits(s);w&=15}o=32767+h[b],writeBits(r[(w<<4)+m[o]]),writeBits(d[o]),b++}return 63!=f&&writeBits(i),n}function setQuality(e){if(e<=0&&(e=1),e>100&&(e=100),o!=e){(function initQuantTables(e){
for(var t=[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],n=0;n<64;n++){var a=i((t[n]*e+50)/100);a<1?a=1:a>255&&(a=255),s[S[n]]=a}for(var r=[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],o=0;o<64;o++){var d=i((r[o]*e+50)/100);d<1?d=1:d>255&&(d=255),c[S[o]]=d}for(var m=[1,1.387039845,1.306562965,1.175875602,1,.785694958,.5411961,.275899379],p=0,h=0;h<8;h++)for(var f=0;f<8;f++)l[p]=1/(s[S[p]]*m[h]*m[f]*8),u[p]=1/(c[S[p]]*m[h]*m[f]*8),p++})(e<50?Math.floor(5e3/e):Math.floor(200-2*e)),o=e}}this.encode=function(e,o){(new Date).getTime(),o&&setQuality(o),f=new Array,y=0,b=7,writeWord(65496),function writeAPP0(){writeWord(65504),writeWord(16),writeByte(74),writeByte(70),writeByte(73),
writeByte(70),writeByte(0),writeByte(1),writeByte(1),writeByte(0),writeWord(1),writeWord(1),writeByte(0),writeByte(0)}(),function writeCOM(e){void 0!==e&&e.constructor===Array&&e.forEach((e=>{if("string"==typeof e){writeWord(65534);var t,n=e.length;for(writeWord(n+2),t=0;t<n;t++)writeByte(e.charCodeAt(t))}}))}(e.comments),function writeAPP1(e){if(e){writeWord(65505),69===e[0]&&120===e[1]&&105===e[2]&&102===e[3]?writeWord(e.length+2):(writeWord(e.length+5+2),writeByte(69),writeByte(120),writeByte(105),writeByte(102),writeByte(0));for(var t=0;t<e.length;t++)writeByte(e[t])}}(e.exifBuffer),function writeDQT(){writeWord(65499),writeWord(132),writeByte(0);for(var e=0;e<64;e++)writeByte(s[e]);writeByte(1);for(var t=0;t<64;t++)writeByte(c[t])}(),function writeSOF0(e,t){writeWord(65472),writeWord(17),writeByte(8),writeWord(t),writeWord(e),writeByte(3),writeByte(1),writeByte(17),writeByte(0),writeByte(2),writeByte(17),writeByte(1),writeByte(3),writeByte(17),writeByte(1)}(e.width,e.height),
function writeDHT(){writeWord(65476),writeWord(418),writeByte(0);for(var e=0;e<16;e++)writeByte(C[e+1]);for(var t=0;t<=11;t++)writeByte(_[t]);writeByte(16);for(var n=0;n<16;n++)writeByte(A[n+1]);for(var a=0;a<=161;a++)writeByte(k[a]);writeByte(1);for(var r=0;r<16;r++)writeByte(F[r+1]);for(var o=0;o<=11;o++)writeByte(R[o]);writeByte(17);for(var i=0;i<16;i++)writeByte(x[i+1]);for(var s=0;s<=161;s++)writeByte(I[s])}(),function writeSOS(){writeWord(65498),writeWord(12),writeByte(3),writeByte(1),writeByte(0),writeByte(2),writeByte(17),writeByte(3),writeByte(17),writeByte(0),writeByte(63),writeByte(0)}();var i=0,d=0,m=0;y=0,b=7,this.encode.displayName="_encode_";for(var p,h,E,S,N,L,M,P,O,B=e.data,U=e.width,j=e.height,z=4*U,q=0;q<j;){for(p=0;p<z;){for(L=N=z*q+p,M=-1,P=0,O=0;O<64;O++)L=N+(P=O>>3)*z+(M=4*(7&O)),q+P>=j&&(L-=z*(q+1+P-j)),p+M>=z&&(L-=p+M-z+4),h=B[L++],E=B[L++],S=B[L++],v[O]=(T[h]+T[E+256>>0]+T[S+512>>0]>>16)-128,w[O]=(T[h+768>>0]+T[E+1024>>0]+T[S+1280>>0]>>16)-128,
D[O]=(T[h+1280>>0]+T[E+1536>>0]+T[S+1792>>0]>>16)-128;i=processDU(v,l,i,t,a),d=processDU(w,u,d,n,r),m=processDU(D,u,m,n,r),p+=32}q+=8}if(b>=0){var $=[];$[1]=b+1,$[0]=(1<<b+1)-1,writeBits($)}return writeWord(65497),Buffer$1.from(f)},function init(){(new Date).getTime(),e||(e=50),function initCharLookupTable(){for(var e=String.fromCharCode,t=0;t<256;t++)E[t]=e(t)}(),function initHuffmanTbl(){t=computeHuffmanTbl(C,_),n=computeHuffmanTbl(F,R),a=computeHuffmanTbl(A,k),r=computeHuffmanTbl(x,I)}(),function initCategoryNumber(){for(var e=1,t=2,n=1;n<=15;n++){for(var a=e;a<t;a++)m[32767+a]=n,d[32767+a]=[],d[32767+a][1]=n,d[32767+a][0]=a;for(var r=-(t-1);r<=-e;r++)m[32767+r]=n,d[32767+r]=[],d[32767+r][1]=n,d[32767+r][0]=t-1+r;e<<=1,t<<=1}}(),function initRGBYUVTable(){for(var e=0;e<256;e++)T[e]=19595*e,T[e+256>>0]=38470*e,T[e+512>>0]=7471*e+32768,T[e+768>>0]=-11059*e,T[e+1024>>0]=-21709*e,T[e+1280>>0]=32768*e+8421375,T[e+1536>>0]=-27439*e,T[e+1792>>0]=-5329*e}(),setQuality(e),
(new Date).getTime()}()}e.exports=function encode(e,t){void 0===t&&(t=50);return{data:new JPEGEncoder(t).encode(e,t),width:e.width,height:e.height}}}(zh);var qh,$h,Vh={exports:{}};qh=Vh,$h=function jpegImage(){var e=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]),t=4017,n=799,a=3406,r=2276,o=1567,i=3784,s=5793,c=2896;function constructor(){}function buildHuffmanTable(e,t){for(var n,a,r=0,o=[],i=16;i>0&&!e[i-1];)i--;o.push({children:[],index:0});var s,c=o[0];for(n=0;n<i;n++){for(a=0;a<e[n];a++){for((c=o.pop()).children[c.index]=t[r];c.index>0;){if(0===o.length)throw new Error("Could not recreate Huffman Table");c=o.pop()}for(c.index++,o.push(c);o.length<=n;)o.push(s={children:[],index:0}),c.children[c.index]=s.children,c=s;r++}n+1<i&&(o.push(s={children:[],index:0}),c.children[c.index]=s.children,c=s)}return o[0].children}
function decodeScan(t,n,a,r,o,i,s,c,l,u){a.precision,a.samplesPerLine,a.scanLines;var d=a.mcusPerLine,m=a.progressive;a.maxH,a.maxV;var p=n,h=0,f=0;function readBit(){if(f>0)return f--,h>>f&1;if(255==(h=t[n++])){var e=t[n++];if(e)throw new Error("unexpected marker: "+(h<<8|e).toString(16))}return f=7,h>>>7}function decodeHuffman(e){for(var t,n=e;null!==(t=readBit());){if("number"==typeof(n=n[t]))return n;if("object"!=typeof n)throw new Error("invalid huffman sequence")}return null}function receive(e){for(var t=0;e>0;){var n=readBit();if(null===n)return;t=t<<1|n,e--}return t}function receiveAndExtend(e){var t=receive(e);return t>=1<<e-1?t:t+(-1<<e)+1}var y,b=0,v=0;function decodeMcu(e,t,n,a,r){var o=n%d,i=(n/d|0)*e.v+a,s=o*e.h+r;void 0===e.blocks[i]&&u.tolerantDecoding||t(e,e.blocks[i][s])}function decodeBlock(e,t,n){var a=n/e.blocksPerLine|0,r=n%e.blocksPerLine;void 0===e.blocks[a]&&u.tolerantDecoding||t(e,e.blocks[a][r])}var w,D,E,T,S,C,_=r.length
;C=m?0===i?0===c?function decodeDCFirst(e,t){var n=decodeHuffman(e.huffmanTableDC),a=0===n?0:receiveAndExtend(n)<<l;t[0]=e.pred+=a}:function decodeDCSuccessive(e,t){t[0]|=readBit()<<l}:0===c?function decodeACFirst(t,n){if(b>0)b--;else for(var a=i,r=s;a<=r;){var o=decodeHuffman(t.huffmanTableAC),c=15&o,u=o>>4;if(0!==c)n[e[a+=u]]=receiveAndExtend(c)*(1<<l),a++;else{if(u<15){b=receive(u)+(1<<u)-1;break}a+=16}}}:function decodeACSuccessive(t,n){for(var a=i,r=s,o=0;a<=r;){var c=e[a],u=n[c]<0?-1:1;switch(v){case 0:var d=decodeHuffman(t.huffmanTableAC),m=15&d;if(o=d>>4,0===m)o<15?(b=receive(o)+(1<<o),v=4):(o=16,v=1);else{if(1!==m)throw new Error("invalid ACn encoding");y=receiveAndExtend(m),v=o?2:3}continue;case 1:case 2:n[c]?n[c]+=(readBit()<<l)*u:0==--o&&(v=2==v?3:0);break;case 3:n[c]?n[c]+=(readBit()<<l)*u:(n[c]=y<<l,v=0);break;case 4:n[c]&&(n[c]+=(readBit()<<l)*u)}a++}4===v&&0==--b&&(v=0)}:function decodeBaseline(t,n){var a=decodeHuffman(t.huffmanTableDC),r=0===a?0:receiveAndExtend(a)
;n[0]=t.pred+=r;for(var o=1;o<64;){var i=decodeHuffman(t.huffmanTableAC),s=15&i,c=i>>4;if(0!==s)n[e[o+=c]]=receiveAndExtend(s),o++;else{if(c<15)break;o+=16}}};var A,k,F,R,x=0;for(k=1==_?r[0].blocksPerLine*r[0].blocksPerColumn:d*a.mcusPerColumn,o||(o=k);x<k;){for(D=0;D<_;D++)r[D].pred=0;if(b=0,1==_)for(w=r[0],S=0;S<o;S++)decodeBlock(w,C,x),x++;else for(S=0;S<o;S++){for(D=0;D<_;D++)for(F=(w=r[D]).h,R=w.v,E=0;E<R;E++)for(T=0;T<F;T++)decodeMcu(w,C,x,E,T);if(++x===k)break}if(x===k)do{if(255===t[n]&&0!==t[n+1])break;n+=1}while(n<t.length-2);if(f=0,(A=t[n]<<8|t[n+1])<65280)throw new Error("marker was not found");if(!(A>=65488&&A<=65495))break;n+=2}return n-p}function buildComponentData(e,l){var u,d,m=[],p=l.blocksPerLine,h=l.blocksPerColumn,f=p<<3,y=new Int32Array(64),b=new Uint8Array(64);function quantizeAndInverse(e,u,d){var m,p,h,f,y,b,v,w,D,E,T=l.quantizationTable,S=d;for(E=0;E<64;E++)S[E]=e[E]*T[E];for(E=0;E<8;++E){var C=8*E
;0!=S[1+C]||0!=S[2+C]||0!=S[3+C]||0!=S[4+C]||0!=S[5+C]||0!=S[6+C]||0!=S[7+C]?(m=s*S[0+C]+128>>8,p=s*S[4+C]+128>>8,h=S[2+C],f=S[6+C],y=c*(S[1+C]-S[7+C])+128>>8,w=c*(S[1+C]+S[7+C])+128>>8,b=S[3+C]<<4,v=S[5+C]<<4,D=m-p+1>>1,m=m+p+1>>1,p=D,D=h*i+f*o+128>>8,h=h*o-f*i+128>>8,f=D,D=y-v+1>>1,y=y+v+1>>1,v=D,D=w+b+1>>1,b=w-b+1>>1,w=D,D=m-f+1>>1,m=m+f+1>>1,f=D,D=p-h+1>>1,p=p+h+1>>1,h=D,D=y*r+w*a+2048>>12,y=y*a-w*r+2048>>12,w=D,D=b*n+v*t+2048>>12,b=b*t-v*n+2048>>12,v=D,S[0+C]=m+w,S[7+C]=m-w,S[1+C]=p+v,S[6+C]=p-v,S[2+C]=h+b,S[5+C]=h-b,S[3+C]=f+y,S[4+C]=f-y):(D=s*S[0+C]+512>>10,S[0+C]=D,S[1+C]=D,S[2+C]=D,S[3+C]=D,S[4+C]=D,S[5+C]=D,S[6+C]=D,S[7+C]=D)}for(E=0;E<8;++E){var _=E;0!=S[8+_]||0!=S[16+_]||0!=S[24+_]||0!=S[32+_]||0!=S[40+_]||0!=S[48+_]||0!=S[56+_]?(m=s*S[0+_]+2048>>12,p=s*S[32+_]+2048>>12,h=S[16+_],f=S[48+_],y=c*(S[8+_]-S[56+_])+2048>>12,w=c*(S[8+_]+S[56+_])+2048>>12,b=S[24+_],v=S[40+_],D=m-p+1>>1,m=m+p+1>>1,p=D,D=h*i+f*o+2048>>12,h=h*o-f*i+2048>>12,f=D,D=y-v+1>>1,y=y+v+1>>1,v=D,D=w+b+1>>1,
b=w-b+1>>1,w=D,D=m-f+1>>1,m=m+f+1>>1,f=D,D=p-h+1>>1,p=p+h+1>>1,h=D,D=y*r+w*a+2048>>12,y=y*a-w*r+2048>>12,w=D,D=b*n+v*t+2048>>12,b=b*t-v*n+2048>>12,v=D,S[0+_]=m+w,S[56+_]=m-w,S[8+_]=p+v,S[48+_]=p-v,S[16+_]=h+b,S[40+_]=h-b,S[24+_]=f+y,S[32+_]=f-y):(D=s*d[E+0]+8192>>14,S[0+_]=D,S[8+_]=D,S[16+_]=D,S[24+_]=D,S[32+_]=D,S[40+_]=D,S[48+_]=D,S[56+_]=D)}for(E=0;E<64;++E){var A=128+(S[E]+8>>4);u[E]=A<0?0:A>255?255:A}}requestMemoryAllocation(f*h*8);for(var v=0;v<h;v++){var w=v<<3;for(u=0;u<8;u++)m.push(new Uint8Array(f));for(var D=0;D<p;D++){quantizeAndInverse(l.blocks[v][D],b,y);var E=0,T=D<<3;for(d=0;d<8;d++){var S=m[w+d];for(u=0;u<8;u++)S[T+u]=b[E++]}}}return m}function clampTo8bit(e){return e<0?0:e>255?255:e}constructor.prototype={load:function load(e){var t=new XMLHttpRequest;t.open("GET",e,!0),t.responseType="arraybuffer",t.onload=function(){var e=new Uint8Array(t.response||t.mozResponseArrayBuffer);this.parse(e),this.onload&&this.onload()}.bind(this),t.send(null)},parse:function parse(t){
var n=1e3*this.opts.maxResolutionInMP*1e3,a=0;function readUint16(){var e=t[a]<<8|t[a+1];return a+=2,e}function prepareComponents(e){var t,n,a=1,r=1;for(n in e.components)e.components.hasOwnProperty(n)&&(a<(t=e.components[n]).h&&(a=t.h),r<t.v&&(r=t.v));var o=Math.ceil(e.samplesPerLine/8/a),i=Math.ceil(e.scanLines/8/r);for(n in e.components)if(e.components.hasOwnProperty(n)){t=e.components[n];var s=Math.ceil(Math.ceil(e.samplesPerLine/8)*t.h/a),c=Math.ceil(Math.ceil(e.scanLines/8)*t.v/r),l=o*t.h,u=i*t.v,d=[];requestMemoryAllocation(u*l*256);for(var m=0;m<u;m++){for(var p=[],h=0;h<l;h++)p.push(new Int32Array(64));d.push(p)}t.blocksPerLine=s,t.blocksPerColumn=c,t.blocks=d}e.maxH=a,e.maxV=r,e.mcusPerLine=o,e.mcusPerColumn=i}t.length;var r,o,i,s,c=null,l=null,u=[],d=[],m=[],p=[],h=readUint16(),f=-1;if(this.comments=[],65496!=h)throw new Error("SOI not found");for(h=readUint16();65497!=h;){switch(h){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 y=(i=void 0,s=void 0,i=readUint16(),s=t.subarray(a,a+i-2),a+=s.length,s);if(65534===h){var b=String.fromCharCode.apply(null,y);this.comments.push(b)}65504===h&&74===y[0]&&70===y[1]&&73===y[2]&&70===y[3]&&0===y[4]&&(c={version:{major:y[5],minor:y[6]},densityUnits:y[7],xDensity:y[8]<<8|y[9],yDensity:y[10]<<8|y[11],thumbWidth:y[12],thumbHeight:y[13],thumbData:y.subarray(14,14+3*y[12]*y[13])}),65505===h&&69===y[0]&&120===y[1]&&105===y[2]&&102===y[3]&&0===y[4]&&(this.exifBuffer=y.subarray(5,y.length)),65518===h&&65===y[0]&&100===y[1]&&111===y[2]&&98===y[3]&&101===y[4]&&0===y[5]&&(l={version:y[6],flags0:y[7]<<8|y[8],flags1:y[9]<<8|y[10],transformCode:y[11]});break;case 65499:for(var v=readUint16()+a-2;a<v;){var w=t[a++];requestMemoryAllocation(256);var D=new Int32Array(64);if(w>>4==0)for($=0;$<64;$++)D[e[$]]=t[a++];else{
if(w>>4!=1)throw new Error("DQT: invalid table spec");for($=0;$<64;$++)D[e[$]]=readUint16()}u[15&w]=D}break;case 65472:case 65473:case 65474:readUint16(),(r={}).extended=65473===h,r.progressive=65474===h,r.precision=t[a++],r.scanLines=readUint16(),r.samplesPerLine=readUint16(),r.components={},r.componentsOrder=[];var E=r.scanLines*r.samplesPerLine;if(E>n){var T=Math.ceil((E-n)/1e6);throw new Error(`maxResolutionInMP limit exceeded by ${T}MP`)}var S,C=t[a++];for(z=0;z<C;z++){S=t[a];var _=t[a+1]>>4,A=15&t[a+1],k=t[a+2];if(_<=0||A<=0)throw new Error("Invalid sampling factor, expected values above 0");r.componentsOrder.push(S),r.components[S]={h:_,v:A,quantizationIdx:k},a+=3}prepareComponents(r),d.push(r);break;case 65476:var F=readUint16();for(z=2;z<F;){var R=t[a++],x=new Uint8Array(16),I=0;for($=0;$<16;$++,a++)I+=x[$]=t[a];requestMemoryAllocation(16+I);var N=new Uint8Array(I);for($=0;$<I;$++,a++)N[$]=t[a];z+=17+I,(R>>4==0?p:m)[15&R]=buildHuffmanTable(x,N)}break;case 65501:readUint16(),
o=readUint16();break;case 65500:readUint16(),readUint16();break;case 65498:readUint16();var L=t[a++],M=[];for(z=0;z<L;z++){V=r.components[t[a++]];var P=t[a++];V.huffmanTableDC=p[P>>4],V.huffmanTableAC=m[15&P],M.push(V)}var O=t[a++],B=t[a++],U=t[a++],j=decodeScan(t,a,r,M,o,O,B,U>>4,15&U,this.opts);a+=j;break;case 65535:255!==t[a]&&a--;break;default:if(255==t[a-3]&&t[a-2]>=192&&t[a-2]<=254){a-=3;break}if(224===h||225==h){if(-1!==f)throw new Error(`first unknown JPEG marker at offset ${f.toString(16)}, second unknown JPEG marker ${h.toString(16)} at offset ${(a-1).toString(16)}`);f=a-1;const e=readUint16();if(255===t[a+e-2]){a+=e-2;break}}throw new Error("unknown JPEG marker "+h.toString(16))}h=readUint16()}if(1!=d.length)throw new Error("only single frame JPEGs supported");for(var z=0;z<d.length;z++){var q=d[z].components;for(var $ in q)q[$].quantizationTable=u[q[$].quantizationIdx],delete q[$].quantizationIdx}for(this.width=r.samplesPerLine,this.height=r.scanLines,this.jfif=c,
this.adobe=l,this.components=[],z=0;z<r.componentsOrder.length;z++){var V=r.components[r.componentsOrder[z]];this.components.push({lines:buildComponentData(0,V),scaleX:V.h/r.maxH,scaleY:V.v/r.maxV})}},getData:function getData(e,t){var n,a,r,o,i,s,c,l,u,d,m,p,h,f,y,b,v,w,D,E,T,S=this.width/e,C=this.height/t,_=0,A=e*t*this.components.length;requestMemoryAllocation(A);var k=new Uint8Array(A);switch(this.components.length){case 1:for(n=this.components[0],d=0;d<t;d++)for(i=n.lines[0|d*n.scaleY*C],u=0;u<e;u++)m=i[0|u*n.scaleX*S],k[_++]=m;break;case 2:for(n=this.components[0],a=this.components[1],d=0;d<t;d++)for(i=n.lines[0|d*n.scaleY*C],s=a.lines[0|d*a.scaleY*C],u=0;u<e;u++)m=i[0|u*n.scaleX*S],k[_++]=m,m=s[0|u*a.scaleX*S],k[_++]=m;break;case 3:for(T=!0,this.adobe&&this.adobe.transformCode?T=!0:void 0!==this.opts.colorTransform&&(T=!!this.opts.colorTransform),n=this.components[0],a=this.components[1],r=this.components[2],d=0;d<t;d++)for(i=n.lines[0|d*n.scaleY*C],s=a.lines[0|d*a.scaleY*C],
c=r.lines[0|d*r.scaleY*C],u=0;u<e;u++)T?(m=i[0|u*n.scaleX*S],p=s[0|u*a.scaleX*S],w=clampTo8bit(m+1.402*((h=c[0|u*r.scaleX*S])-128)),D=clampTo8bit(m-.3441363*(p-128)-.71413636*(h-128)),E=clampTo8bit(m+1.772*(p-128))):(w=i[0|u*n.scaleX*S],D=s[0|u*a.scaleX*S],E=c[0|u*r.scaleX*S]),k[_++]=w,k[_++]=D,k[_++]=E;break;case 4:if(!this.adobe)throw new Error("Unsupported color mode (4 components)");for(T=!1,this.adobe&&this.adobe.transformCode?T=!0:void 0!==this.opts.colorTransform&&(T=!!this.opts.colorTransform),n=this.components[0],a=this.components[1],r=this.components[2],o=this.components[3],d=0;d<t;d++)for(i=n.lines[0|d*n.scaleY*C],s=a.lines[0|d*a.scaleY*C],c=r.lines[0|d*r.scaleY*C],l=o.lines[0|d*o.scaleY*C],u=0;u<e;u++)T?(m=i[0|u*n.scaleX*S],p=s[0|u*a.scaleX*S],h=c[0|u*r.scaleX*S],f=l[0|u*o.scaleX*S],y=255-clampTo8bit(m+1.402*(h-128)),b=255-clampTo8bit(m-.3441363*(p-128)-.71413636*(h-128)),v=255-clampTo8bit(m+1.772*(p-128))):(y=i[0|u*n.scaleX*S],b=s[0|u*a.scaleX*S],v=c[0|u*r.scaleX*S],
f=l[0|u*o.scaleX*S]),k[_++]=255-y,k[_++]=255-b,k[_++]=255-v,k[_++]=255-f;break;default:throw new Error("Unsupported color mode")}return k},copyToImageData:function copyToImageData(e,t){var n,a,r,o,i,s,c,l,u,d=e.width,m=e.height,p=e.data,h=this.getData(d,m),f=0,y=0;switch(this.components.length){case 1:for(a=0;a<m;a++)for(n=0;n<d;n++)r=h[f++],p[y++]=r,p[y++]=r,p[y++]=r,t&&(p[y++]=255);break;case 3:for(a=0;a<m;a++)for(n=0;n<d;n++)c=h[f++],l=h[f++],u=h[f++],p[y++]=c,p[y++]=l,p[y++]=u,t&&(p[y++]=255);break;case 4:for(a=0;a<m;a++)for(n=0;n<d;n++)i=h[f++],s=h[f++],r=h[f++],c=255-clampTo8bit(i*(1-(o=h[f++])/255)+o),l=255-clampTo8bit(s*(1-o/255)+o),u=255-clampTo8bit(r*(1-o/255)+o),p[y++]=c,p[y++]=l,p[y++]=u,t&&(p[y++]=255);break;default:throw new Error("Unsupported color mode")}}};var l=0,u=0;function requestMemoryAllocation(e=0){var t=l+e;if(t>u){var n=Math.ceil((t-u)/1024/1024);throw new Error(`maxMemoryUsageInMB limit exceeded by at least ${n}MB`)}l=t}
return constructor.resetMaxMemoryUsage=function(e){l=0,u=e},constructor.getBytesAllocated=function(){return l},constructor.requestMemoryAllocation=requestMemoryAllocation,constructor}(),qh.exports=function decode(e,t={}){var n={colorTransform:void 0,useTArray:!1,formatAsRGBA:!0,tolerantDecoding:!0,maxResolutionInMP:100,maxMemoryUsageInMB:512,...t},a=new Uint8Array(e),r=new $h;r.opts=n,$h.resetMaxMemoryUsage(1024*n.maxMemoryUsageInMB*1024),r.parse(a);var o=n.formatAsRGBA?4:3,i=r.width*r.height*o;try{$h.requestMemoryAllocation(i);var s={width:r.width,height:r.height,exifBuffer:r.exifBuffer,data:n.useTArray?new Uint8Array(i):Buffer$1.alloc(i)};r.comments.length>0&&(s.comments=r.comments)}catch(e){if(e instanceof RangeError)throw new Error("Could not allocate enough memory for the image. Required: "+i);if(e instanceof ReferenceError&&"Buffer is not defined"===e.message)throw new Error("Buffer is not globally defined in this environment. Consider setting useTArray to true");throw e}
return r.copyToImageData(s,n.formatAsRGBA),s};var Wh={encode:zh.exports,decode:Vh.exports};const Hh=jh,Gh=Wh;function getPixel(e,t,n,a,r){return r[4*(e+t*a)+n]}function isWhitePixel(e,t,n){return getPixel(e,t,0,n.width,n.data)>=249&&getPixel(e,t,1,n.width,n.data)>=249&&getPixel(e,t,2,n.width,n.data)>=249}function frame$1(e,t){let n=null,a=null,r=null,o=null,i=null,s=null;return{getHistogram:function(){if(n)return n;const e=this.getParsedImage();return n=function convertPixelsToHistogram(e){const createHistogramArray=function(){const e=[];for(let t=0;t<256;t++)e[t]=0;return e},t=e.width,n=e.height,a=[createHistogramArray(),createHistogramArray(),createHistogramArray()];for(let r=0;r<n;r++)for(let n=0;n<t;n++)if(!isWhitePixel(n,r,e))for(let o=0;o<a.length;o++){const i=getPixel(n,r,o,t,e.data);a[o][i]++}return a}(e),n},getTimeStamp:function(){return t},setProgress:function(e,t){a=e,r=Boolean(t)},setPerceptualProgress:function(e,t){o=e,i=Boolean(t)},getImage:function(){return e},
getParsedImage:function(){return s||(s=Gh.decode(e)),s},getProgress:function(){return a},isProgressInterpolated:function(){return r},getPerceptualProgress:function(){return o},isPerceptualProgressInterpolated:function(){return i}}}var Yh,Kh={extractFramesFromTimeline:function extractFramesFromTimeline(e,t){let n;t=t||{},e="string"==typeof e?Hh.readFileSync(e,"utf-8"):e;try{n="string"==typeof e?JSON.parse(e):e}catch(e){throw new Error("Speedline: Invalid JSON"+e.message)}let a=n.traceEvents||n,r=Number.MAX_VALUE,o=-Number.MAX_VALUE;a.forEach((e=>{0!==e.ts&&(r=Math.min(r,e.ts),o=Math.max(o,e.ts))})),r=(t.timeOrigin||r)/1e3,o/=1e3;let i=null;const s=a.filter((e=>e.cat.includes("disabled-by-default-devtools.screenshot")&&e.ts>=1e3*r));s.sort(((e,t)=>e.ts-t.ts));const c=s.map((function(e){const t=e.args&&e.args.snapshot,n=e.ts/1e3;if(t===i)return null;i=t;return frame$1(Buffer$1.from(t,"base64"),n)})).filter(Boolean)
;if(0===c.length)return Promise.reject(new Error("No screenshots found in trace"));const l=frame$1(function synthesizeWhiteFrame(e){const t=Gh.decode(e[0].getImage()),n=t.width,a=t.height,r=Buffer$1.alloc(n*a*4);let o=0;for(;o<r.length;)r[o++]=255,r[o++]=255,r[o++]=255,r[o++]=255;return Gh.encode({data:r,width:n,height:a}).data}(c),r);c.unshift(l);const u={startTs:r,endTs:o,frames:c};return Promise.resolve(u)},create:frame$1};
/**
* @preserve
* Copyright 2015 Igor Bezkrovny
* All rights reserved. (MIT Licensed)
*
* ssim.ts - part of Image Quantization Library
*/!function(e){var t,n;(t=e.Channels||(e.Channels={}))[t.Grey=1]="Grey",t[t.GreyAlpha=2]="GreyAlpha",t[t.RGB=3]="RGB",t[t.RGBAlpha=4]="RGBAlpha",e.Channels,e.compare=function compare(e,t,a,r,o,i,s){if(void 0===a&&(a=8),void 0===r&&(r=.01),void 0===o&&(o=.03),void 0===i&&(i=!0),void 0===s&&(s=8),e.width!==t.width||e.height!==t.height)throw new Error("Images have different sizes!");var c=(1<<s)-1,l=Math.pow(r*c,2),u=Math.pow(o*c,2),d=0,m=0,p=0;return n._iterate(e,t,a,i,(function iteration(e,t,n,a){var r,o,i;r=o=i=0;for(var s=0;s<e.length;s++)o+=Math.pow(e[s]-n,2),i+=Math.pow(t[s]-a,2),r+=(e[s]-n)*(t[s]-a);var c=e.length-1;o/=c,i/=c;var h=(2*n*a+l)*(2*(r/=c)+u),f=(Math.pow(n,2)+Math.pow(a,2)+l)*(o+i+u);m+=h/f,p+=(2*r+u)/(o+i+u),d++})),{ssim:m/d,mcs:p/d}},function(e){function _lumaValuesForWindow(e,t,n,a,r,o){for(var i=e.data,s=new Float32Array(new ArrayBuffer(a*r*4)),c=0,l=n+r,u=n;u<l;u++){var d=u*e.width,m=(d+t)*e.channels,p=(d+t+a)*e.channels;switch(e.channels){case 1:
for(;m<p;)s[c++]=i[m++];break;case 2:for(;m<p;)s[c++]=i[m++]*(i[m++]/255);break;case 3:if(o)for(;m<p;)s[c++]=.212655*i[m++]+.715158*i[m++]+.072187*i[m++];else for(;m<p;)s[c++]=i[m++]+i[m++]+i[m++];break;case 4:if(o)for(;m<p;)s[c++]=(.212655*i[m++]+.715158*i[m++]+.072187*i[m++])*(i[m++]/255);else for(;m<p;)s[c++]=(i[m++]+i[m++]+i[m++])*(i[m++]/255)}}return s}function _averageLuma(e){for(var t=0,n=0;n<e.length;n++)t+=e[n];return t/e.length}e._iterate=function _iterate(e,t,n,a,r){for(var o=e.width,i=e.height,s=0;s<i;s+=n)for(var c=0;c<o;c+=n){var l=Math.min(n,o-c),u=Math.min(n,i-s),d=_lumaValuesForWindow(e,c,s,l,u,a),m=_lumaValuesForWindow(t,c,s,l,u,a);r(d,m,_averageLuma(d),_averageLuma(m))}}}(n||(n={}))}(Yh||(Yh={}));const Jh=Yh,Zh=Math.log(4/6);function calculateFastModeAllowableChange(e){const t=e/1e3;return 6*Math.exp(Zh*t)-1}function calculateProgressBetweenFrames(e,t,n,a,r,o){if(!a)return void e.forEach((e=>o(e,r(e),!1)))
;const i=e[t],s=e[n],c=s.getTimeStamp()-i.getTimeStamp(),l=r(i),u=r(s);if(o(i,l,!1),o(s,u,!1),Math.abs(l-u)<calculateFastModeAllowableChange(c))for(let a=t+1;a<n;a++)o(e[a],l,!0);else if(n-t>1){const i=Math.floor((t+n)/2);calculateProgressBetweenFrames(e,t,i,a,r,o),calculateProgressBetweenFrames(e,i,n,a,r,o)}}function calculateFrameSimilarity(e,t){const n={channels:4},a=Object.assign(e.getParsedImage(),n),r=Object.assign(t.getParsedImage(),n);return Jh.compare(a,r).ssim}var Xh={calculateFastModeAllowableChange,calculateFrameSimilarity,calculateVisualProgress:function calculateVisualProgress(e,t){const n=e[0],a=e[e.length-1];return calculateProgressBetweenFrames(e,0,e.length-1,t&&t.fastMode,(function getProgress(e){return"number"==typeof e.getProgress()?e.getProgress():function calculateFrameProgress(e,t,n){let a=0,r=0;const o=e.getHistogram(),i=t.getHistogram(),s=n.getHistogram();for(let e=0;e<3;e++)for(let t=0;t<256;t++){
const n=o[e][t],c=i[e][t],l=s[e][t],u=Math.abs(n-c),d=Math.abs(l-c);r+=Math.min(u,d),a+=d}let c;return c=0===r&&0===a?100:Math.floor(r/a*100),c}(e,n,a)}),(function setProgress(e,t,n){return e.setProgress(t,n)})),e},calculatePerceptualProgress:function calculatePerceptualProgress(e,t){const n=e[0],a=e[e.length-1],r=calculateFrameSimilarity(n,a);return calculateProgressBetweenFrames(e,0,e.length-1,t&&t.fastMode,(function getProgress(e){if("number"==typeof e.getPerceptualProgress())return e.getPerceptualProgress();const t=calculateFrameSimilarity(e,a);return Math.max(100*(t-r)/(1-r),0)}),(function setProgress(e,t,n){return e.setPerceptualProgress(t,n)})),e},calculateSpeedIndexes:function calculateSpeedIndexes(e,t){const n="number"==typeof e[0].getProgress(),a="number"==typeof e[0].getPerceptualProgress(),r=n?"getProgress":"getPerceptualProgress",o=t.startTs;let i,s;for(let t=0;t<e.length&&!s;t++)e[t][r]()>0&&(s=e[t].getTimeStamp())
;for(let t=0;t<e.length&&!i;t++)e[t][r]()>=100&&(i=e[t].getTimeStamp());let c=e[0].getTimeStamp(),l=e[0].getProgress(),u=e[0].getPerceptualProgress(),d=s-o,m=s-o;return e.forEach((function(e){if(e.getTimeStamp()>s){const t=e.getTimeStamp()-c;d+=t*(1-l),m+=t*(1-u)}c=e.getTimeStamp(),l=e.getProgress()/100,u=e.getPerceptualProgress()/100})),d=n?d:void 0,m=a?m:void 0,{firstPaintTs:s,visuallyCompleteTs:i,speedIndex:d,perceptualSpeedIndex:m}}};const Qh=Kh,ef=Xh;const tf={All:"all",pSI:"perceptualSpeedIndex",SI:"speedIndex"};var lib=function(e,t){const n=t&&t.include||tf.All;if(!Object.keys(tf).some((e=>tf[e]===n)))throw new Error(`Unrecognized include option: ${n}`);return Qh.extractFramesFromTimeline(e,t).then((function(e){const a=e.frames;return n!==tf.All&&n!==tf.SI||ef.calculateVisualProgress(a,t),n!==tf.All&&n!==tf.pSI||ef.calculatePerceptualProgress(a,t),function calculateValues(e,t){
const n=ef.calculateSpeedIndexes(e,t),a=Math.floor(t.endTs-t.startTs),r=Math.floor(n.firstPaintTs-t.startTs),o=Math.floor(n.visuallyCompleteTs-t.startTs);return{beginning:t.startTs,end:t.endTs,frames:e,first:r,complete:o,duration:a,speedIndex:n.speedIndex,perceptualSpeedIndex:n.perceptualSpeedIndex}}(a,e)}))};const nf=makeComputedArtifact(class Speedline{static async compute_(e,t){return co.request(e,t).then((t=>{const n=e.traceEvents.slice(),a=t.timestamps.timeOrigin;return lib(n,{timeOrigin:a,fastMode:!0,include:"speedIndex"})})).catch((e=>{if(/No screenshots found in trace/.test(e.message))throw new LighthouseError(LighthouseError.errors.NO_SCREENSHOTS);throw e})).then((e=>{if(0===e.frames.length)throw new LighthouseError(LighthouseError.errors.NO_SPEEDLINE_FRAMES);if(0===e.speedIndex)throw new LighthouseError(LighthouseError.errors.SPEEDINDEX_OF_ZERO);return e}))}},null);const af=makeComputedArtifact(class FirstContentfulPaintAllFrames extends NavigationMetric{
static computeSimulatedMetric(){throw new Error("FCP All Frames not implemented in lantern")}static async computeObservedMetric(e){const{processedNavigation:t}=e;return{timing:t.timings.firstContentfulPaintAllFrames,timestamp:t.timestamps.firstContentfulPaintAllFrames}}},["devtoolsLog","gatherContext","settings","simulator","trace","URL"]);const rf=makeComputedArtifact(class FirstMeaningfulPaint$1 extends NavigationMetric{static computeSimulatedMetric(e,t){const n=NavigationMetric.getMetricComputationInput(e);return Od.request(n,t)}static async computeObservedMetric(e){const{processedNavigation:t}=e;if(void 0===t.timings.firstMeaningfulPaint)throw new LighthouseError(LighthouseError.errors.NO_FMP);return{timing:t.timings.firstMeaningfulPaint,timestamp:t.timestamps.firstMeaningfulPaint}}},["devtoolsLog","gatherContext","settings","simulator","trace","URL"]);class LanternLargestContentfulPaint extends LanternMetric{static get COEFFICIENTS(){return{intercept:0,optimistic:.5,pessimistic:.5
}}static isNotLowPriorityImageNode(e){if("network"!==e.type)return!0;const t="Image"===e.record.resourceType,n="Low"===e.record.priority||"VeryLow"===e.record.priority;return!t||!n}static getOptimisticGraph(e,t){const n=t.timestamps.largestContentfulPaint;if(!n)throw new LighthouseError(LighthouseError.errors.NO_LCP);return Pd.getFirstPaintBasedGraph(e,n,LanternLargestContentfulPaint.isNotLowPriorityImageNode)}static getPessimisticGraph(e,t){const n=t.timestamps.largestContentfulPaint;if(!n)throw new LighthouseError(LighthouseError.errors.NO_LCP);return Pd.getFirstPaintBasedGraph(e,n,(e=>!0),(e=>e.didPerformLayout()))}static getEstimateFromSimulation(e){const t=Array.from(e.nodeTimings.entries()).filter((e=>LanternLargestContentfulPaint.isNotLowPriorityImageNode(e[0]))).map((e=>e[1].endTime));return{timeInMs:Math.max(...t),nodeTimings:e.nodeTimings}}static async compute_(e,t){const n=await Pd.request(e,t),a=await this.computeMetricWithGraphs(e,t)
;return a.timing=Math.max(a.timing,n.timing),a}}const of=makeComputedArtifact(LanternLargestContentfulPaint,["devtoolsLog","gatherContext","settings","simulator","trace","URL"]);const sf=makeComputedArtifact(class LargestContentfulPaint$1 extends NavigationMetric{static computeSimulatedMetric(e,t){const n=NavigationMetric.getMetricComputationInput(e);return of.request(n,t)}static async computeObservedMetric(e){const{processedNavigation:t}=e;if(void 0===t.timings.largestContentfulPaint)throw new LighthouseError(LighthouseError.errors.NO_LCP);return{timing:t.timings.largestContentfulPaint,timestamp:t.timestamps.largestContentfulPaint}}},["devtoolsLog","gatherContext","settings","simulator","trace","URL"]);const cf=makeComputedArtifact(class LargestContentfulPaintAllFrames extends NavigationMetric{static async computeSimulatedMetric(){throw new Error("LCP All Frames not implemented in lantern")}static async computeObservedMetric(e){const{processedNavigation:t}=e
;if(void 0===t.timings.largestContentfulPaintAllFrames)throw new LighthouseError(LighthouseError.errors.NO_LCP_ALL_FRAMES);return{timing:t.timings.largestContentfulPaintAllFrames,timestamp:t.timestamps.largestContentfulPaintAllFrames}}},["devtoolsLog","gatherContext","settings","simulator","trace","URL"]);class CumulativeLayoutShift$1{static getLayoutShiftEvents(e){const t=[];let n=!0;for(const a of e)if("LayoutShift"===a.name&&a.args.data&&void 0!==a.args.data.is_main_frame){if(void 0===a.args.data.weighted_score_delta)throw new Error("CLS missing weighted_score_delta");if(a.args.data.had_recent_input){if(!n)continue}else n=!1;t.push({ts:a.ts,isMainFrame:a.args.data.is_main_frame,weightedScore:a.args.data.weighted_score_delta})}return t}static calculate(e){let t=0,n=0,a=Number.NEGATIVE_INFINITY,r=Number.NEGATIVE_INFINITY;for(const o of e)(o.ts-a>5e6||o.ts-r>1e6)&&(a=o.ts,n=0),r=o.ts,n+=o.weightedScore,t=Math.max(t,n);return t}static calculateTotalCumulativeLayoutShift(e){
return e.reduce(((e,t)=>e+t.weightedScore),0)}static async compute_(e,t){const n=await co.request(e,t),a=CumulativeLayoutShift$1.getLayoutShiftEvents(n.frameTreeEvents),r=a.filter((e=>e.isMainFrame)),o=CumulativeLayoutShift$1.calculateTotalCumulativeLayoutShift(r);return{cumulativeLayoutShift:CumulativeLayoutShift$1.calculate(a),cumulativeLayoutShiftMainFrame:CumulativeLayoutShift$1.calculate(r),totalCumulativeLayoutShift:o}}}const lf=makeComputedArtifact(CumulativeLayoutShift$1,null);class LanternSpeedIndex extends LanternMetric{static get COEFFICIENTS(){return{intercept:-250,optimistic:1.4,pessimistic:.65}}static getScaledCoefficients(e){const t=this.COEFFICIENTS,n=Gr.mobileSlow4G.rttMs-30,a=Math.max((e-30)/n,0);return{intercept:t.intercept*a,optimistic:.5+(t.optimistic-.5)*a,pessimistic:.5+(t.pessimistic-.5)*a}}static getOptimisticGraph(e){return e}static getPessimisticGraph(e){return e}static getEstimateFromSimulation(e,t){if(!t.fcpResult)throw new Error("missing fcpResult")
;if(!t.speedline)throw new Error("missing speedline");const n=t.fcpResult.pessimisticEstimate.timeInMs;return{timeInMs:t.optimistic?t.speedline.speedIndex:LanternSpeedIndex.computeLayoutBasedSpeedIndex(e.nodeTimings,n),nodeTimings:e.nodeTimings}}static async compute_(e,t){const n=await nf.request(e.trace,t),a=await Pd.request(e,t),r=await this.computeMetricWithGraphs(e,t,{speedline:n,fcpResult:a});return r.timing=Math.max(r.timing,a.timing),r}static computeLayoutBasedSpeedIndex(e,t){const n=[];for(const[t,a]of e.entries())if(t.type===BaseNode.TYPES.CPU&&t.childEvents.some((e=>"Layout"===e.name))){const e=Math.max(Math.log2(a.endTime-a.startTime),0);n.push({time:a.endTime,weight:e})}const a=n.map((e=>e.weight*Math.max(e.time,t))).reduce(((e,t)=>e+t),0),r=n.map((e=>e.weight)).reduce(((e,t)=>e+t),0);return r?a/r:t}}const uf=makeComputedArtifact(LanternSpeedIndex,["devtoolsLog","gatherContext","settings","simulator","trace","URL"])
;const df=makeComputedArtifact(class SpeedIndex$1 extends NavigationMetric{static computeSimulatedMetric(e,t){const n=NavigationMetric.getMetricComputationInput(e);return uf.request(n,t)}static async computeObservedMetric(e,t){const n=await nf.request(e.trace,t),a=Math.round(n.speedIndex),r=1e3*(a+n.beginning);return Promise.resolve({timing:a,timestamp:r})}},["devtoolsLog","gatherContext","settings","simulator","trace","URL"]);class LanternMaxPotentialFID extends LanternMetric{static get COEFFICIENTS(){return{intercept:0,optimistic:.5,pessimistic:.5}}static getOptimisticGraph(e){return e}static getPessimisticGraph(e){return e}static getEstimateFromSimulation(e,t){if(!t.fcpResult)throw new Error("missing fcpResult");const n=t.optimistic?t.fcpResult.pessimisticEstimate.timeInMs:t.fcpResult.optimisticEstimate.timeInMs,a=LanternMaxPotentialFID.getTimingsAfterFCP(e.nodeTimings,n);return{timeInMs:Math.max(...a.map((e=>e.duration)),16),nodeTimings:e.nodeTimings}}static async compute_(e,t){
const n=await Pd.request(e,t);return super.computeMetricWithGraphs(e,t,{fcpResult:n})}static getTimingsAfterFCP(e,t){return Array.from(e.entries()).filter((([e,n])=>e.type===BaseNode.TYPES.CPU&&n.endTime>t)).map((([e,t])=>t))}}const mf=makeComputedArtifact(LanternMaxPotentialFID,["devtoolsLog","gatherContext","settings","simulator","trace","URL"]);const pf=makeComputedArtifact(class MaxPotentialFID$1 extends NavigationMetric{static computeSimulatedMetric(e,t){const n=NavigationMetric.getMetricComputationInput(e);return mf.request(n,t)}static computeObservedMetric(e){const{firstContentfulPaint:t}=e.processedNavigation.timings,n=TraceProcessor.getMainThreadTopLevelEvents(e.processedTrace,t).filter((e=>e.duration>=1));return Promise.resolve({timing:Math.max(...n.map((e=>e.duration)),16)})}},["devtoolsLog","gatherContext","settings","simulator","trace","URL"]);function calculateSumOfBlockingTime(e,t,n){if(n<=t)return 0;let a=0;for(const r of e){if(r.duration<50)continue;if(r.end<t)continue
;if(r.start>n)continue;const e=Math.max(r.start,t),o=Math.min(r.end,n)-e;o<50||(a+=o-50)}return a}class LanternTotalBlockingTime extends LanternMetric{static get COEFFICIENTS(){return{intercept:0,optimistic:.5,pessimistic:.5}}static getOptimisticGraph(e){return e}static getPessimisticGraph(e){return e}static getEstimateFromSimulation(e,t){if(!t.fcpResult)throw new Error("missing fcpResult");if(!t.interactiveResult)throw new Error("missing interactiveResult");const n=t.optimistic?t.fcpResult.pessimisticEstimate.timeInMs:t.fcpResult.optimisticEstimate.timeInMs,a=t.optimistic?t.interactiveResult.optimisticEstimate.timeInMs:t.interactiveResult.pessimisticEstimate.timeInMs;return{timeInMs:calculateSumOfBlockingTime(LanternTotalBlockingTime.getTopLevelEvents(e.nodeTimings,50),n,a),nodeTimings:e.nodeTimings}}static async compute_(e,t){const n=await Pd.request(e,t),a=await Bd.request(e,t);return this.computeMetricWithGraphs(e,t,{fcpResult:n,interactiveResult:a})}static getTopLevelEvents(e,t){
const n=[];for(const[a,r]of e.entries())a.type===BaseNode.TYPES.CPU&&(r.duration<t||n.push({start:r.startTime,end:r.endTime,duration:r.duration}));return n}}const gf=makeComputedArtifact(LanternTotalBlockingTime,["devtoolsLog","gatherContext","settings","simulator","trace","URL"]);const hf=makeComputedArtifact(class TotalBlockingTime$1 extends Metric{static computeSimulatedMetric(e,t){const n=Metric.getMetricComputationInput(e);return gf.request(n,t)}static async computeObservedMetric(e,t){const n=TraceProcessor.getMainThreadTopLevelEvents(e.processedTrace);if(e.processedNavigation){const{firstContentfulPaint:a}=e.processedNavigation.timings,r=Metric.getMetricComputationInput(e);return{timing:calculateSumOfBlockingTime(n,a,(await cm.request(r,t)).timing)}}return{timing:calculateSumOfBlockingTime(n,0,e.processedTrace.timestamps.traceEnd)}}},["devtoolsLog","gatherContext","settings","simulator","trace","URL"]);class TimingSummary{static async summarize(e,t,n,a,r,o){const i={trace:e,
devtoolsLog:t,gatherContext:n,settings:a,URL:r},requestOrUndefined=(e,t)=>e.request(t,o).catch((e=>{})),s=await co.request(e,o),c=await requestOrUndefined(Dc,e),l=await nf.request(e,o),u=await requestOrUndefined(gm,i),d=await requestOrUndefined(af,i),m=await requestOrUndefined(rf,i),p=await requestOrUndefined(sf,i),h=await requestOrUndefined(cf,i),f=await requestOrUndefined(cm,i),y=await requestOrUndefined(lf,e),b=await requestOrUndefined(pf,i),v=await requestOrUndefined(df,i),w=await requestOrUndefined(hf,i),{cumulativeLayoutShift:D,cumulativeLayoutShiftMainFrame:E,totalCumulativeLayoutShift:T}=y||{};return{metrics:{firstContentfulPaint:u?.timing,firstContentfulPaintTs:u?.timestamp,firstContentfulPaintAllFrames:d?.timing,firstContentfulPaintAllFramesTs:d?.timestamp,firstMeaningfulPaint:m?.timing,firstMeaningfulPaintTs:m?.timestamp,largestContentfulPaint:p?.timing,largestContentfulPaintTs:p?.timestamp,largestContentfulPaintAllFrames:h?.timing,
largestContentfulPaintAllFramesTs:h?.timestamp,interactive:f?.timing,interactiveTs:f?.timestamp,speedIndex:v?.timing,speedIndexTs:v?.timestamp,totalBlockingTime:w?.timing,maxPotentialFID:b?.timing,cumulativeLayoutShift:D,cumulativeLayoutShiftMainFrame:E,totalCumulativeLayoutShift:T,observedTimeOrigin:s.timings.timeOrigin,observedTimeOriginTs:s.timestamps.timeOrigin,observedNavigationStart:c?.timings.timeOrigin,observedNavigationStartTs:c?.timestamps.timeOrigin,observedFirstPaint:c?.timings.firstPaint,observedFirstPaintTs:c?.timestamps.firstPaint,observedFirstContentfulPaint:c?.timings.firstContentfulPaint,observedFirstContentfulPaintTs:c?.timestamps.firstContentfulPaint,observedFirstContentfulPaintAllFrames:c?.timings.firstContentfulPaintAllFrames,observedFirstContentfulPaintAllFramesTs:c?.timestamps.firstContentfulPaintAllFrames,observedFirstMeaningfulPaint:c?.timings.firstMeaningfulPaint,observedFirstMeaningfulPaintTs:c?.timestamps.firstMeaningfulPaint,
observedLargestContentfulPaint:c?.timings.largestContentfulPaint,observedLargestContentfulPaintTs:c?.timestamps.largestContentfulPaint,observedLargestContentfulPaintAllFrames:c?.timings.largestContentfulPaintAllFrames,observedLargestContentfulPaintAllFramesTs:c?.timestamps.largestContentfulPaintAllFrames,observedTraceEnd:s.timings.traceEnd,observedTraceEndTs:s.timestamps.traceEnd,observedLoad:c?.timings.load,observedLoadTs:c?.timestamps.load,observedDomContentLoaded:c?.timings.domContentLoaded,observedDomContentLoadedTs:c?.timestamps.domContentLoaded,observedCumulativeLayoutShift:D,observedCumulativeLayoutShiftMainFrame:E,observedTotalCumulativeLayoutShift:T,observedFirstVisualChange:l.first,observedFirstVisualChangeTs:1e3*(l.first+l.beginning),observedLastVisualChange:l.complete,observedLastVisualChangeTs:1e3*(l.complete+l.beginning),observedSpeedIndex:l.speedIndex,observedSpeedIndexTs:1e3*(l.speedIndex+l.beginning)},debugInfo:{lcpInvalidated:!!c?.lcpInvalidated}}}
static async compute_(e,t){return TimingSummary.summarize(e.trace,e.devtoolsLog,e.gatherContext,e.settings,e.URL,t)}}const ff=makeComputedArtifact(TimingSummary,["devtoolsLog","gatherContext","settings","trace","URL"]),yf=new Set(["cumulativeLayoutShift","cumulativeLayoutShiftMainFrame","totalCumulativeLayoutShift","observedCumulativeLayoutShift","observedCumulativeLayoutShiftMainFrame","observedTotalCumulativeLayoutShift"]);var bf=Object.freeze({__proto__:null,default:class Metrics extends Audit{static get meta(){return{id:"metrics",scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,title:"Metrics",description:"Collects all available metrics.",supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static async audit(e,t){const n=e.GatherContext,a=e.traces[Audit.DEFAULT_PASS],r=e.devtoolsLogs[Audit.DEFAULT_PASS],o=e.URL,i=await ff.request({trace:a,devtoolsLog:r,gatherContext:n,settings:t.settings,URL:o},t),s=i.metrics,c=i.debugInfo
;for(const[e,t]of Object.entries(s)){const n=e;"number"!=typeof t||yf.has(n)||(s[n]=Math.round(t))}const l={type:"debugdata",items:[s,c]};return{score:1,numericValue:s.interactive||0,numericUnit:"millisecond",details:l}}}});const vf={description:"Cumulative Layout Shift measures the movement of visible elements within the viewport. [Learn more about the Cumulative Layout Shift metric](https://web.dev/cls/)."},wf=createIcuMessageFn("core/audits/metrics/cumulative-layout-shift.js",vf);var Df=Object.freeze({__proto__:null,default:class CumulativeLayoutShift extends Audit{static get meta(){return{id:"cumulative-layout-shift",title:wf(Dr.cumulativeLayoutShiftMetric),description:wf(vf.description),scoreDisplayMode:Audit.SCORING_MODES.NUMERIC,requiredArtifacts:["traces"]}}static get defaultOptions(){return{p10:.1,median:.25}}static async audit(e,t){const n=e.traces[Audit.DEFAULT_PASS],{cumulativeLayoutShift:a,...r}=await lf.request(n,t),o={type:"debugdata",items:[r]};return{
score:Audit.computeLogNormalScore({p10:t.options.p10,median:t.options.median},a),numericValue:a,numericUnit:"unitless",displayValue:a.toLocaleString(t.settings.locale),details:o}}},UIStrings:vf});const Ef={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/inp/)."},Tf=createIcuMessageFn("core/audits/metrics/experimental-interaction-to-next-paint.js",Ef);class ExperimentalInteractionToNextPaint extends Audit{static get meta(){return{id:"experimental-interaction-to-next-paint",title:Tf(Dr.interactionToNextPaint),description:Tf(Ef.description),scoreDisplayMode:Audit.SCORING_MODES.NUMERIC,supportedModes:["timespan"],requiredArtifacts:["traces"]}}static get defaultOptions(){return{p10:200,median:500}}static async audit(e,t){const{settings:n}=t;if("simulate"===n.throttlingMethod)return{score:null,notApplicable:!0};const a={
trace:e.traces[Audit.DEFAULT_PASS],settings:n},r=await Cc.request(a,t);if(null===r)return{score:null,notApplicable:!0};const o="FallbackTiming"===r.name?r.duration:r.args.data.duration;return{score:Audit.computeLogNormalScore({p10:t.options.p10,median:t.options.median},o),numericValue:o,numericUnit:"millisecond",displayValue:Tf(Dr.ms,{timeInMs:o})}}}var Sf=Object.freeze({__proto__:null,default:ExperimentalInteractionToNextPaint,UIStrings:Ef});const Cf=Gr.mobileRegular3G;var _f=Object.freeze({__proto__:null,default:class FirstContentfulPaint3G extends Audit{static get meta(){return{id:"first-contentful-paint-3g",title:"First Contentful Paint (3G)",description:"First Contentful Paint 3G marks the time at which the first text or image is painted while on a 3G network. [Learn more about the First Contentful Paint (3G) metric](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint).",scoreDisplayMode:Audit.SCORING_MODES.NUMERIC,supportedModes:["navigation"],
requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static get defaultOptions(){return{p10:2700,median:4500}}static async audit(e,t){const n=e.GatherContext,a={trace:e.traces[Audit.DEFAULT_PASS],devtoolsLog:e.devtoolsLogs[Audit.DEFAULT_PASS],gatherContext:n,settings:{...t.settings,throttlingMethod:"simulate",throttling:Cf},URL:e.URL},r=await gm.request(a,t);return{score:Audit.computeLogNormalScore({p10:t.options.p10,median:t.options.median},r.timing),numericValue:r.timing,numericUnit:"millisecond",displayValue:`${r.timing} ms`}}}});const Af={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/)."},kf=createIcuMessageFn("core/audits/metrics/first-contentful-paint.js",Af);var Ff=Object.freeze({__proto__:null,default:class FirstContentfulPaint extends Audit{static get meta(){return{
id:"first-contentful-paint",title:kf(Dr.firstContentfulPaintMetric),description:kf(Af.description),scoreDisplayMode:Audit.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(e,t){const n={trace:e.traces[Audit.DEFAULT_PASS],devtoolsLog:e.devtoolsLogs[Audit.DEFAULT_PASS],gatherContext:e.GatherContext,settings:t.settings,URL:e.URL},a=await gm.request(n,t),r=t.options[t.settings.formFactor];return{score:Audit.computeLogNormalScore(r.scoring,a.timing),numericValue:a.timing,numericUnit:"millisecond",displayValue:kf(Dr.seconds,{timeInMs:a.timing})}}},UIStrings:Af});const Rf={
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/)."},xf=createIcuMessageFn("core/audits/metrics/first-meaningful-paint.js",Rf);var If=Object.freeze({__proto__:null,default:class FirstMeaningfulPaint extends Audit{static get meta(){return{id:"first-meaningful-paint",title:xf(Dr.firstMeaningfulPaintMetric),description:xf(Rf.description),scoreDisplayMode:Audit.SCORING_MODES.NUMERIC,supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static get defaultOptions(){return{mobile:{scoring:{p10:2336,median:4e3}},desktop:{scoring:{p10:934,median:1600}}}}static async audit(e,t){const n={trace:e.traces[Audit.DEFAULT_PASS],devtoolsLog:e.devtoolsLogs[Audit.DEFAULT_PASS],gatherContext:e.GatherContext,settings:t.settings,URL:e.URL
},a=await rf.request(n,t),r=t.options[t.settings.formFactor];return{score:Audit.computeLogNormalScore(r.scoring,a.timing),numericValue:a.timing,numericUnit:"millisecond",displayValue:xf(Dr.seconds,{timeInMs:a.timing})}}},UIStrings:Rf});const Nf={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/)."},Lf=createIcuMessageFn("core/audits/metrics/interactive.js",Nf);var Mf=Object.freeze({__proto__:null,default:class InteractiveMetric extends Audit{static get meta(){return{id:"interactive",title:Lf(Dr.interactiveMetric),description:Lf(Nf.description),scoreDisplayMode:Audit.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(e,t){const n={trace:e.traces[Audit.DEFAULT_PASS],devtoolsLog:e.devtoolsLogs[Audit.DEFAULT_PASS],gatherContext:e.GatherContext,settings:t.settings,URL:e.URL},a=(await cm.request(n,t)).timing,r=t.options[t.settings.formFactor];return{score:Audit.computeLogNormalScore(r.scoring,a),numericValue:a,numericUnit:"millisecond",displayValue:Lf(Dr.seconds,{timeInMs:a})}}},UIStrings:Nf});const Pf={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/)"},Of=createIcuMessageFn("core/audits/metrics/largest-contentful-paint.js",Pf);var Bf=Object.freeze({__proto__:null,default:class LargestContentfulPaint extends Audit{static get meta(){return{id:"largest-contentful-paint",title:Of(Dr.largestContentfulPaintMetric),description:Of(Pf.description),scoreDisplayMode:Audit.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(e,t){const n={trace:e.traces[Audit.DEFAULT_PASS],devtoolsLog:e.devtoolsLogs[Audit.DEFAULT_PASS],gatherContext:e.GatherContext,settings:t.settings,URL:e.URL},a=await sf.request(n,t),r=t.options[t.settings.formFactor];return{score:Audit.computeLogNormalScore(r.scoring,a.timing),numericValue:a.timing,numericUnit:"millisecond",displayValue:Of(Dr.seconds,{timeInMs:a.timing})}}},UIStrings:Pf});const Uf={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/)."},jf=createIcuMessageFn("core/audits/metrics/max-potential-fid.js",Uf)
;var zf=Object.freeze({__proto__:null,default:class MaxPotentialFID extends Audit{static get meta(){return{id:"max-potential-fid",title:jf(Dr.maxPotentialFIDMetric),description:jf(Uf.description),scoreDisplayMode:Audit.SCORING_MODES.NUMERIC,supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL"]}}static get defaultOptions(){return{p10:130,median:250}}static async audit(e,t){const n={trace:e.traces[Audit.DEFAULT_PASS],devtoolsLog:e.devtoolsLogs[Audit.DEFAULT_PASS],gatherContext:e.GatherContext,settings:t.settings,URL:e.URL},a=await pf.request(n,t);return{score:Audit.computeLogNormalScore({p10:t.options.p10,median:t.options.median},a.timing),numericValue:a.timing,numericUnit:"millisecond",displayValue:jf(Dr.ms,{timeInMs:a.timing})}}},UIStrings:Uf});const qf={
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/)."},$f=createIcuMessageFn("core/audits/metrics/speed-index.js",qf);var Vf=Object.freeze({__proto__:null,default:class SpeedIndex extends Audit{static get meta(){return{id:"speed-index",title:$f(Dr.speedIndexMetric),description:$f(qf.description),scoreDisplayMode:Audit.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(e,t){const n={trace:e.traces[Audit.DEFAULT_PASS],devtoolsLog:e.devtoolsLogs[Audit.DEFAULT_PASS],gatherContext:e.GatherContext,settings:t.settings,URL:e.URL},a=await df.request(n,t),r=t.options[t.settings.formFactor];return{
score:Audit.computeLogNormalScore(r.scoring,a.timing),numericValue:a.timing,numericUnit:"millisecond",displayValue:$f(Dr.seconds,{timeInMs:a.timing})}}},UIStrings:qf});const Wf={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/)."},Hf=createIcuMessageFn("core/audits/metrics/total-blocking-time.js",Wf);var Gf=Object.freeze({__proto__:null,default:class TotalBlockingTime extends Audit{static get meta(){return{id:"total-blocking-time",title:Hf(Dr.totalBlockingTimeMetric),description:Hf(Wf.description),scoreDisplayMode:Audit.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(e,t){
const n=e.traces[Audit.DEFAULT_PASS],a=e.devtoolsLogs[Audit.DEFAULT_PASS],r=e.GatherContext,o={trace:n,devtoolsLog:a,gatherContext:r,settings:t.settings,URL:e.URL};if("timespan"===r.gatherMode&&"simulate"===t.settings.throttlingMethod)return{score:1,notApplicable:!0};const i=await hf.request(o,t),s=t.options[t.settings.formFactor];return{score:Audit.computeLogNormalScore(s.scoring,i.timing),numericValue:i.timing,numericUnit:"millisecond",displayValue:Hf(Dr.ms,{timeInMs:i.timing})}}},UIStrings:Wf});var Yf=Object.freeze({__proto__:null,default:class NetworkRequests extends Audit{static get meta(){return{id:"network-requests",scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,title:"Network Requests",description:"Lists the network requests that were made during page load.",requiredArtifacts:["devtoolsLogs","URL","GatherContext"]}}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=await go.request(n,t),r=a.reduce(((e,t)=>Math.min(e,t.rendererStartTime)),1/0);let o
;if("navigation"===e.GatherContext.gatherMode){const a=await sc.request({devtoolsLog:n,URL:e.URL},t);o=a.frameId}const normalizeTime=e=>e<r||!Number.isFinite(e)?void 0:e-r,i=a.map((e=>{const t=e.lrStatistics?.endTimeDeltaMs,n=e.lrStatistics?.TCPMs,a=e.lrStatistics?.requestMs,r=e.lrStatistics?.responseMs,i=e.isLinkPreload||void 0,s=o&&e.frameId===o||void 0;return{url:UrlUtils.elideDataURI(e.url),protocol:e.protocol,rendererStartTime:normalizeTime(e.rendererStartTime),networkRequestTime:normalizeTime(e.networkRequestTime),networkEndTime:normalizeTime(e.networkEndTime),finished:e.finished,transferSize:e.transferSize,resourceSize:e.resourceSize,statusCode:e.statusCode,mimeType:e.mimeType,resourceType:e.resourceType,priority:e.priority,isLinkPreload:i,experimentalFromMainFrame:s,lrEndTimeDeltaMs:t,lrTCPMs:n,lrRequestMs:a,lrResponseMs:r}})),s=Audit.makeTableDetails([{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:"resourceType",valueType:"text",label:"Resource Type"}],i),c=Number.isFinite(r)?1e3*r:void 0;return s.debugData={type:"debugdata",networkStartTimeTs:c},{score:1,details:s}}}});const Kf={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/)."},Jf=createIcuMessageFn("core/audits/network-rtt.js",Kf)
;var Zf=Object.freeze({__proto__:null,default:class NetworkRTT extends Audit{static get meta(){return{id:"network-rtt",scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,title:Jf(Kf.title),description:Jf(Kf.description),requiredArtifacts:["devtoolsLogs"]}}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS];if(!(await go.request(n,t)).length)return{score:1,notApplicable:!0};const a=await Vo.request(n,t);let r=0;const o=a.rtt,i=[];for(const[e,t]of a.additionalRttByOrigin.entries()){if(!e.startsWith("http"))continue;const n=t+o;i.push({origin:e,rtt:n}),r=Number.isFinite(n)?Math.max(n,r):r}i.sort(((e,t)=>t.rtt-e.rtt));const s=[{key:"origin",valueType:"text",label:Jf(Dr.columnURL)},{key:"rtt",valueType:"ms",granularity:1,label:Jf(Dr.columnTimeSpent)}],c=Audit.makeTableDetails(s,i);return{score:1,numericValue:r,numericUnit:"millisecond",displayValue:Jf(Dr.ms,{timeInMs:r}),details:c}}},UIStrings:Kf});const Xf={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)."},Qf=createIcuMessageFn("core/audits/network-server-latency.js",Xf);var ey=Object.freeze({__proto__:null,default:class NetworkServerLatency extends Audit{static get meta(){return{id:"network-server-latency",scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,title:Qf(Xf.title),description:Qf(Xf.description),requiredArtifacts:["devtoolsLogs"]}}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS];if(!(await go.request(n,t)).length)return{score:1,notApplicable:!0};const a=await Vo.request(n,t);let r=0;const o=[];for(const[e,t]of a.serverResponseTimeByOrigin.entries())e.startsWith("http")&&(r=Math.max(t,r),o.push({origin:e,serverResponseTime:t}))
;o.sort(((e,t)=>t.serverResponseTime-e.serverResponseTime));const i=[{key:"origin",valueType:"text",label:Qf(Dr.columnURL)},{key:"serverResponseTime",valueType:"ms",granularity:1,label:Qf(Dr.columnTimeSpent)}],s=Audit.makeTableDetails(i,o);return{score:Math.max(1-r/500,0),numericValue:r,numericUnit:"millisecond",displayValue:Qf(Dr.ms,{timeInMs:r}),details:s}}},UIStrings:Xf});const ty={title:"Avoids `unload` event listeners",failureTitle:"Registers an `unload` listener",description:"The `unload` event does not fire reliably and listening for it can prevent browser optimizations like the Back-Forward Cache. Use `pagehide` or `visibilitychange` events instead. [Learn more about unload event listeners](https://web.dev/bfcache/#never-use-the-unload-event)"},ny=createIcuMessageFn("core/audits/no-unload-listeners.js",ty);var ay=Object.freeze({__proto__:null,default:class NoUnloadListeners extends Audit{static get meta(){return{id:"no-unload-listeners",title:ny(ty.title),
failureTitle:ny(ty.failureTitle),description:ny(ty.description),requiredArtifacts:["GlobalListeners","SourceMaps","Scripts"]}}static async audit(e,t){const n=e.GlobalListeners.filter((e=>"unload"===e.type));if(!n.length)return{score:1};const a=await Hd.request(e,t),r=[{key:"source",valueType:"source-location",label:ny(Dr.columnSource)}],o=n.map((t=>{const{lineNumber:n,columnNumber:r}=t,o=e.Scripts.find((e=>e.scriptId===t.scriptId));if(!o)return{source:{type:"url",value:`(unknown):${n}:${r}`}};const i=a.find((e=>e.script.scriptId===o.scriptId));return{source:Audit.makeSourceLocation(o.url,n,r,i)}}));return{score:0,details:Audit.makeTableDetails(r,o)}}},UIStrings:ty});const ry={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,\n =1 {# animated element found}\n other {# animated elements found}\n }",unsupportedCSSProperty:"{propertyCount, plural,\n =1 {Unsupported CSS Property: {properties}}\n other {Unsupported CSS Properties: {properties}}\n }",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"},oy=createIcuMessageFn("core/audits/non-composited-animations.js",ry),iy=[{flag:8192,text:ry.unsupportedCSSProperty},{flag:2048,text:ry.transformDependsBoxSize},{flag:4096,text:ry.filterMayMovePixels},{flag:16,text:ry.nonReplaceCompositeMode},{flag:64,text:ry.incompatibleAnimations},{flag:8,text:ry.unsupportedTimingParameters}];function getActionableFailureReasons(e,t){
return iy.filter((t=>e&t.flag)).map((e=>e.text===ry.unsupportedCSSProperty?oy(e.text,{propertyCount:t.length,properties:t.join(", ")}):oy(e.text)))}var sy=Object.freeze({__proto__:null,default:class NonCompositedAnimations extends Audit{static get meta(){return{id:"non-composited-animations",scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,title:oy(ry.title),description:oy(ry.description),requiredArtifacts:["TraceElements","HostUserAgent"]}}static async audit(e){const t=e.HostUserAgent.match(/Chrome\/(\d+)/);if(!t||Number(t[1])<86)return{score:1,notApplicable:!0};const n=[];let a=!1;e.TraceElements.forEach((e=>{if("animation"!==e.traceEventType)return;const t=e.animations||[],r=new Map;for(const{name:e,failureReasonsMask:n,unsupportedProperties:o}of t){if(!n)continue;const t=getActionableFailureReasons(n,o||[]);for(const n of t){e&&(a=!0);const t=r.get(e)||new Set;t.add(n),r.set(e,t)}}if(!r.size)return;const o=[];for(const[e,t]of r)for(const n of t)o.push({failureReason:n,animation:e})
;n.push({node:Audit.makeNodeItem(e.node),subItems:{type:"subitems",items:o}})}));const r=[{key:"node",valueType:"node",subItemsHeading:{key:"failureReason",valueType:"text"},label:oy(Dr.columnElement)}];a&&r.push({key:null,valueType:"text",subItemsHeading:{key:"animation",valueType:"text"},label:oy(Dr.columnName)});const o=Audit.makeTableDetails(r,n);let i;return n.length>0&&(i=oy(ry.displayValue,{itemCount:n.length})),{score:0===n.length?1:0,notApplicable:0===n.length,details:o,displayValue:i}}},UIStrings:ry}),cy=Object.freeze({__proto__:null,default:{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})}});class ResourceSummary$1{static determineResourceType(e){if(!e.resourceType)return"other";return{Stylesheet:"stylesheet",Image:"image",Media:"media",Font:"font",Script:"script",Document:"document"
}[e.resourceType]||"other"}static summarize(e,t,n,a){const r={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=Budget.getMatchingBudget(n,t.mainDocumentUrl);let i=[];return i=o?.options?.firstPartyHostnames?o.options.firstPartyHostnames:a.firstParty?.domains.map((e=>`*.${e}`))||[`*.${Util.getRootDomain(t.finalDisplayedUrl)}`],e.filter((e=>("other"!==this.determineResourceType(e)||!e.url.endsWith("/favicon.ico"))&&!NetworkRequest.isNonNetworkRequest(e))).forEach((e=>{const t=this.determineResourceType(e);r[t].count++,r[t].resourceSize+=e.resourceSize,r[t].transferSize+=e.transferSize,r.total.count++,
r.total.resourceSize+=e.resourceSize,r.total.transferSize+=e.transferSize;i.some((t=>{const n=new URL(e.url);return t.startsWith("*.")?n.hostname.endsWith(t.slice(2)):n.hostname===t}))||(r["third-party"].count++,r["third-party"].resourceSize+=e.resourceSize,r["third-party"].transferSize+=e.transferSize)})),r}static async compute_(e,t){const n=await go.request(e.devtoolsLog,t),a=await li.request({URL:e.URL,devtoolsLog:e.devtoolsLog},t);return ResourceSummary$1.summarize(n,e.URL,e.budgets,a)}}const ly=makeComputedArtifact(ResourceSummary$1,["URL","devtoolsLog","budgets"]),uy={title:"Performance budget",description:"Keep the quantity and size of network requests under the targets set by the provided performance budget. [Learn more about performance budgets](https://developers.google.com/web/tools/lighthouse/audits/budgets).",requestCountOverBudget:"{count, plural,\n =1 {1 request}\n other {# requests}\n }"},dy=createIcuMessageFn("core/audits/performance-budget.js",uy)
;var my=Object.freeze({__proto__:null,default:class ResourceBudget extends Audit{static get meta(){return{id:"performance-budget",title:dy(uy.title),description:dy(uy.description),scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,supportedModes:["navigation"],requiredArtifacts:["devtoolsLogs","URL"]}}static getRowLabel(e){return{total:Dr.totalResourceType,document:Dr.documentResourceType,script:Dr.scriptResourceType,stylesheet:Dr.stylesheetResourceType,image:Dr.imageResourceType,media:Dr.mediaResourceType,font:Dr.fontResourceType,other:Dr.otherResourceType,"third-party":Dr.thirdPartyResourceType}[e]}static tableItems(e,t){return Object.keys(t).map((n=>{const a=dy(this.getRowLabel(n)),r=t[n].count,o=t[n].transferSize;let i,s;if(e.resourceSizes){const t=e.resourceSizes.find((e=>e.resourceType===n));t&&o>1024*t.budget&&(i=o-1024*t.budget)}if(e.resourceCounts){const t=e.resourceCounts.find((e=>e.resourceType===n));if(t&&r>t.budget){const e=r-t.budget;s=dy(uy.requestCountOverBudget,{count:e
})}}return{resourceType:n,label:a,requestCount:r,transferSize:o,countOverBudget:s,sizeOverBudget:i}})).filter((t=>!(!e.resourceSizes||!e.resourceSizes.some((e=>e.resourceType===t.resourceType)))||!(!e.resourceCounts||!e.resourceCounts.some((e=>e.resourceType===t.resourceType))))).sort(((e,t)=>(t.sizeOverBudget||0)-(e.sizeOverBudget||0)))}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a={devtoolsLog:n,URL:e.URL,budgets:t.settings.budgets},r=await ly.request(a,t),o=await sc.request({URL:e.URL,devtoolsLog:n},t),i=Budget.getMatchingBudget(t.settings.budgets,o.url);if(!i)return{score:0,notApplicable:!0};const s=[{key:"label",valueType:"text",label:dy(Dr.columnResourceType)},{key:"requestCount",valueType:"numeric",label:dy(Dr.columnRequests)},{key:"transferSize",valueType:"bytes",label:dy(Dr.columnTransferSize)},{key:"countOverBudget",valueType:"text",label:""},{key:"sizeOverBudget",valueType:"bytes",label:dy(Dr.columnOverBudget)}];return{
details:Audit.makeTableDetails(s,this.tableItems(i,r)),score:1}}},UIStrings:uy});const py=createIcuMessageFn("core/audits/predictive-perf.js",{});var gy=Object.freeze({__proto__:null,default:class PredictivePerf extends Audit{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:Audit.SCORING_MODES.NUMERIC,supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","GatherContext"]}}static async audit(e,t){const n=e.GatherContext,a={trace:e.traces[Audit.DEFAULT_PASS],devtoolsLog:e.devtoolsLogs[Audit.DEFAULT_PASS],gatherContext:n,settings:{},URL:e.URL},r=await Pd.request(a,t),o=await Od.request(a,t),i=await Bd.request(a,t),s=await uf.request(a,t),c=await of.request(a,t),l={roughEstimateOfFCP:r.timing,optimisticFCP:r.optimisticEstimate.timeInMs,pessimisticFCP:r.pessimisticEstimate.timeInMs,
roughEstimateOfFMP:o.timing,optimisticFMP:o.optimisticEstimate.timeInMs,pessimisticFMP:o.pessimisticEstimate.timeInMs,roughEstimateOfTTI:i.timing,optimisticTTI:i.optimisticEstimate.timeInMs,pessimisticTTI:i.pessimisticEstimate.timeInMs,roughEstimateOfSI:s.timing,optimisticSI:s.optimisticEstimate.timeInMs,pessimisticSI:s.pessimisticEstimate.timeInMs,roughEstimateOfLCP:c.timing,optimisticLCP:c.optimisticEstimate.timeInMs,pessimisticLCP:c.pessimisticEstimate.timeInMs};return{score:Audit.computeLogNormalScore({p10:3651,median:1e4},l.roughEstimateOfTTI),numericValue:l.roughEstimateOfTTI,numericUnit:"millisecond",displayValue:py(Dr.ms,{timeInMs:l.roughEstimateOfTTI}),details:{type:"debugdata",items:[l]}}}}});const hy=/^(optional)$/,fy={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/preload-optional-fonts/)"},yy=createIcuMessageFn("core/audits/preload-fonts.js",fy);class PreloadFontsAudit extends Audit{static get meta(){return{id:"preload-fonts",title:yy(fy.title),failureTitle:yy(fy.failureTitle),description:yy(fy.description),requiredArtifacts:["devtoolsLogs","URL","CSSUsage"]}}static getURLsAttemptedToPreload(e){const t=e.filter((e=>"Font"===e.resourceType)).filter((e=>e.isLinkPreload)).map((e=>e.url));return new Set(t)}static async audit_(e,t){const n=e.devtoolsLogs[this.DEFAULT_PASS],a=await go.request(n,t),r=FontDisplay.findFontDisplayDeclarations(e,hy).passingURLs,o=PreloadFontsAudit.getURLsAttemptedToPreload(a),i=Array.from(r).filter((e=>!o.has(e))).map((e=>({url:e}))),s=[{key:"url",valueType:"url",label:yy(Dr.columnURL)}];return{score:i.length>0?0:1,details:Audit.makeTableDetails(s,i),notApplicable:0===r.size}}static async audit(){
return{score:1,notApplicable:!0}}}var by=Object.freeze({__proto__:null,default:PreloadFontsAudit,UIStrings:fy});const vy={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/optimize-lcp/#optimize-when-the-resource-is-discovered)."},wy=createIcuMessageFn("core/audits/prioritize-lcp-image.js",vy);class PrioritizeLcpImage extends Audit{static get meta(){return{id:"prioritize-lcp-image",title:wy(vy.title),description:wy(vy.description),supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","GatherContext","URL","TraceElements"],scoreDisplayMode:Audit.SCORING_MODES.NUMERIC}}static shouldPreloadRequest(e,t,n){const a=t.redirects?t.redirects.length:0;return!e.isLinkPreload&&(!NetworkRequest.isNonNetworkRequest(e)&&(!(n.length<=a)&&e.frameId===t.frameId))}static findLCPNode(e,t){let n,a
;return e.traverse(((e,r)=>{"network"===e.type&&e.record.url===t&&(n=e,a=r.slice(1).filter((e=>"network"===e.type)))})),{lcpNode:n,path:a}}static getLCPNodeToPreload(e,t,n){if(!n)return{};const{lcpNode:a,path:r}=PrioritizeLcpImage.findLCPNode(t,n);if(!a||!r)return{};return{lcpNodeToPreload:PrioritizeLcpImage.shouldPreloadRequest(a.record,e,r)?a:void 0,initiatorPath:[{url:a.record.url,initiatorType:a.initiatorType},...r.map((e=>({url:e.record.url,initiatorType:e.initiatorType})))]}}static getLcpUrl(e,t){const n=t.largestContentfulPaintEvt;if(!n)return;return e.traceEvents.filter((e=>"LargestImagePaint::Candidate"===e.name&&e.args.frame===n.args.frame&&e.args.data?.DOMNodeId===n.args.data?.nodeId&&e.args.data?.size===n.args.data?.size)).sort(((e,t)=>t.ts-e.ts))[0]?.args.data?.imageUrl}static computeWasteWithGraph(e,t,n,a){if(!t)return{wastedMs:0,results:[]};const r=n.cloneWithRelationships(),o=new Set;for(const e of t.getDependencies())o.add(e.id);let i=null,s=null
;for(const{node:e}of r.traverseGenerator())"network"===e.type&&(e.isMainDocument()?s=e:e.id===t.id&&(i=e));if(!s)throw new Error("Could not find main document node");if(!i)throw new Error("Could not find the LCP node");i.removeAllDependencies(),i.addDependency(s);const c=a.simulate(n,{flexibleOrdering:!0}),l=a.simulate(r,{flexibleOrdering:!0}),u=c.nodeTimings.get(t);if(!u)throw new Error("Impossible - node timings should never be undefined");const d=l.nodeTimings.get(i);if(!d)throw new Error("Impossible - node timings should never be undefined");const m=Array.from(l.nodeTimings.keys()).reduce(((e,t)=>e.set(t.id,t)),new Map);let p=0;for(const e of Array.from(o)){const t=m.get(e);if(!t)throw new Error("Impossible - node should never be undefined");const n=l.nodeTimings.get(t)?.endTime||0;p=Math.max(p,n)}const h=u.endTime-Math.max(d.endTime,p);return{wastedMs:h,results:[{node:Audit.makeNodeItem(e.node),url:t.record.url,wastedMs:h}]}}static async audit(e,t){
const n=e.GatherContext,a=e.traces[PrioritizeLcpImage.DEFAULT_PASS],r=e.devtoolsLogs[PrioritizeLcpImage.DEFAULT_PASS],o=e.URL,i={trace:a,devtoolsLog:r,gatherContext:n,settings:t.settings,URL:o},s=e.TraceElements.find((e=>"largest-contentful-paint"===e.traceEventType));if(!s||"image"!==s.type)return{score:null,notApplicable:!0};const[c,l,u,d]=await Promise.all([Dc.request(a,t),sc.request({devtoolsLog:r,URL:o},t),of.request(i,t),Wo.request({devtoolsLog:r,settings:t.settings},t)]),m=PrioritizeLcpImage.getLcpUrl(a,c),p=u.pessimisticGraph,{lcpNodeToPreload:h,initiatorPath:f}=PrioritizeLcpImage.getLCPNodeToPreload(l,p,m),{results:y,wastedMs:b}=PrioritizeLcpImage.computeWasteWithGraph(s,h,p,d),v=[{key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:wy(Dr.columnURL)},{key:"wastedMs",valueType:"timespanMs",label:wy(Dr.columnWastedMs)}],w=Audit.makeOpportunityDetails(v,y,{overallSavingsMs:b});return f&&(w.debugData={type:"debugdata",initiatorPath:f,pathLength:f.length}),{
score:ByteEfficiencyAudit.scoreForWastedMs(b),numericValue:b,numericUnit:"millisecond",displayValue:b?wy(Dr.displayValueMsSavings,{wastedMs:b}):"",details:w}}}var Dy=Object.freeze({__proto__:null,default:PrioritizeLcpImage,UIStrings:vy});const Ey={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/)."},Ty=createIcuMessageFn("core/audits/redirects.js",Ey);class Redirects extends Audit{static get meta(){return{id:"redirects",title:Ty(Ey.title),description:Ty(Ey.description),scoreDisplayMode:Audit.SCORING_MODES.NUMERIC,supportedModes:["navigation"],requiredArtifacts:["URL","GatherContext","devtoolsLogs","traces"]}}static getDocumentRequestChain(e,t,n){const a=[];for(const e of n.processEvents){if("navigationStart"!==e.name)continue;const n=e.args.data||{};if(!n.documentLoaderURL||!n.isLoadingMainFrame)continue
;let r=t.find((e=>e.url===n.documentLoaderURL));for(;r;)a.push(r),r=r.redirectDestination}return a.length?a:(e.redirects||[]).concat(e)}static async audit(e,t){const n=t.settings,a=e.traces[Audit.DEFAULT_PASS],r=e.devtoolsLogs[Audit.DEFAULT_PASS],o=e.GatherContext,i=await co.request(a,t),s=await go.request(r,t),c=await sc.request({URL:e.URL,devtoolsLog:r},t),l={trace:a,devtoolsLog:r,gatherContext:o,settings:n,URL:e.URL},u=await Bd.request(l,t),d=new Map;for(const[e,t]of u.pessimisticEstimate.nodeTimings.entries())"network"===e.type&&d.set(e.record.url,t);const m=Redirects.getDocumentRequestChain(c,s,i);let p=0;const h=[];for(let e=0;e<m.length&&!(m.length<2);e++){const t=m[e],a=m[e+1]||t,r=d.get(t.url),o=d.get(a.url);if(!r||!o)throw new Error("Could not find redirects in graph");const i=o.startTime-r.startTime,s=a.networkRequestTime-t.networkRequestTime,c="simulate"===n.throttlingMethod?i:s;p+=c,h.push({url:t.url,wastedMs:c})}const f=[{key:"url",valueType:"url",label:Ty(Dr.columnURL)
},{key:"wastedMs",valueType:"timespanMs",label:Ty(Dr.columnTimeSpent)}],y=Audit.makeOpportunityDetails(f,h,{overallSavingsMs:p});return{score:m.length<=2?1:ByteEfficiencyAudit.scoreForWastedMs(p),numericValue:p,numericUnit:"millisecond",displayValue:p?Ty(Dr.displayValueMsSavings,{wastedMs:p}):"",details:y}}}var Sy=Object.freeze({__proto__:null,default:Redirects,UIStrings:Ey});const Cy={title:"Keep request counts low and transfer sizes small",description:"To set budgets for the quantity and size of page resources, add a budget.json file. [Learn more about performance budgets](https://web.dev/use-lighthouse-for-performance-budgets/).",displayValue:"{requestCount, plural, =1 {1 request • {byteCount, number, bytes} KiB} other {# requests • {byteCount, number, bytes} KiB}}"},_y=createIcuMessageFn("core/audits/resource-summary.js",Cy);var Ay=Object.freeze({__proto__:null,default:class ResourceSummary extends Audit{static get meta(){return{id:"resource-summary",title:_y(Cy.title),
description:_y(Cy.description),scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,requiredArtifacts:["devtoolsLogs","URL"]}}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=await ly.request({devtoolsLog:n,URL:e.URL,budgets:t.settings.budgets},t),r=[{key:"label",valueType:"text",label:_y(Dr.columnResourceType)},{key:"requestCount",valueType:"numeric",label:_y(Dr.columnRequests)},{key:"transferSize",valueType:"bytes",label:_y(Dr.columnTransferSize)}],o={total:_y(Dr.totalResourceType),document:_y(Dr.documentResourceType),script:_y(Dr.scriptResourceType),stylesheet:_y(Dr.stylesheetResourceType),image:_y(Dr.imageResourceType),media:_y(Dr.mediaResourceType),font:_y(Dr.fontResourceType),other:_y(Dr.otherResourceType),"third-party":_y(Dr.thirdPartyResourceType)},i=Object.keys(a).map((e=>({resourceType:e,label:o[e],requestCount:a[e].count,transferSize:a[e].transferSize
}))),s=i.find((e=>"third-party"===e.resourceType))||[],c=i.filter((e=>"third-party"!==e.resourceType)).sort(((e,t)=>t.transferSize-e.transferSize)).concat(s);return{details:Audit.makeTableDetails(r,c),score:1,displayValue:_y(Cy.displayValue,{requestCount:a.total.count,byteCount:a.total.transferSize})}}},UIStrings:Cy});class ScreenshotThumbnails extends Audit{static get meta(){return{id:"screenshot-thumbnails",scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,title:"Screenshot Thumbnails",description:"This is what the load of your site looked like.",requiredArtifacts:["traces","GatherContext"]}}static scaleImageToThumbnail(e,t){const n=e.width/t,a=Math.floor(e.height/n),r=new Uint8Array(t*a*4);for(let o=0;o<t;o++)for(let i=0;i<a;i++){const a=Math.floor(o*n),s=4*(Math.floor(i*n)*e.width+a),c=4*(i*t+o);r[c]=e.data[s],r[c+1]=e.data[s+1],r[c+2]=e.data[s+2],r[c+3]=e.data[s+3]}return{width:t,height:a,data:r}}static async _audit(e,t){
const n=e.traces[Audit.DEFAULT_PASS],a=new Map,r=await nf.request(n,t),o=t.options.minimumTimelineDuration||3e3,i=t.options.numberOfThumbnails||8,s=t.options.thumbnailWidth||null,c=[],l=r.frames.filter((e=>!e.isProgressInterpolated())),u=r.complete||Math.max(...r.frames.map((e=>e.getTimeStamp()-r.beginning))),d=Math.max(u,o);if(!l.length||!Number.isFinite(d))throw new LighthouseError(LighthouseError.errors.INVALID_SPEEDLINE);for(let e=1;e<=i;e++){const t=r.beginning+d*e/i;let n,o=null;e===i?o=l[l.length-1]:l.forEach((e=>{e.getTimeStamp()<=t&&(o=e)}));const u=a.get(o);if(u)n=u;else if(null!==s){const e=o.getParsedImage(),t=ScreenshotThumbnails.scaleImageToThumbnail(e,s);n=Wh.encode(t,90).data.toString("base64"),a.set(o,n)}else n=o.getImage().toString("base64"),a.set(o,n);c.push({timing:Math.round(t-r.beginning),timestamp:1e3*t,data:`data:image/jpeg;base64,${n}`})}return{score:1,details:{type:"filmstrip",scale:d,items:c}}}static async audit(e,t){try{return await this._audit(e,t)
}catch(t){if(new Set([LighthouseError.errors.NO_SCREENSHOTS.code,LighthouseError.errors.SPEEDINDEX_OF_ZERO.code,LighthouseError.errors.NO_SPEEDLINE_FRAMES.code,LighthouseError.errors.INVALID_SPEEDLINE.code]).has(t.code)&&"timespan"===e.GatherContext.gatherMode)return{notApplicable:!0,score:1};throw t}}}var ky=Object.freeze({__proto__:null,default:ScreenshotThumbnails}),Fy=Object.freeze({__proto__:null,default:{meta:{id:"script-elements-test-audit",title:"ScriptElements",failureTitle:"ScriptElements",description:"Audit to force the inclusion of ScriptElements artifact",requiredArtifacts:["ScriptElements"]},audit:()=>({score:1})}});class ScriptTreemapDataAudit extends Audit{static get meta(){return{id:"script-treemap-data",scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,title:"Script Treemap Data",description:"Used for treemap app",requiredArtifacts:["traces","devtoolsLogs","SourceMaps","Scripts","JsUsage","URL"]}}static makeScriptNode(e,t,n){function newNode(e){return{name:e,
resourceBytes:0}}const a=newNode(t);function addAllNodesInSourcePath(e,n){let r=a;a.resourceBytes+=n.resourceBytes,n.unusedBytes&&(a.unusedBytes=(a.unusedBytes||0)+n.unusedBytes);const o=e.replace(t,"").split(/\/+/);o.forEach(((e,t)=>{if(0===e.length)return;const a=t===o.length-1;let i=r.children&&r.children.find((t=>t.name===e));i||(i=newNode(e),r.children=r.children||[],r.children.push(i)),r=i,r.resourceBytes+=n.resourceBytes,n.unusedBytes&&(r.unusedBytes=(r.unusedBytes||0)+n.unusedBytes),a&&void 0!==n.duplicatedNormalizedModuleName&&(r.duplicatedNormalizedModuleName=n.duplicatedNormalizedModuleName)}))}for(const[e,t]of Object.entries(n))addAllNodesInSourcePath(e,t);if(function collapseAll(e){for(;e.children&&1===e.children.length;)e.name+="/"+e.children[0].name,e.children=e.children[0].children;if(e.children)for(const t of e.children)collapseAll(t)}(a),!a.name)return{...a,name:e,children:a.children};const r={...a};return r.name=e,r.children=[a],r}static async makeNodes(e,t){
const n=[],a=new Map,r=await Hd.request(e,t),o=await Gd.request(e,t);for(const i of e.Scripts){if("JavaScript"!==i.scriptLanguage)continue;const s=i.url,c=r.find((e=>i.scriptId===e.script.scriptId)),l=e.JsUsage[i.scriptId],u=l?await Im.request({scriptId:i.scriptId,scriptCoverage:l,bundle:c},t):void 0;let d;if(c&&!("errorMessage"in c.sizes)){const e={};for(const t of Object.keys(c.sizes.files)){const n={resourceBytes:c.sizes.files[t]};u?.sourcesWastedBytes&&(n.unusedBytes=u.sourcesWastedBytes[t]);let a=t;c.rawMap.sourceRoot&&t.startsWith(c.rawMap.sourceRoot)&&(a=t.replace(c.rawMap.sourceRoot,""));const r=Gd.normalizeSource(a);o.has(r)&&(n.duplicatedNormalizedModuleName=r),e[t]=n}if(c.sizes.unmappedBytes){const t={resourceBytes:c.sizes.unmappedBytes};u?.sourcesWastedBytes&&(t.unusedBytes=u.sourcesWastedBytes["(unmapped)"]),e["(unmapped)"]=t}d=this.makeScriptNode(i.url,c.rawMap.sourceRoot||"",e)}else d={name:s,resourceBytes:u?.totalBytes??i.length??0,unusedBytes:u?.wastedBytes}
;if(isInline(i)){let e=a.get(i.executionContextAuxData.frameId);e||(e={name:s,resourceBytes:0,unusedBytes:void 0,children:[]},a.set(i.executionContextAuxData.frameId,e),n.push(e)),e.resourceBytes+=d.resourceBytes,d.unusedBytes&&(e.unusedBytes=(e.unusedBytes||0)+d.unusedBytes),d.name=i.content?"(inline) "+i.content.trimStart().substring(0,15)+"…":"(inline)",e.children?.push(d)}else n.push(d)}return n}static async audit(e,t){return{score:1,details:{type:"treemap-data",nodes:await ScriptTreemapDataAudit.makeNodes(e,t)}}}}var Ry=Object.freeze({__proto__:null,default:ScriptTreemapDataAudit});const xy={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"},Iy=createIcuMessageFn("core/audits/seo/canonical.js",xy);class Canonical extends Audit{static get meta(){return{id:"canonical",title:Iy(xy.title),failureTitle:Iy(xy.failureTitle),description:Iy(xy.description),supportedModes:["navigation"],requiredArtifacts:["LinkElements","URL","devtoolsLogs"]}}static collectCanonicalURLs(e){const t=new Set,n=new Set;let a,r;for(const o of e)if("body"!==o.source)if("canonical"===o.rel){if(!o.hrefRaw)continue;o.href?UrlUtils.isValid(o.hrefRaw)?t.add(o.href):r=o:a=o}else"alternate"===o.rel&&o.href&&o.hreflang&&n.add(o.href);return{uniqueCanonicalURLs:t,hreflangURLs:n,invalidCanonicalLink:a,relativeCanonicallink:r}}static findInvalidCanonicalURLReason(e){
const{uniqueCanonicalURLs:t,invalidCanonicalLink:n,relativeCanonicallink:a}=e;if(n)return{score:0,explanation:Iy(xy.explanationInvalid,{url:n.hrefRaw})};if(a)return{score:0,explanation:Iy(xy.explanationRelative,{url:a.hrefRaw})};const r=Array.from(t);return 0===r.length?{score:1,notApplicable:!0}:r.length>1?{score:0,explanation:Iy(xy.explanationConflict,{urlList:r.join(", ")})}:void 0}static findCommonCanonicalURLMistakes(e,t,n){const{hreflangURLs:a}=e;return a.has(n.href)&&a.has(t.href)&&n.href!==t.href?{score:0,explanation:Iy(xy.explanationPointsElsewhere,{url:n.href})}:t.origin===n.origin&&"/"===t.pathname&&"/"!==n.pathname?{score:0,explanation:Iy(xy.explanationRoot)}:void 0}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=await sc.request({devtoolsLog:n,URL:e.URL},t),r=new URL(a.url),o=Canonical.collectCanonicalURLs(e.LinkElements),i=Canonical.findInvalidCanonicalURLReason(o);if(i)return i
;const s=new URL([...o.uniqueCanonicalURLs][0]),c=Canonical.findCommonCanonicalURLMistakes(o,s,r);return c||{score:1}}}var Ny=Object.freeze({__proto__:null,default:Canonical,UIStrings:xy});const Ly={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"},My=createIcuMessageFn("core/audits/seo/crawlable-anchors.js",Ly);var Py=Object.freeze({__proto__:null,default:class CrawlableAnchors extends Audit{static get meta(){return{id:"crawlable-anchors",title:My(Ly.title),failureTitle:My(Ly.failureTitle),description:My(Ly.description),requiredArtifacts:["AnchorElements","URL"]}}static audit({AnchorElements:e,URL:t}){
const n=e.filter((({rawHref:e,name:n="",role:a=""})=>{if(e=e.replace(/\s/g,""),n=n.trim(),(a=a.trim()).length>0)return;if(e.startsWith("mailto:"))return;if(e.startsWith("file:"))return!0;if(!(n.length>0)){if(""===e)return!0;if(/javascript:void(\(|)0(\)|)/.test(e))return!0;try{new URL(e,t.finalDisplayedUrl)}catch(e){return!0}}})),a=[{key:"node",valueType:"node",label:My(Ly.columnFailingLink)}],r=n.map((e=>({node:Audit.makeNodeItem(e.node)})));return{score:Number(0===n.length),details:Audit.makeTableDetails(a,r)}}},UIStrings:Ly}),Oy={};!function(e){function min(e,t){return null===e?t:null===t?e:Math.min(e,t)}function max(e,t){return null===e?t:null===t?e:Math.max(e,t)}function translateLengthProperty(e,t,n){return"number"==typeof e?e>=0?clamp(e,1,1e4):void 0:"device-width"===e?100*t:"device-height"===e?100*n:1}function translateZoomProperty(e){return"number"==typeof e?e>=0?clamp(e,.1,10):void 0:"yes"===e?1:"device-width"===e||"device-height"===e?10:"no"===e||null===e?.1:void 0}
function clamp(e,t,n){return max(min(e,n),t)}e.getRenderingDataFromViewport=function(e,t,n,a,r){var o=t/100,i=n/100,s=null,c=null,l=null,u=null,d=null,m=null,p=null,h=null,f=null,y=t,b=n,v="zoom",w="resizes-visual";if(void 0!==e["maximum-scale"]&&(s=translateZoomProperty(e["maximum-scale"])),void 0!==e["minimum-scale"]&&(c=translateZoomProperty(e["minimum-scale"])),void 0!==e["initial-scale"]&&(l=translateZoomProperty(e["initial-scale"])),null!==c&&null===s&&(c=min(a,translateZoomProperty(e["minimum-scale"]))),void 0!==e.width&&(u="extend-to-zoom",m=translateLengthProperty(e.width,o,i)),void 0!==e.height&&(d="extend-to-zoom",p=translateLengthProperty(e.height,o,i)),void 0!==e["user-scalable"])if("number"==typeof(v=e["user-scalable"]))v=v>=1||v<=-1?"zoom":"fixed";else switch(v){case"yes":case"device-width":case"device-height":v="zoom";break;case"no":default:v="fixed"}if(void 0!==e["interactive-widget"])switch(e["interactive-widget"]){case"overlays-content":case"resizes-content":
case"resizes-visual":w=e["interactive-widget"];break;default:w="resizes-visual"}null===l||void 0!==e.width&&void 0!==h||(void 0!==e.height?(u=null,m=null):(u="extend-to-zoom",m="extend-to-zoom")),null!==c&&null!==s&&(s=max(c,s)),null!==l&&(l=clamp(l,c,s));var D,E,T=null===l&&null===s?null:min(l,s);return null===T?("extend-to-zoom"===m&&(m=null),"extend-to-zoom"===p&&(p=null),"extend-to-zoom"===u&&(u=m),"extend-to-zoom"===d&&(d=p)):(D=y/T,E=b/T,"extend-to-zoom"===m&&(m=D),"extend-to-zoom"===p&&(p=E),"extend-to-zoom"===u&&(u=max(D,m)),"extend-to-zoom"===d&&(d=max(E,p))),null===u&&null===m||(h=max(u,min(m,y))),null===d&&null===p||(f=max(d,min(p,b))),null===h&&(h=null===f?y:0!==b?Math.round(f*(y/b)):y),null===f&&(f=0!==y?Math.round(h*(b/y)):b),{zoom:l,width:h,height:f,userZoom:v,interactiveWidget:w}},e.parseMetaViewPortContent=function(e){for(var t={validProperties:{},unknownProperties:{},invalidValues:{}},n=1;n<=e.length;){for(;n<=e.length&&RegExp(" |\n|\t|\0d|,|;|=").test(e[n-1]);)n++
;n<=e.length&&(n=parseProperty(t,e,n))}return t};var t=["width","height","initial-scale","minimum-scale","maximum-scale","user-scalable","shrink-to-fit","viewport-fit","interactive-widget"];function parseProperty(n,a,r){for(var o=r;r<=a.length&&!RegExp(" |\n|\t|\0d|,|;|=").test(a[r-1]);)r++;if(r>a.length||RegExp(",|;").test(a[r-1]))return r;for(var i=a.slice(o-1,r-1);r<=a.length&&!RegExp(",|;|=").test(a[r-1]);)r++;if(r>a.length||RegExp(",|;").test(a[r-1]))return r;for(;r<=a.length&&RegExp(" |\n|\t|\0d|=").test(a[r-1]);)r++;if(r>a.length||RegExp(",|;").test(a[r-1]))return r;for(o=r;r<=a.length&&!RegExp(" |\n|\t|\0d|,|;|=").test(a[r-1]);)r++;return function setProperty(n,a,r){if(t.indexOf(a)>=0){var o=parseFloat(r);if(!isNaN(o))return void(n.validProperties[a]=o);var i=r.toLowerCase()
;if("yes"===i||"no"===i||"device-width"===i||"device-height"===i||"viewport-fit"===a.toLowerCase()&&("auto"===i||"cover"===i)||"interactive-widget"===a.toLowerCase()&&e.expectedValues["interactive-widget"].includes(i))return void(n.validProperties[a]=i);n.validProperties[a]=null,n.invalidValues[a]=r}else n.unknownProperties[a]=r}(n,i,a.slice(o-1,r-1)),r}e.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"]}}(Oy);const By=makeComputedArtifact(class ViewportMeta{static async compute_(e){const t=e.find((e=>"viewport"===e.name));if(!t)return{hasViewportTag:!1,isMobileOptimized:!1,parserWarnings:[]}
;const n=[],a=Oy.parseMetaViewPortContent(t.content||"");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)}`);const r=a.validProperties;return{hasViewportTag:!0,isMobileOptimized:Boolean(r.width||r["initial-scale"]),parserWarnings:n}}},null),Uy={title:"Document uses legible font sizes",failureTitle:"Document doesn't use legible font sizes",description:"Font sizes less than 12px are too small 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"},jy=createIcuMessageFn("core/audits/seo/font-size.js",Uy);function getSelector(e){const t=function getAttributeMap(e=[]){const t=new Map;for(let n=0;n<e.length;n+=2){const a=e[n],r=e[n+1];if(!a||!r)continue;const o=r.trim();o&&t.set(a.toLowerCase(),o)}return t}(e.attributes);if(t.has("id"))return"#"+t.get("id");{const e=t.get("class");if(e)return"."+e.split(/\s+/).join(".")}return e.nodeName.toLowerCase()}function nodeToTableNode(e){const t=(e.attributes||[]).map(((e,t)=>t%2==0?` ${e}`:`="${e}"`)).join("");return{type:"node",selector:e.parentNode?getSelector(e.parentNode):"",snippet:`<${e.nodeName.toLowerCase()}${t}>`}}var zy=Object.freeze({__proto__:null,default:class FontSize extends Audit{static get meta(){return{id:"font-size",title:jy(Uy.title),failureTitle:jy(Uy.failureTitle),description:jy(Uy.description),
requiredArtifacts:["FontSize","URL","MetaElements"]}}static async audit(e,t){if("desktop"===t.settings.formFactor)return{score:1,notApplicable:!0};if(!(await By.request(e.MetaElements,t)).isMobileOptimized)return{score:0,explanation:jy(Uy.explanationViewport)};const{analyzedFailingNodesData:n,analyzedFailingTextLength:a,failingTextLength:r,totalTextLength:o}=e.FontSize;if(0===o)return{score:1};const i=function getUniqueFailingRules(e){const t=new Map;return e.forEach((e=>{const{nodeId:n,cssRule:a,fontSize:r,textLength:o,parentNode:i}=e,s=function getFontArtifactId(e,t){if(e&&"Regular"===e.type){const t=e.range?e.range.startLine:0,n=e.range?e.range.startColumn:0;return`${e.styleSheetId}@${t}:${n}`}return`node_${t}`}(a,n),c=t.get(s);c?c.textLength+=o:t.set(s,{nodeId:n,parentNode:i,cssRule:a,fontSize:r,textLength:o})})),[...t.values()]}(n),s=(o-r)/o*100,c=e.URL.finalDisplayedUrl,l=[{key:"source",valueType:"source-location",label:jy(Dr.columnSource)},{key:"selector",valueType:"code",
label:jy(Uy.columnSelector)},{key:"coverage",valueType:"text",label:jy(Uy.columnPercentPageText)},{key:"fontSize",valueType:"text",label:jy(Uy.columnFontSize)}],u=i.sort(((e,t)=>t.textLength-e.textLength)).map((({cssRule:e,textLength:t,fontSize:n,parentNode:a})=>{const r=t/o*100,i=function findStyleRuleSource(e,t,n){if(!t||"Attributes"===t.type||"Inline"===t.type)return{source:{type:"url",value:e},selector:nodeToTableNode(n)};if(t.parentRule&&"user-agent"===t.parentRule.origin)return{source:{type:"code",value:"User Agent Stylesheet"},selector:t.parentRule.selectors.map((e=>e.text)).join(", ")};let a="";t.parentRule&&(a=t.parentRule.selectors.map((e=>e.text)).join(", "));if(t.stylesheet&&!t.stylesheet.sourceURL)return{source:{type:"code",value:"dynamic"},selector:a};if(t.stylesheet&&t.range){const{range:e,stylesheet:n}=t,r=n.hasSourceURL?"comment":"network";let o=e.startLine,i=e.startColumn;n.isInline&&"comment"!==r&&(o+=n.startLine,0===e.startLine&&(i+=n.startColumn))
;const s=Audit.makeSourceLocation(n.sourceURL,o,i);return s.urlProvider=r,{source:s,selector:a}}return{selector:a,source:{type:"code",value:"Unknown"}}}(c,e,a);return{source:i.source,selector:i.selector,coverage:`${r.toFixed(2)}%`,fontSize:`${n}px`}}));if(a<r){const e=(r-a)/o*100;u.push({source:{type:"code",value:jy(Uy.additionalIllegibleText)},selector:"",coverage:`${e.toFixed(2)}%`,fontSize:"< 12px"})}s>0&&u.push({source:{type:"code",value:jy(Uy.legibleText)},selector:"",coverage:`${s.toFixed(2)}%`,fontSize:"≥ 12px"});const d=jy(Uy.displayValue,{decimalProportion:s/100}),m=Audit.makeTableDetails(l,u);return{score:Number(s>=60),details:m,displayValue:d}}},UIStrings:Uy})
;const qy=[,[,[1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,,1,1,1,1,1,1,,1],[1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,1,1,,1,1,,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,1,1,,1,1,1,1],[1,1,1,1,1,1,,,,,,1,1,1,1,,,1,1,1,,1,,1,,1,1],[1,1,1,,1,1,,1,1,1,,1,,,1,1,1,,,1,1,1,,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,,,,1,1,1,,1,1,1,1,1,1,,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1],[,1,,,,,,1,,1,,,,,1,,1,,,,1,1,,1,,,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,1,1,1,1,,,1,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,1,1,,,1,,,,,1,1,1,,1,,1,,1,,,,,,1],[1,,1,1,1,1,,,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[1,,1,,1,,,,,1,,1,1,1,1,1,,,,1,1,1,1],[,1,1,1,1,1,,1,1,1,,1,,1,1,1,,,1,1,1,1,1,1,1,1],[,,1,,,1,,1,,,,1,1,1,,,,,,,,,,,1],[1,1,1,1,1,1,,1,1,1,,1,1,,1,1,1,1,1,1,1,1,,,1,1,1],[1,1,1,1,1,,,1,,,1,,,1,1,1,,,,,1,,,,,,1]],[,[1,1,1,1,1,1,1,1,1,1,1,,1,,1,1,1,,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,,,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,1,1,,1,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,,1,1,,1,1,1,1,1,1,1,,1],[,1,,1,1,1,,1,1,,1,,1,1,1,1,1,1,1,1],[,1,,1,1,1,1,1,1,1,1,,,1,1,1,,,1,1,,,,,,1,1],[1,1,1,,,,,1,,,,1,1,,1,,,,,,1,,,,,1],[,1,,,1,,,1,,,,,,1],[,1,,1,,,,1,,,,1],[1,,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,,1,,,1,1,1,1],[,1,1,1,1,1,,,1,,,1,,1,1,,1,,1,,,,,1,,1],[,1,,,,1,,,1,1,,1,,1,1,1,1,,1,1,,,1,,,1],[,1,1,,,,,,1,,,,1,1,1,1,,1,1,1,1,1,1,,1,1,1],[,1,,1,1,1,,,1,1,1,1,1,1,,1,,,,,1,1,,1,,1],[,1,,1,,1,,1,,1,,1,1,1,1,1,,,1,1,1],[,1,1,1,,,,1,1,1,,1,1,,,1,1,,1,1,1,1,,1,1],[1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,,,1,1,1,1,1,1,1],[,1,1,1,,1,1,1,,1,,,,,1,1,1,,,1,,1,,,1,1],[,,,,1,,,,,,,,,,,,,,,,,1],[1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,,1,1,1,,1,1,,,,1,1,1,1,1,,,1,1,1,,,,,1],[1,1,1,1,,,,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[1,,,,,,,1,,,,,,,1],[,1,1,,1,1,,1,,,,,,,,,,,,,1],,[1,1,1,,,,,,,,,,,,,1],[,,,,,,,,1,,,1,,,1,1,,,,,1]],[,[1,1,,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1,1,1],[,1,1,,1,1,1,1,,1,1,,1,1,1,1,1,1,1,,1,1,1,1,,1],[,,,1,,,,,,,,,,,,,,,1],[,1,,,1,1,,1,,1,1,,,,1,1,,,1,1,,,,1],[1,,,1,1,1,1,1,1,1,,1,1,1,1,,1,1,1,1,,,1,,,,1],,[,1,1,1,1,1,,1,1,1,,1,1,,1,1,,,1,1,1,1,,1,1,,1],[,1,,,1,,,1,,1,,,1,1,1,1,,,1,1,,1,1,1,1],[,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[,1,1,1,1,1,1,,,1,1,1,1,1,1,1,,,1,,,1,,1],[,1,,,,,,,,,,1,1,,,,,,1,1,,,,,1],[,,,,,,,1,,,,1,,1,1],[,1,1,1,1,1,1,1,,,,1,1,1,1,1,,,1,1,,1,1,1,1,1],[,1,,,1,1,,1,,1,1,1,,,1,1,,,1,,1,1,1,1,,1],[,1,1,1,,1,1,,1,1,,1,1,,1,1,1,1,1,1,1,,1,1,1,1,1],[,,,,,,,,,,,,,,,,1],,[,1,1,1,1,1,,1,1,1,,,1,,1,1,,1,1,1,1,1,,1,,1],[,,1,,,1,,,1,1,,,1,,1,1,,1],[,1,1,,1,,,,1,1,,1,,1,1,1,1,,1,1,1,1,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1],[1,1],[,1,,,,,,,,,,1,1,,,,,,1,1,,1,,1,,1,1],,[,1,1,,1,,,1,,1,,,,1,1,1,,,,,,1,,,,1],[1,1,,,1,1,,1,,,,,1,,1]],[,[,1],[,,,1,,,,1,,,,1,,,,1,,,1,,,1],[,,,,,,,,,,,,,,,,,,1,1,,,,,,1],,[1,,,,,1],[,1,,,,1,,,,1],[,1,,,,,,,,,,,1,,,1,,,,,,,,,1,1],[,,,,,,,,,,,,,,,,,,,,,1],[,,,,,,,,,,,,,,,,1,,,,1,,1],[,1],[,1,,1,,1,,1,,1,,1,1,1,,1,1,,1,,,,,,,1],[1,,,,,1,,,1,1,,1,,1,,1,1,,,,,1,,,1],[,1,1,,,1,,1,,1,,1,,1,1,1,1,,,1,,1,,1,1,1],[1,1,1,1,1,,1,,1,,,,1,1,1,1,,1,1,,,1,1,1,1],[1,,,,,,,,,,,,,,,,,,,,1],[,,,,,,,,,1],,[,1,,,,,,1,1,1,,1,,,,1,,,1,1,1,,,1],[1,,,,,1,,1,1,1,,1,1,1,1,1,,1,,1,,1,,,1,1],[1,,1,1,,,,,1,,,,,,1,1,,,1,1,1,1,,,1,,1],[1,,,,,,,,,,,,,,,,,1],[,,,,,1,,,1,,,,,,1],[,,,,,,,,,,,,,,,1],[,,,,,,,,,,,,,,,,,,,,1],[,1,,,,,,,,,,,,,,1],[,1,,,,1]],[,[1,1,1,,1,,1,1,1,1,1,1,1,1,1,,1,,1,,1,1,,,1,1,1],[,,,,,,,,,,,,1],[,,,,,,,,,,,,,,,,,,,1],,[,,,,,,,,,,,,,,,,,,1],[1,,,,,,,,,1,,,,1],[,,,,,,,,,,,,,,,,,,1],,[1,1,,,,1,1,,,,,,1,,,,1,,1,,1,1,,1],[1],[,,,,,,,,,,,1,,,,,,,,,,,1],[,1,,,,,,,1,1,,,1,,1,,,,1,,,,,,,1],[,,,,,,,,,,,,,,,,1,,,,,1],[,,1,,,,,1,,1],[1,,,,1,,,,,1,,,,1,1,,,,1,1,,,,,1],[,,,,,1],[,,,,,,,,,,,,,,,,,,,1],[1,,,1,1,,,,,,,1,,1,,1,1,1,1,1,1],[,,,,,1,,,,,,,1,,,,,,,1],,[,,1,1,1,1,1,,1,1,1,,,1,1,,,1,1,,1,1,1,,,1],[,,,,,,,,,,,,,,,,,,1],[,1,,,,1],,[1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1],[,,,1,1,1,1,,,,,,1,,1,,,,1,,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,,,1],[,1,1,1,1,,1,1,1,1,1,1,1,1,,,,1,,1,,,1,1,1,1,1],[,,,,,,,,,,,1,,,,,,,,,1,,,,1],[,1,1,,1,1,,1,,,,1,1,,1,1,,,1,,1,1,,1],[,1,,1,,1,,,1,,,1,1,,1,1,,,1,1,1],[,1,1,1,1,1,,1,1,,,,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[,,,,,,,,,1,,1,,1,1,,,,1,,,1],[,1,,,1,1,,,,,,,,,1,1,1,,,,,1],[1,,,1,1,,,,1,1,1,1,1,,,1,,,1,,,1,,1,,1],[,1,1,,1,1,,1,1,,,,1,1,1,,,1,1,,,1,1,1,1,1,1],[1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,,1,1,,1,1,,1,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[,1,,,,1,,,,,,,,,1],[,1,,,,,,,,1,,,,,1,,,,1,,,1],[,1,1,1,1,,,1,1,1,1,1,,1,,1,,1,1,1,1,1,1,1,1,1,1],[,,,,,1,,1,,,,,1,1,1,1,1,,,1,,,,1],[,1,,,,,,,,1,,,,,,,,,,,,1],[1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1],[1,1,,1,,1,1,,,,1,,1,1,1,1,1,,1,1,,,,,,1],[,1,1,1,1,1,1,1,,1,1,,,1,1,,,,1,,1,1,,1,1],[,,,,,,,,,,,,,,,,,,,,,,,,1],[,1,1,,1,1,1,1,,1,,,1,1,1,1,,,1,,,,,,,1],[,1,,,,,,,,1,,,,,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,1],[,1,1,,,,,,,,,,,,1,1,,,,,,1],[,1,,,,,,,1],[,,,,,,,,,,,,,,1,,,,,1,,,,,,1],[1,1,,,1,,,1,1,1,,,,1],,[,,,,,,,,,,,,,1,,,,,,,,,,1],[,,,,,,,,,1,,,,,,,,,1,,,,,,,1],[1,1,1,,1,,1,1,1,1,1,1,1,1,,1,,,1,,1,,,1,1],[,,,,,,,,,1],[,1,,,,1,,,,,,1,,,1,,,,,1],[,1,1,,1,1,,,,,,,,,,,,,,,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[,1,,,1,1,,1,1,1,1,,,,1,1,,,,1,,1],[1,1,1,1,1,1,,,1,1,1,1,1,1,,1,1,,1,1,1,,1,1,,1,1],[,,,,,,,,,,,,,,,1,,,,1],,[1,1,,1,,1,,,,,,1,,1,,1,1,,1,,1,1,,1,1,,1],[,,1,,,,,,1,,,,1,,1,,,,,1],[1,,,,,,,,,1,,,,,,1,,,,1,,1,,,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,,,1,,1,,,,,,1,,,1,,,,,,,,1],[,1,,1,,,,,,,,,,,,1],,[1,1,,,,,,,,,,,,,,,,,,,,,,1,1],[1]],[,[1,,,,,,,,,1,,,,,1,,1,,1],[,1,1,,1,1,,1,1,1,,,1,1,1,,,,1,,,1,,,,1],[,1,,,,,,,1,,,,1,,,,,,1],[1,1,1,1,1,1,,,,1,,,,,,,,,1,1,1,1],[1],[,1,1,,,1,1,,,,,1,,1,,,,,,,,1,,,,1],[1,,1,,,1,,1,,,,,1,1,1,1,,,,1,,,,1],[,,1,,,,,,,1,,,,,,,1,,,,,,,1],[1,,,,,,,,,,,,,,1,,,,1],[,,,1,,1,,,,,1,,,,1,1,,,,1],[1,,,,,1,,,,1,,1,1,,,1,1,,1,1,1,,1,1,1,,1],[,1,1,,,,,1,,1,,1,1,1,,1,1,,,1,,1,1,1],[,1,,,,1,,,,1,,,1,,1,1,,,1,1,,,,,,1],[1,,1,1,,1,,1,1,,1,,1,1,1,1,1,,,1,1,,,,,,1],[1,,,,,,,,,,,,,,,,,,1,,,1,,1],[,,,,,,,,,1,,,,,,1],[,,,,,,,,,,,,,,,,,,,,,1,,1],[,1,,,,1,,,1,1,,1,,,1,1,,,1,,,1,,,1,1],[1,1,,1,1,1,,1,1,1,,1,,1,1,1,,,1,,1,1],[1,,1,1,1,1,,,,1,,1,1,1,,1,,,1,1,1,,1,1,1,1,1],[1,,,,,,,,,,,,,1],[,,1,,,,,,,,,,,,,,,,,,,,1],[1,,,,,,,,,,,1,,1,,1,,,,1],[,,,1,,,,,,,,,1],[,1,,,,,,,,,,,,,,1,,,,,,,,,1],[,,,,,,,,1,1,,,,,,,,,1,,,,,,,,1]],[,[1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,,1,1,1,1,1,,,1,1,1],[,,,,,1,,,,1,1,1,,,1,1,,,1,,1,1,,1],[,,,,,,,,,,,,,,,,,,,1,1],[,1,,,,,,1,,,,,,,,,,,,,1],[,,1,,,1,,1,1,1,,1,1,,1,,,,1,,1,1],,[,,1,,,1,,,,,,1,,,,1],[,,,,,,,,,1,,,,,,,,,,1],[1,1,1,1,1,1,,1,1,1,,,1,1,,1,,1,,,1,1,1,,,1],[,,,,,1,,,,,,,,,,,,,1],[,1,,,,,,,,,,,,1,,1,1,,1,,,1],[,,,,,1,,,,,,,,,,,,,,1],[,1,1,1,1,,,,,1,,,1,,1,,,,1,1,,,,1,1],[,1,,,1,,,1,,1,1,,1,,,,,,,1],[,,1,,1,,,1,,,,,,,,,,,1,1,,,,1],[,1,,,,,,,,,,,,,,,,,1,,,,,,1],[,,,,,,,,,,,,,,,,,,1],[,1,1,,,,,,,,,,,,,,,,1,,1,1],[,,,,,,,,,,,,1],,[,1,1,1,1,,,,1,1,,1,1,1,1,1,1,,1,1,1,1,,1,,1],[1,,,,1,,,,,,,,,,1],[1,,,,,,,,,1],,[,1,,,,1,,,,,,,,,,,,,,,,,,,,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,,1,,1,1,1,1,,,,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,,1,1,,1,1,1,,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,,1,1,1,1,1,1,1,1,1,1,,,1,1,1,,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,,1,,1,1,1,1],[1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1],[,,,1,1,1,1,,1,,,,1,1,,,1,1,,1],[,1,1,,1,,,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,,,,,,,,,,,,1],[1,1,1,,,,,1,1,1,,1,1,1,1,,,1,1,,1,1,,,,,1],[,1,,,,,,,1,1,,,1,1,1,,1,,,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,1,,1,1,1,1,1,1],[,1,,,,1,,,,1,,,1,,,,1,,,,,,,1,1],[,1,1,1,1,1,,,1,1,1,,1,1,1,1,,,1,1,1,1,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,,1,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,1,1],[1,1,1,,1,,,1,1,1,1,,1,1,1,1,,,,1,,1,,1,,,1],[1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,,,1,,,,,,,,,1,1,,,,,,,,,1],,[,1,,1,,1,,1,,1,,1,1,1,1,1,,,1,,1,,1,,,,1],[,1,,,1,1,,1,1,1,,,1,1,1,1,1,,1,1,1,,1,,,1],[1,,,1,,,,1,1,1,,,,,1,1,,,,1,,1],[1,1,,1,1,1,1,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[1,1,,,,,,,,1,,1,,,,,,,,1,,1],[,1,,,,1,,1,1,,,,1,1,,1,,,,1,1,1,,1],,[,1,,,,,,1,,,,,,,1],[,,,,,,,,1,,,,1,,1,,,,,,,,,,,,1]],[,[,1,1,,1,1,1,1,,1,1,1,,1,1,,1,1,,1,1,1,1,1,1,,1],[,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,,1,1,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1],[,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,,1],[1,1,1,1,1,,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1],[,1,,,1,,,,,,,,1,,,,,,1,,,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,,,,1,1,1,,1,1,1,1,,,1,1,1,1,,,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,,1],[1,1,,1,,1,,1,,1,1,1,1,1,1,1,,1,1,,,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,,1,1],[,1,1,,,,,1,1,1,,,1,,1,1,,,,1,,1,,,1,1],[,,,,,,,1,,,,1,1,1,1,1,,1,,,,,,,,1],[1,1,1,1,,1,1,1,,1,,1,1,1,1,,1,,1,,1,1,,,1,,1],[,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,,,1,1,,1,,1,1,1,,1,,1,1,,1,1,,1,,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,,,,,,,,1,,,,,1,,1],[,1,1,1,,1,,1,,1,,,,1,,1,,,1,,,,,,1,1],[,1,,,1,1,,1,,1,,1,1,1,1,1,,1,1,,,1,,,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,,,,,1,,1,,1,,,,,,1,,1,,,,1,1]],[,[,1,,1,,,,,,,,,,,,,,,1,,,,1],[,,,,,,,,,1,,1,1,1,,1,,,1,,1,1],[1,1,,,,,,,1,,,,,,,1,,,,,,1],[,1,,,,,,,,,,1,,,,,,,,,1,1],,[,,,,,,,,,,,,,,,1,,,,1,,1],[,,1,1,,1,,1,,,,,,,,1,,,,,,1],[,,,,,,,,,,,,,,,,,,,,1,1],[,1,,,,,,,,,,,,,1],[1,,1,1,,,,1,,,,,,,,,1,,,1,,,1,1],[,1,1,,1,1,,1,1,1,1,1,1,1,1,1,,,1,1,,1,1,,1],[,1,,,1,1,,,,,,1,,1,,1,,,1,,1,1],[1,1,1,1,,1,,1,,1,,1,1,,1,1,1,1,1,,1,1,1,1,1],[,1,1,,,1,,1,,1,1,1,,,1,1,1,,1,1,1,1,,1,1],[,,,,1,,,1,,,,,,,1,,,,1,1],[,1,,,,,,,,,,1,,1,,1,,,,,1,,,,,1],,[1,1,,1,,1,,1,1,,,,,,1,1,,,1,1,1,1,1,1,1,1,1],[1,1,,1,,,,,,1,,,,,,1,1,,,,1,1,,,1],[,1,1,,1,1,,,,1,,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1],[,1,1,,,1,,,,1,,,,1,1],[,,,,1],[,,,,,,,,,1,,,1],,[,,1,,1,,,,,,,,,1,,,,,,,,,,,,1],[,,,,,,,,,,,,,1]],[,[1,1,1,1,1,1,1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,,1,1,,1,1,1,1,1,,,1,1,1,1,1,,1,1,1,1,1,,,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,,1,,,,,1],[,1,,1,,,,,,1,,,,,1,1,,,,,1,1],[,1,1,,1,1,1,1,1,1,1,1,1,1,,1,1,1,,1,,,1,,1,1,1],[,1,,,,1,,,,,,,1],[,1,,,1,,,1,,1,,1,1,,1,,,,,1,,1,,,,1,1],[,1,,,1,,,1,1,1,,1,1,1,1,1,,1,1,,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1,1,1,1,1,1],[,,,,,,,,,,,,,,,,,,,,1],[,1,1,1,,,,1,1,,,,,,1,1,1,,1,1,1,1],[1,1,1,1,1,1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,,1,1,1,1,1,1,1,,1,,1,1,1,1,1,,1,1,,1,1,1,1,1],[,1,,,,1,,,,1,,1,1,1,1,1,1,1,1,1,1,1],[,1,,,,1,,,,,,,,1,,,,,,,,,,1],[,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[1,1,,1,1,1,,1,1,1,,,1,1,1,1,1,1,1,1,1,1,,1,,1],[1,1,,,,,,,1,1,,,,,1,1,1,1,1,,1,1,1,1,,1],[,1,1,1,1,1,1,1,,1,1,1,,1,,1,1,1,1,,1,1,,1,1,1,1],,[,1,1,,,,,1,,1,,,,1,1,1,,,1,,,,,1],[,,,,,,,,,,,,,1],[,,,,,1,,,,,,,,1,1,,,,,1,,1,,,1,1],[,,,,,,,,,,,,,,1]],[,[,1],,,,,,,,,,,,,,,,,,,,[1,1,1,1,1,,1,1,1,1,,1,1,1,1,,1,1,1,1,,,1,1,1,1,1],[,1,,1,,1,,,1,1,1,,1,1,1,1,1,,,1,,,,1,,1,1],[,1,,1,,1,,,1,,,,,1,,,,,,1,1],[,1,,1,,,,,1,,,,1,,1,1,1,1,1,1,1,1,,1],[,1,,,,,,,,,,,,,,,1]],[,[,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,1,,,,,,,,,1,1,,,,1],[,,,,,,1],[,,1],[,1,1,,,1,,1,,1,1,,1,1,1,,,,1,1,1,,,,,1],,[,1,,,,1,,,,,,1,,,1,,,,1,1,,1],[,,,,,,,1,,,,,,,,,1],[,1,,,,1,1,,,,,,1,1,1,,,,1,,1,1],[,,,,,,,1,,1,,,,,,,,,,1],[,1,1,,,,,,1,1,,,,1,,,,,,,1,,,1],,[1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,,,1,,,1,,,,,1,,1,,1,,1,,,,,1],[1,1,1,1,1,1,1,1,,,,,1,1,,1,1,,1,,,1,,1],[,,,,,,,,,,,,,,1,,,,,,1],,[,,,,,,,,,1,,,,,,1,,,,,1],[,,1,,,,,,,1,,,1,1],[,,,1,,,,,1,,,,,1,,,,,,1,,,,1],[1,,1,1,,1,1,1,1,1,,1,,,,1,1,1,,,1,1,,,,1,1],,[1,1,,,,,,,,,,1,,1,,1,,,1],[,,,,1,,,,,,,,,,,,,,,,,,,1],[,,,,,,,,,,,,,,1,,,,,1,,1],[,,,,,,,,1]],[,[1,1,1,1,1,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,,,1,1,1,1,1,,1,1,,1,1,1,1,,1,1,1,1,1,1],[1,1,1,1,,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,,1,,,1,,,,,,,,1,,,,,,1,,,,1],[1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,,1,1,1,1],[1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,1,,1,,,,1,1,1,1,1,1,,1,1,1,1,,1],[1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,,1,1,1,1,1,1,1,1,,1,1,1,,1,1,1,1,1,1,,1,1,1,1],[1,1,1,1,1,,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[1,,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1],[1,1,1,1,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1],[,,1,1,1,1,,1,,1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[1,1,,,,,,,1,,1,1,,1,1,1,,1,1,1,1,1],[1,1,1,1,,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1],[1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1],[1,1,1,1,,1,,1,,1,1,1,1,1,,,,1,1,1,1,,1,1,1,1,1],[1,1,1,1,,1,,,,,,1,,1,,,,,1,1,,,,,1],[1,,1,1,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,1,1,,1,,1,,,,1,1,1,1,1,,,1,1,,1,,1],[,1,1,1,1,,,,,1,,1,1,1,1,1,,,1,1,,,,1,1,1],[,1,1,1,1,1,,1,,,,,1,,1,,1,,,1,,,1,1,,1]],[,[1,1,1,1,1,1,1,1,,1,1,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,,1,1,1,,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,,1,1],[1,1,1,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,,,,,,,,1,,,,,1,1,,,1,,1],[1,1,1,1,1,1,1,1,1,1,1,,,,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,,,1,1,1,1,,1,1,,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1],[,1,,,,,,1,,1,1,,1,1,1,1,1,,,1,,1,,1],[1,1,1,,1,1,1,1,,,,1,1,1,1,,1,1,1,1,1,1,1,1,1,,1],[1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,,1,1,1,1,1,1,1,1,1,,1,1,,1,1,1,1,1,,1,1,1,1,1,1],[,1,,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,,1,,,,,,,,,,1,1,1,1,1,1,1,,1,1,,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1,1,1],[,1,,,1,1,,,,,,1,1,1,1,1,,,,1,1,1,,1,1,1],[1,1,1,1,1,1,1,1,1,,,,1,1,1,1,1,1,1,,1,1,,1,1,1],[,1,1,1,,1,,1,1,1,1,,,1,1,1,,1,1,1,1,1,,,1,1],[1,1,,,,1,,,1,1,1,,1,,1,,1,,1,1,1,1,1,,1,,1],[,1,,,,,,,1,,1,,1,1,1,1,,,,,,,,,1]],[,[,,,,,,,,,,,,,1,1,,,,1],[,1,,,,,,,,1,,,1,,,,,,1,,,1,,,,1],,[,1,,,,1,,1,,1,1,,1,1,,,,,,,,1],[,,,,,,,,,,,,,,,,,,,1],[,,,,,,,,,1],[1,1,1,,,1,,,,,,,,,1,1,,,,,,,,,,1],[,1,,,,,,,,,,,,,1],[,,,,,,,,,,,,,,,,,,,1,,,1],[,,,,,,,,,1],[1,1,,,,,,1,1,1,,1,1,,,,1,1,,1,,1,1,1,,1],[,1,1,1,,1,1,,,1,,1,1,1,1,,,,,,,1,,1],[,1,1,1,1,,,1,,1,,,,1,1,1,1,,1,1,,1],[,1,,,1,1,,1,,,,1,,1,1,,1,,1,,,1,,,1,,1],[,,,,,,,,,,,1],[,,,,,,,,,1,,,,,,,,,,,,,1],,[1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,1],[,1,,,,,,,1,1,,1,,,,,1,,,1,,1],[,1,,,,1,,,1,,,,,,,,1,,1,,,1],[,,,,,,,,,,,,,1,1,,,,1,,,1],[,,,,,1,,,1,,,,1],[,1],,[,1],[1,,,,,,,,,,,,,,1,,,,,1]],[,[,1,,,,1,1,1,1,1,1,,1,1,1,1,1,,1,1,,1,1,,,1],[,,1,,,,,,,,,1],,,[1,,,1,1,,,,,,,,1,1,,1,1,,1],,[,,,,,,,,,,,,,,,,,,1,,1],,[1,,,1,1,,1,1,,,,,1,,1,,,,,1,1,,1],,[,1,,,,,,,,1,1,1,1,1,,1,1,,,,1,1],[,,,,,,,,,,,,,,,,1,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,,1,1,1,1,1,1],[,,,,,,,,,,,1,,1,,,1],[1,,,,,,,,,,,,,,,,,,1,,1],,,[,1,,,,,,,,,,,,,,1,,,,1,1],[,,,,,,,,,1,,,1,,,,,,,,,,1],[,,,,,,,,,,,,,,,1],[,,,,,,,,,,,,,1,1,,,,,,1],,[,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,,1,1,,1,1,1,1,1,1,,,1,1,1,1,1,,1,1],[,1,,,,,,,,1],[,,,,1,,,1,,,1,1,,,,,,,,,,1,,,,1],[,1,,1,1,,,1,1,1,,,,1,1,1,1,,1,1,1,1,,1],[,,,,,,,1],[,1,1,,,,,1,,1,,,,,,1,,,,,,1,,1,,1],[,1,,,,,,1,,,,1,,,,,,,,,,1],[,,1,1,,1,1,1,1,1,1,1,1,1,1,,,,1,,1,1,1,1,,1],[,1,,,,,,,,1],[,1,1,,1,,,,,,,,1,,,,,,1,,,1,,1,,1],[,1,,1,,1,,1,1,1,,1,1,1,,1,,,1,1,,1,1,1,1,1],[,1,1,1,1,1,,,1,1,,,,1,1,1,,,,1,1,,,1,1],[,,1,1,1,1,,1,,1,,1,,1,1,1,1,,,,,1,,1,,1],[1,1,1,1,1,1,1,1,,1,,1,,1,1,1,,,1,1,,,,1,,1],[,,,1],,[,1,1,,1,,,1,1,1,,1,1,1,1,1,1,,1,1,,1,1,1,1,1,1],[,1,,,,,,1,,1,,1,,,,,,,1,1,,1,1],[,,,,,,1,,1,1,,1,,1,,,,,,,,,,1],[,1,1,,1,,,,1,,,,1,1,1,,,,1,,1,1,1,,1,1],,[,1,1,,,,,,,,,,,,,1,,,1,,,,,1],[,1,,,,,,,,,,,,,,,,,,,,,,1],[,1,1,,,,,,,1,,,,1,,,,,1,,,,,,,1]],[,[,1,1,1,1,1,,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1],[,1,1,1,1,1,,1,,1,1,,,1,1,1,1,,1,,,,,1,1,1],[,,1,1,,1,,1,1,,,,1,1,1,1,,,1,,1,1,1,1,,1],[,1,,1,,,,,,,,1,,1,,1,,,,,,,,,,1],[,,1,,1,,,1,,,,,1,1,,,1,,1,1,1,1],[,1],[,1,1,,1,,1,1,,1,,,1,1,1,,,,1,,,1,,1],[1,1,,1,1,1,,,,,,,,,,,,,1,,1,1,1],[,1,1,,,,,,,1,,,1,,1,,1,,1,1,,,1,,,1],[,,1,,,,,,,,,,,,,,,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,,1,,1,,,,,1,1,1,,,1,,1,,,,1],[,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,,,1,1,1,,1,,1,1,1,,,1,1,1,1,,,,1,1],[,,,1,1,,,1,,1,,1,,1,1,1,1,,1,,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,,,,,,,,,,,,,,,,,,1],[,1,1,,1,1,,1,,1,,,,1,1,,,1,1,,1,1,,1],[,1,1,1,1,1,,,1,1,1,,1,1,1,1,1,1,1,1,,1,1,,,1],[,1,1,1,1,1,,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,1,,1,,,1,,,1,,1,1,1,1,1,,1,,1,1],[,,,,,1,,,,1,,,,,1,1,,,,1],[,1,,1,1,1,,1,,,1,1,1,,,1,,,1,,1,,,1],[,,1,,,,,,,,,1,,1,,,,,1,,1],[,1,1,,,,,,,,1,1,1,,,,,,,,1,,,,,1],[,,,,,,,,1,,,,,1,,,1]],[,[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,1,,,1,1,1,1,1,1,1,1,,,,,,,,,1,1],[,,,,,,,,1,,,,1,,1,,1],[,1,,,1,1,,1,,,,1,,,,,,,,1],[,1,,1,,1,,,,1,1,,1,,1,,,,1,1,1,1,1,,,1],,[,1,,,,,,,,1,,,1,1,,,1,,1,1,,1,,1],[,1,,,1,,,,,,,,1,,,,,,,1],[1,1,,,,,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,,1,1,1],,[,1,,,,,,1,,1,,1,1,1,1,1,,,1,,1,1,,,,1],[,1,1,,,1,,1,,1,,,1,1,1,1,,,1,,,1,,,,1],[,1,1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1,,,,1,,1],[,1,,,1,1,,1,1,,,1,1,,1,1,,1,,1,,1],[1,,1,,,,,1,,1,,1,1,1,1,,,,,1,1,,,,1,1],[,1,1,,,,,1,1,,,1,,1,1,1,1,,,,,,,,,,1],,[,1,1,,,1,,,,1,,1,1,1,1,1,,,,1,,,,1,,1],[,,,1,1,,,1,,,,,1,,1,1,1,,1,1,,,,,,1],[,1,,,,,,,,,,,1,,,,1,,,,,,,1,,1],[,1,1,1,1,1,1,1,,1,1,1,1,1,1,,1,1,1,,1,1,,1,1,1,1],[,1,,,,,,,,,,,,,,,,,,,1],[,1,,,,,,1,,,,,1,,1,,,1,1,,1,1,,1],[,1,,,,,,1,,,,,1,1,,,,,,,,1,,,,1],[,,,,,,,,,,,,,,,,,,1,,,1,,,,,1],[,,,,,,,1,,,,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,1,,1,,,,,,,1,,,,,,,,1,,,1],[,1,,,,,,,1],[,,,,,,,,,,1],[,1,,,,,,1,1,,,,,,1],,[,1,1,,,,,,1,,,,,1,1,,,,1],[1,,1,,1,,,,,1,,,,,1,,,,,,,,,1,1],[,1,1,,,,,,,,,1,1,1,1,,,,1,,,,,1,,,1],,[,1,1,,1,,,1,1,,,1,,,1,1,1,,1,,1,1,1,,,,1],[,,,,,1,,,,,1,,,1,1,,,1,,1,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,,1,1,,1,,,,1,,,,,,,,1],[,,,1,,,,,1,,,,,1,,1,,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,,,,1],[,1,,,,,,1,,,,,,,1,1,1,,,1],[,1,,,,,,,,,,1,1,1,,,,,1,,,1],[,,,,,1,,1,,,,,1,1,1,,1,1,,1,1,1,,,1,1],[1,1,,,,,,,1,,,,,1,1,,,,,,,,,,,1],,[,1],[,,,,,,,,,,,,,,,,,,,,,,,,1],[,,1,,,,,1,,,1,,,,1,,1],[,1,,,,,,,,,1]]]
;const $y={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"},Vy=createIcuMessageFn("core/audits/seo/hreflang.js",$y);function isExpectedLanguageCode(e){if("x-default"===e.toLowerCase())return!0;const[t]=e.split("-");return function isValidLang(e){let t=qy;for(;e.length<3;)e+="`";for(let n=0;n<=e.length-1;n++)if(t=t[e.charCodeAt(n)-96],!t)return!1;return!0}(t.toLowerCase())}var Wy=Object.freeze({__proto__:null,default:class Hreflang extends Audit{static get meta(){return{id:"hreflang",title:Vy($y.title),failureTitle:Vy($y.failureTitle),description:Vy($y.description),supportedModes:["navigation"],
requiredArtifacts:["LinkElements","URL"]}}static audit({LinkElements:e}){const t=[],n=e.filter((e=>{const t="alternate"===e.rel,n=e.hreflang,a="body"===e.source;return t&&n&&!a}));for(const e of n){const n=[];let r;isExpectedLanguageCode(e.hreflang)||n.push(Vy($y.unexpectedLanguage)),(a=e.hrefRaw.toLowerCase()).startsWith("http:")||a.startsWith("https:")||n.push(Vy($y.notFullyQualified)),"head"===e.source?r=e.node?{...Audit.makeNodeItem(e.node),snippet:`<link rel="alternate" hreflang="${e.hreflang}" href="${e.hrefRaw}" />`}:{type:"node",snippet:`<link rel="alternate" hreflang="${e.hreflang}" href="${e.hrefRaw}" />`}:"headers"===e.source&&(r=`Link: <${e.hrefRaw}>; rel="alternate"; hreflang="${e.hreflang}"`),r&&n.length&&t.push({source:r,subItems:{type:"subitems",items:n.map((e=>({reason:e})))}})}var a;const r=Audit.makeTableDetails([{key:"source",valueType:"code",subItemsHeading:{key:"reason",valueType:"text"},label:""}],t);return{score:Number(0===t.length),details:r}}},UIStrings:$y})
;const Hy={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/)."},Gy=createIcuMessageFn("core/audits/seo/http-status-code.js",Hy);var Yy=Object.freeze({__proto__:null,default:class HTTPStatusCode extends Audit{static get meta(){return{id:"http-status-code",title:Gy(Hy.title),failureTitle:Gy(Hy.failureTitle),description:Gy(Hy.description),requiredArtifacts:["devtoolsLogs","URL","GatherContext"],supportedModes:["navigation"]}}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=e.URL,r=(await sc.request({devtoolsLog:n,URL:a},t)).statusCode;return r>=400&&r<=599?{score:0,displayValue:`${r}`}:{score:1}}},UIStrings:Hy});function trimLine(e){return e?Array.isArray(e)?e.map(trimLine):String(e).trim():null}function removeComments(e){
var t=e.indexOf("#");return t>-1?e.substr(0,t):e}function splitLine(e){var t=String(e).indexOf(":");return!e||t<0?null:[e.slice(0,t),e.slice(t+1)]}function formatUserAgent(e){var t=e.toLowerCase(),n=t.indexOf("/");return n>-1&&(t=t.substr(0,n)),t.trim()}function normaliseEncoding(e){try{return urlEncodeToUpper(encodeURI(e).replace(/%25/g,"%"))}catch(t){return e}}function urlEncodeToUpper(e){return e.replace(/%[0-9a-fA-F]{2}/g,(function(e){return e.toUpperCase()}))}function matches(e,t){var n=new Array(t.length+1),a=1;n[0]=0;for(var r=0;r<e.length;r++){if("$"===e[r]&&r+1===e.length)return n[a-1]===t.length;if("*"==e[r]){a=t.length-n[0]+1;for(var o=1;o<a;o++)n[o]=n[o-1]+1}else{var i=0;for(o=0;o<a;o++)n[o]<t.length&&t[n[o]]===e[r]&&(n[i++]=n[o]+1);if(0==i)return!1;a=i}}return!0}function parseUrl(e){try{return new URL(e,"http://robots-relative.samclarke.com/")}catch(e){return null}}function Robots$1(e,t){this._url=parseUrl(e)||{},this._url.port=this._url.port||80,
this._rules=Object.create(null),this._sitemaps=[],this._preferredHost=null,function parseRobots(e,t){for(var n=e.split(/\r\n|\r|\n/).map(removeComments).map(splitLine).map(trimLine),a=[],r=!0,o=0;o<n.length;o++){var i=n[o];if(i&&i[0]){switch(i[0].toLowerCase()){case"user-agent":r&&(a.length=0),i[1]&&a.push(formatUserAgent(i[1]));break;case"disallow":t.addRule(a,i[1],!1,o+1);break;case"allow":t.addRule(a,i[1],!0,o+1);break;case"crawl-delay":t.setCrawlDelay(a,i[1]);break;case"sitemap":i[1]&&t.addSitemap(i[1]);break;case"host":i[1]&&t.setPreferredHost(i[1].toLowerCase())}r="user-agent"!==i[0].toLowerCase()}}}(t||"",this)}Robots$1.prototype.addRule=function(e,t,n,a){var r=this._rules;e.forEach((function(e){r[e]=r[e]||[],t&&r[e].push({pattern:normaliseEncoding(t),allow:n,lineNumber:a})}))},Robots$1.prototype.setCrawlDelay=function(e,t){var n=this._rules,a=Number(t);e.forEach((function(e){n[e]=n[e]||[],isNaN(a)||(n[e].crawlDelay=a)}))},Robots$1.prototype.addSitemap=function(e){
this._sitemaps.push(e)},Robots$1.prototype.setPreferredHost=function(e){this._preferredHost=e},Robots$1.prototype._getRule=function(e,t){var n=parseUrl(e)||{},a=formatUserAgent(t||"*");if(n.port=n.port||80,n.protocol===this._url.protocol&&n.hostname===this._url.hostname&&n.port===this._url.port){var r=this._rules[a]||this._rules["*"]||[];return function findRule(e,t){for(var n=null,a=0;a<t.length;a++){var r=t[a];matches(r.pattern,e)&&(!n||r.pattern.length>n.pattern.length||r.pattern.length==n.pattern.length&&r.allow&&!n.allow)&&(n=r)}return n}(urlEncodeToUpper(n.pathname+n.search),r)}},Robots$1.prototype.isAllowed=function(e,t){var n=this._getRule(e,t);if(void 0!==n)return!n||n.allow},Robots$1.prototype.getMatchingLineNumber=function(e,t){var n=this._getRule(e,t);return n?n.lineNumber:-1},Robots$1.prototype.isDisallowed=function(e,t){return!this.isAllowed(e,t)},Robots$1.prototype.getCrawlDelay=function(e){var t=formatUserAgent(e||"*")
;return(this._rules[t]||this._rules["*"]||{}).crawlDelay},Robots$1.prototype.getPreferredHost=function(){return this._preferredHost},Robots$1.prototype.getSitemaps=function(){return this._sitemaps.slice(0)};var Ky=Robots$1;const Jy=new Set([void 0,"Googlebot","bingbot","DuckDuckBot","archive.org_bot"]),Zy=new Set(["noindex","none"]),Xy="unavailable_after",Qy={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/)."},eb=createIcuMessageFn("core/audits/seo/is-crawlable.js",Qy);function hasBlockingDirective(e){return e.split(",").map((e=>e.toLowerCase().trim())).some((e=>Zy.has(e)||function isUnavailable(e){const t=e.split(":");if(t.length<=1||t[0]!==Xy)return!1;const n=Date.parse(t.slice(1).join(":"));return!isNaN(n)&&n<Date.now()
}(e)))}function getUserAgentFromHeaderDirectives(e){const t=e.match(/^([^,:]+):/);if(t&&t[1].toLowerCase()!==Xy)return t[1]}class IsCrawlable extends Audit{static get meta(){return{id:"is-crawlable",title:eb(Qy.title),failureTitle:eb(Qy.failureTitle),description:eb(Qy.description),supportedModes:["navigation"],requiredArtifacts:["MetaElements","RobotsTxt","URL","devtoolsLogs"]}}static handleMetaElement(e){const t=e.content||"";if(hasBlockingDirective(t))return{source:{...Audit.makeNodeItem(e.node),snippet:`<meta name="${e.name}" content="${t}" />`}}}static determineIfCrawlableForUserAgent(e,t,n,a,r){const o=[];let i;if(e&&(i=n.find((t=>t.name===e.toLowerCase()))),i||(i=n.find((e=>"robots"===e.name))),i){const e=IsCrawlable.handleMetaElement(i);e&&o.push(e)}for(const n of t.responseHeaders||[]){if("x-robots-tag"!==n.name.toLowerCase())continue;const t=getUserAgentFromHeaderDirectives(n.value);if(t!==e&&void 0!==t)continue;let a=n.value.trim()
;e&&n.value.startsWith(`${e}:`)&&(a=n.value.replace(`${e}:`,"")),hasBlockingDirective(a)&&o.push({source:`${n.name}: ${n.value}`})}if(a&&!a.isAllowed(t.url,e)){const e=a.getMatchingLineNumber(t.url)||1;o.push({source:{type:"source-location",url:r.href,urlProvider:"network",line:e-1,column:0}})}return o}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=await sc.request({devtoolsLog:n,URL:e.URL},t),r=new URL("/robots.txt",a.url),o=e.RobotsTxt.content?function(e,t){return new Ky(e,t)}(r.href,e.RobotsTxt.content):void 0,i=[],s=[];for(const t of Jy){const n=IsCrawlable.determineIfCrawlableForUserAgent(t,a,e.MetaElements,o,r);n.length>0&&i.push(t),void 0===t&&s.push(...n)}const c=i.length===Jy.size?0:1,l=[];if(c&&i.length>0){const e=i.filter(Boolean).join(", ");l.push(`The following bot user agents are blocked from crawling: ${e}. The audit is otherwise passing, because at least one bot was explicitly allowed.`)}return{score:c,details:Audit.makeTableDetails([{key:"source",
valueType:"code",label:"Blocking Directive Source"}],0===c?s:[]),warnings:l}}}var tb=Object.freeze({__proto__:null,default:IsCrawlable,UIStrings:Qy});const nb=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"]),ab={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,\n =1 {1 link found}\n other {# links found}\n }"},rb=createIcuMessageFn("core/audits/seo/link-text.js",ab);var ob=Object.freeze({__proto__:null,default:class LinkText extends Audit{static get meta(){return{id:"link-text",title:rb(ab.title),failureTitle:rb(ab.failureTitle),description:rb(ab.description),requiredArtifacts:["URL","AnchorElements"]}}static audit(e){const t=e.AnchorElements.filter((e=>e.href&&!e.rel.includes("nofollow"))).filter((t=>{const n=t.href.toLowerCase();return!(n.startsWith("javascript:")||n.startsWith("mailto:")||UrlUtils.equalWithExcludedFragments(t.href,e.URL.finalDisplayedUrl))&&nb.has(t.text.trim().toLowerCase())})).map((e=>({href:e.href,text:e.text.trim()}))),n=Audit.makeTableDetails([{key:"href",valueType:"url",
label:"Link destination"},{key:"text",valueType:"text",label:"Link Text"}],t);let a;return t.length&&(a=rb(ab.displayValue,{itemCount:t.length})),{score:Number(0===t.length),details:n,displayValue:a}}},UIStrings:ab});const ib={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"},sb=createIcuMessageFn("core/audits/seo/manual/structured-data.js",ib);var cb=Object.freeze({__proto__:null,default:class StructuredData extends ManualAudit{static get meta(){return Object.assign({id:"structured-data",description:sb(ib.description),title:sb(ib.title)},super.partialMeta)}},UIStrings:ib});const lb={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."},ub=createIcuMessageFn("core/audits/seo/meta-description.js",lb);var db=Object.freeze({__proto__:null,default:class Description extends Audit{static get meta(){return{id:"meta-description",title:ub(lb.title),failureTitle:ub(lb.failureTitle),description:ub(lb.description),requiredArtifacts:["MetaElements"]}}static audit(e){const t=e.MetaElements.find((e=>"description"===e.name));if(!t)return{score:0};return 0===(t.content||"").trim().length?{score:0,explanation:ub(lb.explanation)}:{score:1}}},UIStrings:lb})
;const mb="application/x-java-applet",pb="application/x-java-bean",gb=new Set(["application/x-shockwave-flash",mb,pb,"application/x-silverlight","application/x-silverlight-2"]),hb=new Set(["swf","flv","class","xap"]),fb=new Set(["code","movie","source","src"]),yb={title:"Document avoids plugins",failureTitle:"Document uses plugins",description:"Search engines can't index plugin content, and many devices restrict plugins or don't support them. [Learn more about avoiding plugins](https://developer.chrome.com/docs/lighthouse/seo/plugins/)."},bb=createIcuMessageFn("core/audits/seo/plugins.js",yb);function isPluginURL(e){try{const t=new URL(e,"http://example.com").pathname.split(".");if(t.length<2)return!1;const n=t[t.length-1];return hb.has(n.trim().toLowerCase())}catch(e){return!1}}var vb=Object.freeze({__proto__:null,default:class Plugins extends Audit{static get meta(){return{id:"plugins",title:bb(yb.title),failureTitle:bb(yb.failureTitle),description:bb(yb.description),
requiredArtifacts:["EmbeddedContent"]}}static audit(e){const t=e.EmbeddedContent.filter((e=>{if("APPLET"===e.tagName)return!0;if(("EMBED"===e.tagName||"OBJECT"===e.tagName)&&e.type&&function isPluginType(e){return e=e.trim().toLowerCase(),gb.has(e)||e.startsWith(mb)||e.startsWith(pb)}(e.type))return!0;const t=e.src||e.code;if("EMBED"===e.tagName&&t&&isPluginURL(t))return!0;if("OBJECT"===e.tagName&&e.data&&isPluginURL(e.data))return!0;return e.params.filter((e=>fb.has(e.name.trim().toLowerCase())&&isPluginURL(e.value))).length>0})).map((e=>({source:Audit.makeNodeItem(e.node)}))),n=Audit.makeTableDetails([{key:"source",valueType:"code",label:"Element source"}],t);return{score:Number(0===t.length),details:n}}},UIStrings:yb});const wb="sitemap",Db="user-agent",Eb="allow",Tb="disallow",Sb=new Set([Eb,Tb]),Cb=new Set([Db,Tb,Eb,wb,"crawl-delay","clean-param","host","request-rate","visit-time","noindex"]),_b=new Set(["https:","http:","ftp:"]),Ab={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,\n =1 {1 error found}\n other {# errors found}\n }",explanation:"Lighthouse was unable to download a robots.txt file"},kb=createIcuMessageFn("core/audits/seo/robots-txt.js",Ab);function parseLine(e){const t=e.indexOf("#");if(-1!==t&&(e=e.substr(0,t)),0===(e=e.trim()).length)return null;const n=e.indexOf(":");if(-1===n)throw new Error("Syntax not understood");const a=e.slice(0,n).trim().toLowerCase(),r=e.slice(n+1).trim();return function verifyDirective(e,t){if(!Cb.has(e))throw new Error("Unknown directive");if(e===wb){let e;try{e=new URL(t)}catch(e){
throw new Error("Invalid sitemap URL")}if(!_b.has(e.protocol))throw new Error("Invalid sitemap URL protocol")}if(e===Db&&!t)throw new Error("No user-agent specified");if(e===Eb||e===Tb){if(""!==t&&"/"!==t[0]&&"*"!==t[0])throw new Error('Pattern should either be empty, start with "/" or "*"');const e=t.indexOf("$");if(-1!==e&&e!==t.length-1)throw new Error('"$" should only be used at the end of the pattern')}}(a,r),{directive:a,value:r}}var Fb=Object.freeze({__proto__:null,default:class RobotsTxt extends Audit{static get meta(){return{id:"robots-txt",title:kb(Ab.title),failureTitle:kb(Ab.failureTitle),description:kb(Ab.description),requiredArtifacts:["RobotsTxt"]}}static audit(e){const{status:t,content:n}=e.RobotsTxt;if(!t)return{score:0,explanation:kb(Ab.explanation)};if(t>=500)return{score:0,displayValue:kb(Ab.displayValueHttpBadCode,{statusCode:t})};if(t>=400||""===n)return{score:1,notApplicable:!0};if(null===n)throw new Error(`Status ${t} was valid, but content was null`)
;const a=function validateRobots(e){const t=[];let n=!1;return e.split(/\r\n|\r|\n/).forEach(((e,a)=>{let r;try{r=parseLine(e)}catch(n){t.push({index:(a+1).toString(),line:e,message:n.message.toString()})}r&&(r.directive===Db?n=!0:!n&&Sb.has(r.directive)&&t.push({index:(a+1).toString(),line:e,message:"No user-agent specified"}))})),t}(n),r=Audit.makeTableDetails([{key:"index",valueType:"text",label:"Line #"},{key:"line",valueType:"code",label:"Content"},{key:"message",valueType:"code",label:"Error"}],a);let o;return a.length&&(o=kb(Ab.displayValueValidationError,{itemCount:a.length})),{score:Number(0===a.length),details:r,displayValue:o}}},UIStrings:Ab});function getTappableRectsFromClientRects(e){return e=mergeTouchingClientRects(e=function filterOutRectsContainedByOthers(e){const t=new Set(e);for(const n of e)for(const a of e)if(n!==a&&t.has(a)&&rectContains(a,n)){t.delete(n);break}return Array.from(t)}(e=function filterOutTinyRects(e){return e.filter((e=>e.width>1&&e.height>1))
}(e)))}function almostEqual(e,t){return Math.abs(e-t)<=10}function mergeTouchingClientRects(e){for(let t=0;t<e.length;t++)for(let n=t+1;n<e.length;n++){const a=e[t],r=e[n],o=almostEqual(a.top,r.top)||almostEqual(a.bottom,r.bottom),i=almostEqual(a.left,r.left)||almostEqual(a.right,r.right);if(rectsTouchOrOverlap(a,r)&&(o||i)){const t=getBoundingRectWithPadding([a,r],0),n=getRectCenterPoint(t);if(!rectContainsPoint(a,n)&&!rectContainsPoint(r,n))continue;return(e=e.filter((e=>e!==a&&e!==r))).push(t),mergeTouchingClientRects(e)}}return e}const Rb={title:"Tap targets are sized appropriately",failureTitle:"Tap targets are not sized appropriately",description:"Interactive elements like buttons and links should be large enough (48x48px), and have enough space around them, to be easy enough to tap without overlapping onto other elements. [Learn more about tap targets](https://developer.chrome.com/docs/lighthouse/seo/tap-targets/).",tapTargetHeader:"Tap Target",
overlappingTargetHeader:"Overlapping Target",explanationViewportMetaNotOptimized:"Tap targets are too small because there's no viewport meta tag optimized for mobile screens",displayValue:"{decimalProportion, number, percent} appropriately sized tap targets"},xb=createIcuMessageFn("core/audits/seo/tap-targets.js",Rb);function clientRectBelowMinimumSize(e){return e.width<48||e.height<48}function getOverlapFailureForTargetPair(e,t){let n=null;for(const o of e){const e=(r=48,function addRectWidthAndHeight({left:e,top:t,right:n,bottom:a}){return{left:e,top:t,right:n,bottom:a,width:n-e,height:a-t}}({left:(a=o).left+a.width/2-r/2,top:a.top+a.height/2-r/2,right:a.right-a.width/2+r/2,bottom:a.bottom-a.height/2+r/2})),i=getRectOverlapArea(e,o);for(const a of t){const t=getRectOverlapArea(e,a),r=t/i;r<.25||(!n||r>n.overlapScoreRatio)&&(n={overlapScoreRatio:r,tapTargetScore:i,overlappingTargetScore:t})}}var a,r;return n}function getTableItems(e){const t=e.map((e=>{
const t=function getLargestRect(e){let t=e[0];for(const n of e)getRectArea(n)>getRectArea(t)&&(t=n);return t}(e.tapTarget.clientRects),n=Math.floor(t.width),a=Math.floor(t.height),r=n+"x"+a;return{tapTarget:Audit.makeNodeItem(e.tapTarget.node),overlappingTarget:Audit.makeNodeItem(e.overlappingTarget.node),tapTargetScore:e.tapTargetScore,overlappingTargetScore:e.overlappingTargetScore,overlapScoreRatio:e.overlapScoreRatio,size:r,width:n,height:a}}));return t.sort(((e,t)=>t.overlapScoreRatio-e.overlapScoreRatio)),t}class TapTargets extends Audit{static get meta(){return{id:"tap-targets",title:xb(Rb.title),failureTitle:xb(Rb.failureTitle),description:xb(Rb.description),requiredArtifacts:["MetaElements","TapTargets"]}}static async audit(e,t){if("desktop"===t.settings.formFactor)return{score:1,notApplicable:!0};if(!(await By.request(e.MetaElements,t)).isMobileOptimized)return{score:0,explanation:xb(Rb.explanationViewportMetaNotOptimized)};const n=function getBoundedTapTargets(e){
return e.map((e=>({tapTarget:e,paddedBoundsRect:getBoundingRectWithPadding(e.clientRects,48)})))}(e.TapTargets),a=function getAllOverlapFailures(e,t){const n=[];return e.forEach((e=>{const a=getTappableRectsFromClientRects(e.tapTarget.clientRects);for(const r of t){if(r===e)continue;if(!rectsTouchOrOverlap(e.paddedBoundsRect,r.paddedBoundsRect))continue;if(e.tapTarget.href===r.tapTarget.href&&/https?:\/\//.test(e.tapTarget.href))continue;const t=r.tapTarget.clientRects;if(allRectsContainedWithinEachOther(a,t))continue;const o=getOverlapFailureForTargetPair(a,t);o&&n.push({...o,tapTarget:e.tapTarget,overlappingTarget:r.tapTarget})}})),n}(function getTooSmallTargets(e){return e.filter((e=>e.tapTarget.clientRects.every(clientRectBelowMinimumSize)))}(n),n),r=getTableItems(function mergeSymmetricFailures(e){const t=[];return e.forEach(((n,a)=>{const r=e.find((e=>e.tapTarget===n.overlappingTarget&&e.overlappingTarget===n.tapTarget));if(!r)return void t.push(n)
;const{overlapScoreRatio:o}=n,{overlapScoreRatio:i}=r;(o>i||o===i&&a<e.indexOf(r))&&t.push(n)})),t}(a)),o=[{key:"tapTarget",valueType:"node",label:xb(Rb.tapTargetHeader)},{key:"size",valueType:"text",label:xb(Dr.columnSize)},{key:"overlappingTarget",valueType:"node",label:xb(Rb.overlappingTargetHeader)}],i=Audit.makeTableDetails(o,r),s=e.TapTargets.length,c=new Set(a.map((e=>e.tapTarget))).size;let l=1,u=1;c>0&&(u=(s-c)/s,l=.89*u);return{score:l,details:i,displayValue:xb(Rb.displayValue,{decimalProportion:u})}}}TapTargets.FINGER_SIZE_PX=48;var Ib=Object.freeze({__proto__:null,default:TapTargets,UIStrings:Rb});const Nb={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"},Lb=createIcuMessageFn("core/audits/server-response-time.js",Nb);class ServerResponseTime extends Audit{static get meta(){return{id:"server-response-time",title:Lb(Nb.title),failureTitle:Lb(Nb.failureTitle),description:Lb(Nb.description),supportedModes:["navigation"],requiredArtifacts:["devtoolsLogs","URL","GatherContext"]}}static calculateResponseTime(e){const t=e.timing;return t?t.receiveHeadersEnd-t.sendEnd:0}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=await sc.request({devtoolsLog:n,URL:e.URL},t),r=ServerResponseTime.calculateResponseTime(a),o=r<600,i=Lb(Nb.displayValue,{timeInMs:r}),s=[{key:"url",valueType:"url",label:Lb(Dr.columnURL)},{key:"responseTime",valueType:"timespanMs",label:Lb(Dr.columnTimeSpent)}],c=Audit.makeOpportunityDetails(s,[{url:a.url,responseTime:r}],{overallSavingsMs:r-100});return{numericValue:r,numericUnit:"millisecond",score:Number(o),displayValue:i,details:c}}}
var Mb=Object.freeze({__proto__:null,default:ServerResponseTime,UIStrings:Nb});const Pb={title:"Registers a service worker that controls page and `start_url`",failureTitle:"Does not register a service worker that controls page and `start_url`",description:"The service worker is the technology that enables your app to use many Progressive Web App features, such as offline, add to homescreen, and push notifications. [Learn more about Service Workers](https://developer.chrome.com/docs/lighthouse/pwa/service-worker/).",explanationOutOfScope:"This origin has one or more service workers, however the page ({pageUrl}) is not in scope.",explanationNoManifest:"This page is controlled by a service worker, however no `start_url` was found because no manifest was fetched.",explanationBadManifest:"This page is controlled by a service worker, however no `start_url` was found because manifest failed to parse as valid JSON",
explanationBadStartUrl:"This page is controlled by a service worker, however the `start_url` ({startUrl}) is not in the service worker's scope ({scopeUrl})"},Ob=createIcuMessageFn("core/audits/service-worker.js",Pb);class ServiceWorker extends Audit{static get meta(){return{id:"service-worker",title:Ob(Pb.title),failureTitle:Ob(Pb.failureTitle),description:Ob(Pb.description),supportedModes:["navigation"],requiredArtifacts:["URL","ServiceWorker","WebAppManifest"]}}static getVersionsForOrigin(e,t){return e.filter((e=>"activated"===e.status)).filter((e=>new URL(e.scriptURL).origin===t.origin))}static getControllingServiceWorker(e,t,n){const a=[];for(const n of e){const e=t.find((e=>e.registrationId===n.registrationId));if(e){const t=new URL(e.scopeURL).href,r=new URL(n.scriptURL).href;a.push({scopeUrl:t,scriptUrl:r})}}return a.filter((e=>n.href.startsWith(e.scopeUrl))).sort(((e,t)=>e.scopeUrl.length-t.scopeUrl.length)).pop()}static checkStartUrl(e,t){
if(!e)return Ob(Pb.explanationNoManifest);if(!e.value)return Ob(Pb.explanationBadManifest);const n=e.value.start_url.value;return n.startsWith(t)?void 0:Ob(Pb.explanationBadStartUrl,{startUrl:n,scopeUrl:t})}static audit(e){const{mainDocumentUrl:t}=e.URL;if(!t)throw new Error("mainDocumentUrl must exist in navigation mode");const n=new URL(t),{versions:a,registrations:r}=e.ServiceWorker,o=ServiceWorker.getVersionsForOrigin(a,n);if(0===o.length)return{score:0};const i=ServiceWorker.getControllingServiceWorker(o,r,n);if(!i)return{score:0,explanation:Ob(Pb.explanationOutOfScope,{pageUrl:n.href})};const{scriptUrl:s,scopeUrl:c}=i,l={type:"debugdata",scriptUrl:s,scopeUrl:c},u=ServiceWorker.checkStartUrl(e.WebAppManifest,i.scopeUrl);return u?{score:0,details:l,explanation:u}:{score:1,details:l}}}var Bb=Object.freeze({__proto__:null,default:ServiceWorker,UIStrings:Pb});class MultiCheckAudit extends Audit{static async audit(e,t){const n=await this.audit_(e,t);return this.createAuditProduct(n)}
static createAuditProduct(e){const t={...e,...e.manifestValues,manifestValues:void 0,allChecks:void 0};e.manifestValues?.allChecks&&e.manifestValues.allChecks.forEach((e=>{t[e.id]=e.passing}));const n={type:"debugdata",items:[t]};return e.failures.length>0?{score:0,explanation:`Failures: ${e.failures.join(",\n")}.`,details:n}:{score:1,details:n}}static audit_(e,t){throw new Error("audit_ unimplemented")}}const Ub={title:"Configured for a custom splash screen",failureTitle:"Is not configured for a custom splash screen",description:"A themed splash screen ensures a high-quality experience when users launch your app from their homescreens. [Learn more about splash screens](https://developer.chrome.com/docs/lighthouse/pwa/splash-screen/)."},jb=createIcuMessageFn("core/audits/splash-screen.js",Ub);class SplashScreen extends MultiCheckAudit{static get meta(){return{id:"splash-screen",title:jb(Ub.title),failureTitle:jb(Ub.failureTitle),description:jb(Ub.description),
supportedModes:["navigation"],requiredArtifacts:["WebAppManifest","InstallabilityErrors"]}}static assessManifest(e,t){if(e.isParseFailure&&e.parseFailureReason)return void t.push(e.parseFailureReason);const n=["hasName","hasBackgroundColor","hasThemeColor","hasIconsAtLeast512px"];e.allChecks.filter((e=>n.includes(e.id))).forEach((e=>{e.passing||t.push(e.failureText)}))}static async audit_(e,t){const n=[],a=await ah.request(e,t);return SplashScreen.assessManifest(a,n),{failures:n,manifestValues:a}}}var zb=Object.freeze({__proto__:null,default:SplashScreen,UIStrings:Ub});const qb={title:"Sets a theme color for the address bar.",failureTitle:"Does not set a theme color for the address bar.",description:"The browser address bar can be themed to match your site. [Learn more about theming the address bar](https://developer.chrome.com/docs/lighthouse/pwa/themed-omnibox/)."},$b=createIcuMessageFn("core/audits/themed-omnibox.js",qb);class ThemedOmnibox extends MultiCheckAudit{static get meta(){
return{id:"themed-omnibox",title:$b(qb.title),failureTitle:$b(qb.failureTitle),description:$b(qb.description),supportedModes:["navigation"],requiredArtifacts:["WebAppManifest","InstallabilityErrors","MetaElements"]}}static assessMetaThemecolor(e,t){e?e.content||t.push("The theme-color meta tag did not contain a content value"):t.push('No `<meta name="theme-color">` tag found')}static assessManifest(e,t){if(e.isParseFailure&&e.parseFailureReason)return void t.push(e.parseFailureReason);const n=e.allChecks.find((e=>"hasThemeColor"===e.id));n&&!n.passing&&t.push(n.failureText)}static async audit_(e,t){const n=[],a=e.MetaElements.find((e=>"theme-color"===e.name)),r=await ah.request(e,t);return ThemedOmnibox.assessManifest(r,n),ThemedOmnibox.assessMetaThemecolor(a,n),{failures:n,manifestValues:r,themeColor:a?.content||null}}}var Vb=Object.freeze({__proto__:null,default:ThemedOmnibox,UIStrings:qb});const Wb={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"},Hb=createIcuMessageFn("core/audits/third-party-summary.js",Wb);class ThirdPartySummary extends Audit{static get meta(){return{id:"third-party-summary",title:Hb(Wb.title),failureTitle:Hb(Wb.failureTitle),description:Hb(Wb.description),requiredArtifacts:["traces","devtoolsLogs","URL"]}}static getSummaries(e,t,n,a){const r=new Map,o=new Map,i={mainThreadTime:0,blockingTime:0,transferSize:0};for(const t of e){const e=r.get(t.url)||{...i}
;e.transferSize+=t.transferSize,r.set(t.url,e)}const s=getJavaScriptURLs(e);for(const e of t){const t=getAttributableURLForTask(e,s),a=r.get(t)||{...i},o=e.selfTime*n;a.mainThreadTime+=o,a.blockingTime+=Math.max(o-50,0),r.set(t,a)}const c=new Map;for(const[e,t]of r.entries()){const n=a.entityByUrl.get(e);if(!n){r.delete(e);continue}const s=o.get(n)||{...i};s.transferSize+=t.transferSize,s.mainThreadTime+=t.mainThreadTime,s.blockingTime+=t.blockingTime,o.set(n,s);const l=c.get(n)||[];l.push(e),c.set(n,l)}return{byURL:r,byEntity:o,urls:c}}static makeSubItems(e,t,n){let a=(t.urls.get(e)||[]).map((e=>({url:e,...t.byURL.get(e)}))).filter((e=>e.transferSize>0)).sort(((e,t)=>t.blockingTime-e.blockingTime||t.transferSize-e.transferSize));const r={transferSize:0,blockingTime:0},o=Math.max(4096,n.transferSize/20),i=Math.min(5,a.length);let s=0;for(;s<i;){const e=a[s];if(0===e.blockingTime&&e.transferSize<o)break;s++,r.transferSize+=e.transferSize,r.blockingTime+=e.blockingTime}
if(!r.blockingTime&&!r.transferSize)return[];a=a.slice(0,s);const c={url:Hb(Dr.otherResourcesLabel),transferSize:n.transferSize-r.transferSize,blockingTime:n.blockingTime-r.blockingTime};return c.transferSize>o&&a.push(c),a}static async audit(e,t){const n=t.settings||{},a=e.traces[Audit.DEFAULT_PASS],r=e.devtoolsLogs[Audit.DEFAULT_PASS],o=await go.request(r,t),i=await li.request({URL:e.URL,devtoolsLog:r},t),s=i.firstParty,c=await Rd.request(a,t),l="simulate"===n.throttlingMethod?n.throttling.cpuSlowdownMultiplier:1,u=ThirdPartySummary.getSummaries(o,c,l,i),d={wastedBytes:0,wastedMs:0},m=Array.from(u.byEntity.entries()).filter((([e])=>!(s&&s===e))).map((([e,t])=>(d.wastedBytes+=t.transferSize,d.wastedMs+=t.blockingTime,{...t,entity:e.name,subItems:{type:"subitems",items:ThirdPartySummary.makeSubItems(e,u,t)}}))).sort(((e,t)=>t.blockingTime-e.blockingTime||t.transferSize-e.transferSize)),p=[{key:"entity",valueType:"text",label:Hb(Wb.columnThirdParty),subItemsHeading:{key:"url",
valueType:"url"}},{key:"transferSize",granularity:1,valueType:"bytes",label:Hb(Dr.columnTransferSize),subItemsHeading:{key:"transferSize"}},{key:"blockingTime",granularity:1,valueType:"ms",label:Hb(Dr.columnBlockingTime),subItemsHeading:{key:"blockingTime"}}];return m.length?{score:Number(d.wastedMs<=250),displayValue:Hb(Wb.displayValue,{timeInMs:d.wastedMs}),details:Audit.makeTableDetails(p,m,d)}:{score:1,notApplicable:!0}}}var Gb=Object.freeze({__proto__:null,default:ThirdPartySummary,UIStrings:Wb});const Yb={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,\n =1 {# facade alternative available}\n other {# facade alternatives available}\n }",columnProduct:"Product",categoryVideo:"{productName} (Video)",categoryCustomerSuccess:"{productName} (Customer Success)",categoryMarketing:"{productName} (Marketing)",categorySocial:"{productName} (Social)"},Kb=createIcuMessageFn("core/audits/third-party-facades.js",Yb),Jb={video:Yb.categoryVideo,"customer-success":Yb.categoryCustomerSuccess,marketing:Yb.categoryMarketing,social:Yb.categorySocial};class ThirdPartyFacades extends Audit{static get meta(){return{id:"third-party-facades",title:Kb(Yb.title),failureTitle:Kb(Yb.failureTitle),description:Kb(Yb.description),supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","URL"]}}static condenseItems(e){e.sort(((e,t)=>t.transferSize-e.transferSize));let t=e.findIndex((e=>e.transferSize<1e3))||1;if((-1===t||t>5)&&(t=5),t>=e.length-1)return
;const n=e.splice(t).reduce(((e,t)=>(e.transferSize+=t.transferSize,e.blockingTime+=t.blockingTime,e)));n.transferSize<1e3||(n.url=Kb(Dr.otherResourcesLabel),e.push(n))}static getProductsWithFacade(e,t){const n=new Map;for(const a of e.keys()){const e=t.entityByUrl.get(a);if(!e||t.isFirstParty(a))continue;const r=ci.getProduct(a);r&&r.facades&&r.facades.length&&(n.has(r.name)||n.set(r.name,{product:r,entity:e}))}return Array.from(n.values())}static async audit(e,t){const n=t.settings,a=e.traces[Audit.DEFAULT_PASS],r=e.devtoolsLogs[Audit.DEFAULT_PASS],o=await go.request(r,t),i=await li.request({URL:e.URL,devtoolsLog:r},t),s=await Rd.request(a,t),c="simulate"===n.throttlingMethod?n.throttling.cpuSlowdownMultiplier:1,l=ThirdPartySummary.getSummaries(o,s,c,i),u=ThirdPartyFacades.getProductsWithFacade(l.byURL,i),d=[];for(const{product:e,entity:t}of u){const n=Jb[e.categories[0]];let a;a=n?Kb(n,{productName:e.name}):e.name;const r=l.urls.get(t),o=l.byEntity.get(t);if(!r||!o)continue
;const i=Array.from(r).map((e=>({url:e,...l.byURL.get(e)})));this.condenseItems(i),d.push({product:a,transferSize:o.transferSize,blockingTime:o.blockingTime,subItems:{type:"subitems",items:i},entity:t.name})}if(!d.length)return{score:1,notApplicable:!0};const m=[{key:"product",valueType:"text",subItemsHeading:{key:"url",valueType:"url"},label:Kb(Yb.columnProduct)},{key:"transferSize",valueType:"bytes",subItemsHeading:{key:"transferSize"},granularity:1,label:Kb(Dr.columnTransferSize)},{key:"blockingTime",valueType:"ms",subItemsHeading:{key:"blockingTime"},granularity:1,label:Kb(Dr.columnBlockingTime)}];return{score:0,displayValue:Kb(Yb.displayValue,{itemCount:d.length}),details:Audit.makeTableDetails(m,d)}}}var Zb=Object.freeze({__proto__:null,default:ThirdPartyFacades,UIStrings:Yb});const Xb={title:"Timing budget",
description:"Set a timing budget to help you keep an eye on the performance of your site. Performant sites load fast and respond to user input events quickly. [Learn more about performance budgets](https://developers.google.com/web/tools/lighthouse/audits/budgets).",columnTimingMetric:"Metric",columnMeasurement:"Measurement"},Qb=createIcuMessageFn("core/audits/timing-budget.js",Xb);var ev=Object.freeze({__proto__:null,default:class TimingBudget extends Audit{static get meta(){return{id:"timing-budget",title:Qb(Xb.title),description:Qb(Xb.description),scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,supportedModes:["navigation"],requiredArtifacts:["devtoolsLogs","traces","URL","GatherContext"]}}static getRowLabel(e){return Qb({"first-contentful-paint":Dr.firstContentfulPaintMetric,interactive:Dr.interactiveMetric,"first-meaningful-paint":Dr.firstMeaningfulPaintMetric,"max-potential-fid":Dr.maxPotentialFIDMetric,"total-blocking-time":Dr.totalBlockingTimeMetric,
"speed-index":Dr.speedIndexMetric,"largest-contentful-paint":Dr.largestContentfulPaintMetric,"cumulative-layout-shift":Dr.cumulativeLayoutShiftMetric}[e])}static getMeasurement(e,t){return{"first-contentful-paint":t.firstContentfulPaint,interactive:t.interactive,"first-meaningful-paint":t.firstMeaningfulPaint,"max-potential-fid":t.maxPotentialFID,"total-blocking-time":t.totalBlockingTime,"speed-index":t.speedIndex,"largest-contentful-paint":t.largestContentfulPaint,"cumulative-layout-shift":t.cumulativeLayoutShift}[e]}static tableItems(e,t){let n=[];if(!e.timings)return n;n=e.timings.map((e=>{const n=e.metric,a=this.getRowLabel(n),r=this.getMeasurement(n,t);return{metric:n,label:a,measurement:r,overBudget:r&&r>e.budget?r-e.budget:void 0}})).sort(((e,t)=>(t.overBudget||0)-(e.overBudget||0)));const a=n.find((e=>"cumulative-layout-shift"===e.metric));return a&&("number"==typeof a.measurement&&(a.measurement={type:"numeric",value:Number(a.measurement),granularity:.01}),
"number"==typeof a.overBudget&&(a.overBudget={type:"numeric",value:Number(a.overBudget),granularity:.01})),n}static async audit(e,t){const n=e.GatherContext,a=e.devtoolsLogs[Audit.DEFAULT_PASS],r=e.traces[Audit.DEFAULT_PASS],o=e.URL,i=await sc.request({URL:o,devtoolsLog:a},t),s={trace:r,devtoolsLog:a,gatherContext:n,settings:t.settings,URL:o},c=(await ff.request(s,t)).metrics,l=Budget.getMatchingBudget(t.settings.budgets,i.url);if(!l)return{score:0,notApplicable:!0};const u=[{key:"label",valueType:"text",label:Qb(Xb.columnTimingMetric)},{key:"measurement",valueType:"ms",label:Qb(Xb.columnMeasurement)},{key:"overBudget",valueType:"ms",label:Qb(Dr.columnOverBudget)}];return{details:Audit.makeTableDetails(u,this.tableItems(l,c)),score:1}}},UIStrings:Xb});const tv={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/optimize-cls/#images-without-dimensions)"},nv=createIcuMessageFn("core/audits/unsized-images.js",tv);class UnsizedImages extends Audit{static get meta(){return{id:"unsized-images",title:nv(tv.title),failureTitle:nv(tv.failureTitle),description:nv(tv.description),requiredArtifacts:["ImageElements"]}}static doesHtmlAttrProvideExplicitSize(e){if(!e)return!1;if(e.startsWith("+"))return!1;return parseInt(e,10)>=0}static isCssPropExplicitlySet(e){return!!e&&!["auto","initial","unset","inherit"].includes(e)}static isSizedImage(e){if(void 0===e.cssEffectiveRules)return!0
;const t=e.attributeWidth,n=e.attributeHeight,a=e.cssEffectiveRules.width,r=e.cssEffectiveRules.height,o=e.cssEffectiveRules.aspectRatio,i=UnsizedImages.doesHtmlAttrProvideExplicitSize(t),s=UnsizedImages.isCssPropExplicitlySet(a),c=UnsizedImages.doesHtmlAttrProvideExplicitSize(n),l=UnsizedImages.isCssPropExplicitlySet(r),u=UnsizedImages.isCssPropExplicitlySet(o),d=i||s,m=c||l;return d&&m||d&&u||m&&u}static isNonNetworkSvg(e){const t="image/svg+xml"===UrlUtils.guessMimeType(e.src),n=e.src.slice(0,e.src.indexOf(":")),a=UrlUtils.isNonNetworkProtocol(n);return t&&a}static async audit(e){const t=e.ImageElements.filter((e=>!e.isCss&&!e.isInShadowDOM)),n=[];for(const e of t){if("fixed"===e.computedStyles.position||"absolute"===e.computedStyles.position)continue;if(UnsizedImages.isNonNetworkSvg(e))continue;if(UnsizedImages.isSizedImage(e))continue;const t=e.node.boundingRect;0===t.width&&0===t.height||n.push({url:UrlUtils.elideDataURI(e.src),node:Audit.makeNodeItem(e.node)})}const a=[{
key:"node",valueType:"node",label:""},{key:"url",valueType:"url",label:nv(Dr.columnURL)}];return{score:n.length>0?0:1,notApplicable:0===t.length,details:Audit.makeTableDetails(a,n)}}}var av=Object.freeze({__proto__:null,default:UnsizedImages,UIStrings:tv});const rv=makeComputedArtifact(class UserTimings$1{static async compute_(e,t){const n=await co.request(e,t),a=[],r={};return n.processEvents.filter((e=>!!e.cat.includes("blink.user_timing")&&("requestStart"!==e.name&&"navigationStart"!==e.name&&"paintNonDefaultBackgroundColor"!==e.name&&void 0===e.args.frame))).forEach((e=>{"R"===e.ph||"I"===e.ph.toUpperCase()?a.push({name:e.name,isMark:!0,args:e.args,startTime:e.ts}):"b"===e.ph.toLowerCase()?r[e.name]=e.ts:"e"===e.ph.toLowerCase()&&a.push({name:e.name,isMark:!1,args:e.args,startTime:r[e.name],endTime:e.ts,duration:e.ts-r[e.name]})})),a.forEach((e=>{e.startTime=(e.startTime-n.timeOriginEvt.ts)/1e3,e.isMark||(e.endTime=(e.endTime-n.timeOriginEvt.ts)/1e3,e.duration=e.duration/1e3)})),a}
},null),ov={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,\n =1 {1 user timing}\n other {# user timings}\n }",columnType:"Type"},iv=createIcuMessageFn("core/audits/user-timings.js",ov);class UserTimings extends Audit{static get meta(){return{id:"user-timings",title:iv(ov.title),description:iv(ov.description),scoreDisplayMode:Audit.SCORING_MODES.INFORMATIVE,requiredArtifacts:["traces"]}}static get excludedPrefixes(){return["goog_"]}static excludeEvent(e){return UserTimings.excludedPrefixes.every((t=>!e.name.startsWith(t)))}static async audit(e,t){const n=e.traces[Audit.DEFAULT_PASS],a=(await rv.request(n,t)).filter(UserTimings.excludeEvent),r=a.map((e=>({name:e.name,startTime:e.startTime,
duration:e.isMark?void 0:e.duration,timingType:e.isMark?"Mark":"Measure"}))).sort(((e,t)=>e.timingType===t.timingType?e.startTime-t.startTime:"Measure"===e.timingType?-1:1)),o=[{key:"name",valueType:"text",label:iv(Dr.columnName)},{key:"timingType",valueType:"text",label:iv(ov.columnType)},{key:"startTime",valueType:"ms",granularity:.01,label:iv(Dr.columnStartTime)},{key:"duration",valueType:"ms",granularity:.01,label:iv(Dr.columnDuration)}],i=Audit.makeTableDetails(o,r);let s;return a.length&&(s=iv(ov.displayValue,{itemCount:a.length})),{score:Number(0===a.length),notApplicable:0===a.length,displayValue:s,details:i}}}var sv=Object.freeze({__proto__:null,default:UserTimings,UIStrings:ov});const cv={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 origins."},lv=createIcuMessageFn("core/audits/uses-rel-preconnect.js",cv);class UsesRelPreconnectAudit extends Audit{static get meta(){return{id:"uses-rel-preconnect",title:lv(cv.title),
description:lv(cv.description),supportedModes:["navigation"],requiredArtifacts:["traces","devtoolsLogs","URL","LinkElements"],scoreDisplayMode:Audit.SCORING_MODES.NUMERIC}}static hasValidTiming(e){return!!e.timing&&e.timing.connectEnd>0&&e.timing.connectStart>0}static hasAlreadyConnectedToOrigin(e){return!!e.timing&&e.timing.dnsEnd-e.timing.dnsStart==0&&e.timing.connectEnd-e.timing.connectStart==0}static socketStartTimeIsBelowThreshold(e,t){return Math.max(0,e.networkRequestTime-t.networkEndTime)<15e3}static async audit(e,t){const n=e.traces[UsesRelPreconnectAudit.DEFAULT_PASS],a=e.devtoolsLogs[UsesRelPreconnectAudit.DEFAULT_PASS],r=t.settings;let o=0;const i=[],[s,c,l,u,d]=await Promise.all([go.request(a,t),sc.request({devtoolsLog:a,URL:e.URL},t),Wo.request({devtoolsLog:a,settings:r},t),Dc.request(n,t),mo.request({trace:n,devtoolsLog:a,URL:e.URL},t)]),{rtt:m,additionalRttByOrigin:p}=l.getOptions(),h=await of.getPessimisticGraph(d,u),f=new Set;h.traverse((e=>{
"network"===e.type&&f.add(e.record.url)}));const y=new Map;s.forEach((e=>{if(!UsesRelPreconnectAudit.hasValidTiming(e)||e.initiator.url===c.url||!e.parsedURL||!e.parsedURL.securityOrigin||c.parsedURL.securityOrigin===e.parsedURL.securityOrigin||!f.has(e.url)||UsesRelPreconnectAudit.hasAlreadyConnectedToOrigin(e)||!UsesRelPreconnectAudit.socketStartTimeIsBelowThreshold(e,c))return;const t=e.parsedURL.securityOrigin,n=y.get(t)||[];n.push(e),y.set(t,n)}));const b=e.LinkElements.filter((e=>"preconnect"===e.rel)),v=new Set(b.map((e=>UrlUtils.getOrigin(e.href||""))));let w=[];y.forEach((e=>{const t=e.reduce(((e,t)=>t.networkRequestTime<e.networkRequestTime?t:e));if(!t.timing)return;const n=t.parsedURL.securityOrigin,a=p.get(n)||0;let r=m+a;"https"===t.parsedURL.scheme&&(r*=2);const s=t.networkRequestTime-c.networkEndTime+t.timing.dnsStart,l=Math.min(r,s);l<50||(v.has(n)?i.push(lv(cv.crossoriginWarning,{securityOrigin:n})):(o=Math.max(l,o),w.push({url:n,wastedMs:l})))})),
w=w.sort(((e,t)=>t.wastedMs-e.wastedMs));for(const e of v)e&&(s.some((t=>e===t.parsedURL.securityOrigin))||i.push(lv(cv.unusedWarning,{securityOrigin:e})));if(b.length>=2)return{score:1,warnings:b.length>=3?[...i,lv(cv.tooManyPreconnectLinksWarning)]:i};const D=[{key:"url",valueType:"url",label:lv(Dr.columnURL)},{key:"wastedMs",valueType:"timespanMs",label:lv(Dr.columnWastedMs)}],E=Audit.makeOpportunityDetails(D,w,{overallSavingsMs:o});return{score:ByteEfficiencyAudit.scoreForWastedMs(o),numericValue:o,numericUnit:"millisecond",displayValue:o?lv(Dr.displayValueMsSavings,{wastedMs:o}):"",warnings:i,details:E}}}var uv=Object.freeze({__proto__:null,default:UsesRelPreconnectAudit,UIStrings:cv});const dv={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.'},mv=createIcuMessageFn("core/audits/uses-rel-preload.js",dv);class UsesRelPreloadAudit extends Audit{static get meta(){return{id:"uses-rel-preload",title:mv(dv.title),description:mv(dv.description),supportedModes:["navigation"],requiredArtifacts:["devtoolsLogs","traces","URL"],scoreDisplayMode:Audit.SCORING_MODES.NUMERIC}}static getURLsToPreload(e,t){const n=new Set;return t.traverse(((t,a)=>{if("network"!==t.type)return;const r=a.slice(1).filter((e=>"network"===e.type));UsesRelPreloadAudit.shouldPreloadRequest(t.record,e,r)&&n.add(t.record.url)})),n}static getURLsFailedToPreload(e){const t=[];e.traverse((e=>"network"===e.type&&t.push(e.record)));const n=t.filter((e=>e.isLinkPreload)),a=new Map;for(const e of n){const t=a.get(e.frameId)||new Set;t.add(e.url),a.set(e.frameId,t)}const r=t.filter((e=>{const t=a.get(e.frameId)
;if(!t)return!1;if(!t.has(e.url))return!1;return!(e.fromDiskCache||e.fromMemoryCache||e.fromPrefetchCache)&&!e.isLinkPreload}));return new Set(r.map((e=>e.url)))}static shouldPreloadRequest(e,t,n){const a=t.redirects?t.redirects.length:0;return!e.isLinkPreload&&(!!rp.isCritical(e,t)&&(!NetworkRequest.isNonNetworkRequest(e)&&(n.length===a+2&&(e.frameId===t.frameId&&UrlUtils.rootDomainsMatch(e.url,t.url)))))}static computeWasteWithGraph(e,t,n){if(!e.size)return{wastedMs:0,results:[]};const a=n.simulate(t,{flexibleOrdering:!0}),r=t.cloneWithRelationships(),o=[];let i=null;if(r.traverse((t=>{"network"===t.type&&(t.isMainDocument()?i=t:t.record&&e.has(t.record.url)&&o.push(t))})),!i)throw new Error("Could not find main document node");for(const e of o)e.removeAllDependencies(),e.addDependency(i);const s=n.simulate(r,{flexibleOrdering:!0}),c=Array.from(a.nodeTimings.keys()).reduce(((e,t)=>e.set(t.record,t)),new Map),l=[];for(const e of o){
const t=c.get(e.record),n=s.nodeTimings.get(e),r=a.nodeTimings.get(t);if(!r||!n)throw new Error("Missing preload node");const o=Math.round(r.endTime-n.endTime);o<100||l.push({url:e.record.url,wastedMs:o})}return l.length?{wastedMs:Math.max(...l.map((e=>e.wastedMs))),results:l}:{wastedMs:0,results:l}}static async audit_(e,t){const n=e.traces[UsesRelPreloadAudit.DEFAULT_PASS],a=e.devtoolsLogs[UsesRelPreloadAudit.DEFAULT_PASS],r=e.URL,o={devtoolsLog:a,settings:t.settings},[i,s,c]=await Promise.all([sc.request({devtoolsLog:a,URL:r},t),mo.request({trace:n,devtoolsLog:a,URL:r},t),Wo.request(o,t)]),l=UsesRelPreloadAudit.getURLsToPreload(i,s),{results:u,wastedMs:d}=UsesRelPreloadAudit.computeWasteWithGraph(l,s,c);let m;u.sort(((e,t)=>t.wastedMs-e.wastedMs));const p=UsesRelPreloadAudit.getURLsFailedToPreload(s);p.size&&(m=Array.from(p).map((e=>mv(dv.crossoriginWarning,{preloadURL:e}))));const h=[{key:"url",valueType:"url",label:mv(Dr.columnURL)},{key:"wastedMs",valueType:"timespanMs",
label:mv(Dr.columnWastedMs)}],f=Audit.makeOpportunityDetails(h,u,{overallSavingsMs:d});return{score:ByteEfficiencyAudit.scoreForWastedMs(d),numericValue:d,numericUnit:"millisecond",displayValue:d?mv(Dr.displayValueMsSavings,{wastedMs:d}):"",details:f,warnings:m}}static async audit(){return{score:1,notApplicable:!0,details:Audit.makeOpportunityDetails([],[],{overallSavingsMs:0})}}}var pv=Object.freeze({__proto__:null,default:UsesRelPreloadAudit,UIStrings:dv});
/**
* @license Copyright 2020 Google Inc. All Rights Reserved.
* 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.
*/const gv={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://developers.google.com/web/tools/chrome-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 }"},hv=createIcuMessageFn("core/audits/valid-source-maps.js",gv);var fv=Object.freeze({__proto__:null,default:class ValidSourceMaps extends Audit{static get meta(){return{id:"valid-source-maps",title:hv(gv.title),
failureTitle:hv(gv.failureTitle),description:hv(gv.description),requiredArtifacts:["Scripts","SourceMaps","URL","devtoolsLogs"]}}static isLargeFirstPartyJS(e,t){const n=e.url;if(!e.length||!n)return!1;if(!UrlUtils.isValid(n))return!1;if(!Util.createOrReturnURL(n).protocol.startsWith("http"))return!1;const a=e.length>=512e3;return t.isFirstParty(n)&&a}static async audit(e,t){const{SourceMaps:n}=e,a=e.devtoolsLogs[Audit.DEFAULT_PASS],r=await li.request({URL:e.URL,devtoolsLog:a},t),o=new Set;let i=!1;const s=[];for(const t of e.Scripts){const e=n.find((e=>e.scriptId===t.scriptId)),a=[];if(!this.isLargeFirstPartyJS(t,r)||e&&e.map||(i=!0,o.add(t.url),a.push({error:hv(gv.missingSourceMapErrorMessage)})),e&&!e.map&&a.push({error:e.errorMessage}),e?.map){const t=e.map.sourcesContent||[];let n=0;for(let a=0;a<e.map.sources.length;a++)(t.length<a||!t[a])&&(n+=1);n>0&&a.push({error:hv(gv.missingSourceMapItemsWarningMesssage,{missingItems:n})})}(e||a.length)&&s.push({scriptUrl:t.url,
sourceMapUrl:e?.sourceMapUrl,subItems:{type:"subitems",items:a}})}const c=[{key:"scriptUrl",valueType:"url",subItemsHeading:{key:"error"},label:hv(Dr.columnURL)},{key:"sourceMapUrl",valueType:"url",label:hv(gv.columnMapURL)}];return s.sort(((e,t)=>{const n=o.has(e.scriptUrl),a=o.has(t.scriptUrl);return n&&!a?-1:!n&&a?1:e.subItems.items.length&&!t.subItems.items.length?-1:!e.subItems.items.length&&t.subItems.items.length?1:t.scriptUrl.localeCompare(e.scriptUrl)})),{score:i?0:1,details:Audit.makeTableDetails(c,s)}}},UIStrings:gv});const yv={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'},bv=createIcuMessageFn("core/audits/viewport.js",yv);var vv=Object.freeze({__proto__:null,default:class Viewport extends Audit{static get meta(){return{id:"viewport",title:bv(yv.title),failureTitle:bv(yv.failureTitle),description:bv(yv.description),requiredArtifacts:["MetaElements"]}}static async audit(e,t){const n=await By.request(e.MetaElements,t);return n.hasViewportTag?{score:Number(n.isMobileOptimized),warnings:n.parserWarnings}:{score:0,explanation:bv(yv.explanationNoTag)}}},UIStrings:yv});const wv={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/inp/).",inputDelay:"Input delay",processingTime:"Processing time",presentationDelay:"Presentation delay",displayValue:"{timeInMs, number, milliseconds} ms spent on event '{interactionType}'",eventTarget:"Event target"},Dv=createIcuMessageFn("core/audits/work-during-interaction.js",wv);class WorkDuringInteraction extends Audit{static get meta(){return{id:"work-during-interaction",title:Dv(wv.title),failureTitle:Dv(wv.failureTitle),description:Dv(wv.description),scoreDisplayMode:Audit.SCORING_MODES.NUMERIC,supportedModes:["timespan"],requiredArtifacts:["traces","devtoolsLogs","TraceElements"]}}static recursivelyClipTasks(e,t,n,a){const r=e.event.ts,o=e.endEvent?.ts??e.event.ts+Number(e.event.dur||0);e.startTime=Math.max(n,Math.min(a,r))/1e3,e.endTime=Math.max(n,Math.min(a,o))/1e3,e.duration=e.endTime-e.startTime
;const i=e.children.map((t=>WorkDuringInteraction.recursivelyClipTasks(t,e,n,a))).reduce(((e,t)=>e+t),0);return e.selfTime=e.duration-i,e.duration}static clipTasksByTs(e,t,n){for(const a of e)a.parent||WorkDuringInteraction.recursivelyClipTasks(a,void 0,t,n)}static getPhaseTimes(e){const t=e.args.data,n=e.ts,a=n-1e3*t.timeStamp,r=a+1e3*t.processingStart,o=a+1e3*t.processingEnd;return{inputDelay:{startTs:n,endTs:r},processingTime:{startTs:r,endTs:o},presentationDelay:{startTs:o,endTs:n+1e3*t.duration}}}static getThreadBreakdownTable(e,t,n,a){const r=TraceProcessor.filteredTraceSort(t.traceEvents,(t=>t.pid===e.pid&&t.tid===e.tid)),o=r.reduce(((e,t)=>Math.max(t.ts+(t.dur||0),e)),0),{frames:i}=n,s=MainThreadTasks$2.getMainThreadTasks(r,i,o),c=WorkDuringInteraction.getPhaseTimes(e),l=[];for(const[e,t]of Object.entries(c)){WorkDuringInteraction.clipTasksByTs(s,t.startTs,t.endTs);const n=getExecutionTimingsByURL(s,a),r=[];for(const[e,t]of n){
const n=Object.values(t).reduce(((e,t)=>e+t)),a=t[kd.scriptEvaluation.id]||0,o=t[kd.styleLayout.id]||0,i=t[kd.paintCompositeRender.id]||0;r.push({url:e,total:n,scripting:a,layout:o,render:i})}const o=r.filter((e=>e.total>1)).sort(((e,t)=>t.total-e.total));l.push({phase:Dv(wv[e]),total:(t.endTs-t.startTs)/1e3,subItems:{type:"subitems",items:o}})}const u=[{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:kd.styleLayout.label},{key:null,valueType:"ms",subItemsHeading:{key:"render",granularity:1,valueType:"ms"},label:kd.paintCompositeRender.label}];return{table:Audit.makeTableDetails(u,l),phases:c}}static getTraceElementTable(e){
const t=e.find((e=>"responsiveness"===e.traceEventType));if(!t)return;const n=[{key:"node",valueType:"node",label:Dv(wv.eventTarget)}],a=[{node:Audit.makeNodeItem(t.node)}];return Audit.makeTableDetails(n,a)}static async audit(e,t){const{settings:n}=t;if("simulate"===n.throttlingMethod)return{score:null,notApplicable:!0};const a=e.traces[WorkDuringInteraction.DEFAULT_PASS],r={trace:a,settings:n},o=await Cc.request(r,t);if(null===o)return{score:null,notApplicable:!0};if("FallbackTiming"===o.name)throw new LighthouseError(LighthouseError.errors.UNSUPPORTED_OLD_CHROME,{featureName:"detailed EventTiming trace events"});const i=[],s=WorkDuringInteraction.getTraceElementTable(e.TraceElements);s&&i.push(s);const c=e.devtoolsLogs[WorkDuringInteraction.DEFAULT_PASS],l=await go.request(c,t),u=await co.request(a,t),{table:d,phases:m}=WorkDuringInteraction.getThreadBreakdownTable(o,a,u,l);i.push(d);const p=o.args.data.type;i.push({type:"debugdata",interactionType:p,phases:m})
;const h=o.args.data.duration,f=Dv(wv.displayValue,{timeInMs:h,interactionType:p});return{score:h<ExperimentalInteractionToNextPaint.defaultOptions.p10?1:0,displayValue:f,details:{type:"list",items:i}}}}var Ev=Object.freeze({__proto__:null,default:WorkDuringInteraction,UIStrings:wv});const Tv={GROUPS__METRICS:"Metrics",GROUPS__ADS_PERFORMANCE:"Ad Speed",GROUPS__ADS_BEST_PRACTICES:"Tag Best Practices",NOT_APPLICABLE__DEFAULT:"Audit not applicable",NOT_APPLICABLE__INVALID_TIMING:"Invalid timing task data",NOT_APPLICABLE__NO_AD_RELATED_REQ:"No ad-related requests",NOT_APPLICABLE__NO_AD_RENDERED:"No ads rendered",NOT_APPLICABLE__NO_ADS_VIEWPORT:"No ads in viewport",NOT_APPLICABLE__NO_ADS:"No ads requested",NOT_APPLICABLE__NO_BIDS:"No bids detected",NOT_APPLICABLE__NO_EVENT_MATCHING_REQ:"No event matches network records",NOT_APPLICABLE__NO_GPT:"GPT not requested",NOT_APPLICABLE__NO_RECORDS:"No successful network records",NOT_APPLICABLE__NO_VISIBLE_SLOTS:"No visible slots",
NOT_APPLICABLE__NO_TAG:"No tag requested",NOT_APPLICABLE__NO_TAGS:"No tags requested",NOT_APPLICABLE__NO_TASKS:"No tasks to compare",NOT_APPLICABLE__NO_VALID_AD_WIDTHS:"No requested ads contain ads of valid width",NOT_APPLICABLE__NO_LAYOUT_SHIFTS:"No layout shift events found",ERRORS__AREA_LARGER_THAN_VIEWPORT:"Calculated ad area is larger than viewport",ERRORS__VIEWPORT_AREA_ZERO:"Viewport area is zero",WARNINGS__NO_ADS:"No ads were requested when fetching this page.",WARNINGS__NO_AD_RENDERED:"No ads were rendered when rendering this page.",WARNINGS__NO_TAG:"The GPT tag was not requested."},Sv=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/messages/common-strings.js",Tv),notApplicableObj=e=>({notApplicable:!0,score:1,displayValue:Sv(e)}),Cv={Default:notApplicableObj(Tv.NOT_APPLICABLE__DEFAULT),InvalidTiming:notApplicableObj(Tv.NOT_APPLICABLE__INVALID_TIMING),NoAdRelatedReq:notApplicableObj(Tv.NOT_APPLICABLE__NO_AD_RELATED_REQ),
NoAdRendered:notApplicableObj(Tv.NOT_APPLICABLE__NO_AD_RENDERED),NoAdsViewport:notApplicableObj(Tv.NOT_APPLICABLE__NO_ADS_VIEWPORT),NoAds:notApplicableObj(Tv.NOT_APPLICABLE__NO_ADS),NoBids:notApplicableObj(Tv.NOT_APPLICABLE__NO_BIDS),NoEventMatchingReq:notApplicableObj(Tv.NOT_APPLICABLE__NO_EVENT_MATCHING_REQ),NoGpt:notApplicableObj(Tv.NOT_APPLICABLE__NO_GPT),NoLayoutShifts:notApplicableObj(Tv.NOT_APPLICABLE__NO_LAYOUT_SHIFTS),NoRecords:notApplicableObj(Tv.NOT_APPLICABLE__NO_RECORDS),NoVisibleSlots:notApplicableObj(Tv.NOT_APPLICABLE__NO_VISIBLE_SLOTS),NoTag:notApplicableObj(Tv.NOT_APPLICABLE__NO_TAG),NoTags:notApplicableObj(Tv.NOT_APPLICABLE__NO_TAGS),NoTasks:notApplicableObj(Tv.NOT_APPLICABLE__NO_TASKS),NoValidAdWidths:notApplicableObj(Tv.NOT_APPLICABLE__NO_VALID_AD_WIDTHS)},_v={NoAds:Sv(Tv.WARNINGS__NO_ADS),NoAdRendered:Sv(Tv.WARNINGS__NO_AD_RENDERED),NoTag:Sv(Tv.WARNINGS__NO_TAG)},Av={ViewportAreaZero:Sv(Tv.ERRORS__VIEWPORT_AREA_ZERO)},kv={Metrics:Sv(Tv.GROUPS__METRICS),
AdsPerformance:Sv(Tv.GROUPS__ADS_PERFORMANCE),AdsBestPractices:Sv(Tv.GROUPS__ADS_BEST_PRACTICES)},Fv="lighthouse-plugin-publisher-ads",Rv={categoryDescription:"A Lighthouse plugin to improve ad speed and overall quality that is targeted at sites using GPT or AdSense tag. [Learn more](https://developers.google.com/publisher-ads-audits/reference)"},xv=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/plugin.js",Rv);var Iv={audits:[{path:`${Fv}/audits/ad-blocking-tasks`},{path:`${Fv}/audits/ad-render-blocking-resources`},{path:`${Fv}/audits/ad-request-critical-path`},{path:`${Fv}/audits/bid-request-from-page-start`},{path:`${Fv}/audits/ad-request-from-page-start`},{path:`${Fv}/audits/ad-top-of-viewport`},{path:`${Fv}/audits/ads-in-viewport`},{path:`${Fv}/audits/async-ad-tags`},{path:`${Fv}/audits/blocking-load-events`},{path:`${Fv}/audits/bottleneck-requests`},{path:`${Fv}/audits/duplicate-tags`},{path:`${Fv}/audits/first-ad-render`},{path:`${Fv}/audits/full-width-slots`},{
path:`${Fv}/audits/gpt-bids-parallel`},{path:`${Fv}/audits/loads-gpt-from-official-source`},{path:`${Fv}/audits/loads-ad-tag-over-https`},{path:`${Fv}/audits/script-injected-tags`},{path:`${Fv}/audits/serial-header-bidding`},{path:`${Fv}/audits/tag-load-time`},{path:`${Fv}/audits/viewport-ad-density`},{path:`${Fv}/audits/cumulative-ad-shift`},{path:`${Fv}/audits/deprecated-api-usage`},{path:`${Fv}/audits/gpt-errors-overall`},{path:`${Fv}/audits/total-ad-blocking-time`}],groups:{metrics:{title:kv.Metrics},"ads-performance":{title:kv.AdsPerformance},"ads-best-practices":{title:kv.AdsBestPractices}},category:{title:"Publisher Ads",description:xv(Rv.categoryDescription),auditRefs:[{id:"tag-load-time",weight:5,group:"metrics"},{id:"bid-request-from-page-start",weight:5,group:"metrics"},{id:"ad-request-from-page-start",weight:25,group:"metrics"},{id:"first-ad-render",weight:10,group:"metrics"},{id:"cumulative-ad-shift",weight:5,group:"metrics"},{id:"total-ad-blocking-time",weight:2,
group:"metrics"},{id:"gpt-bids-parallel",weight:1,group:"ads-performance"},{id:"serial-header-bidding",weight:1,group:"ads-performance"},{id:"bottleneck-requests",weight:1,group:"ads-performance"},{id:"script-injected-tags",weight:1,group:"ads-performance"},{id:"blocking-load-events",weight:1,group:"ads-performance"},{id:"ad-render-blocking-resources",weight:1,group:"ads-performance"},{id:"ad-blocking-tasks",weight:1,group:"ads-performance"},{id:"ad-request-critical-path",weight:0,group:"ads-performance"},{id:"ads-in-viewport",weight:4,group:"ads-best-practices"},{id:"async-ad-tags",weight:2,group:"ads-best-practices"},{id:"loads-ad-tag-over-https",weight:1,group:"ads-best-practices"},{id:"loads-gpt-from-official-source",weight:4,group:"ads-best-practices"},{id:"viewport-ad-density",weight:2,group:"ads-best-practices"},{id:"ad-top-of-viewport",weight:2,group:"ads-best-practices"},{id:"duplicate-tags",weight:1,group:"ads-best-practices"},{id:"deprecated-gpt-api-usage",weight:0,
group:"ads-best-practices"},{id:"gpt-errors-overall",weight:0,group:"ads-best-practices"}]}},Nv=Object.freeze({__proto__:null,default:Iv,UIStrings:Rv}),Lv=[{label:"Prebid JS",patterns:["^https?://([^.]*.)?prebid[.]org/.*","^https?://acdn[.]adnxs[.]com/prebid/.*"]},{label:"33Across",patterns:["^https?://ssc[.]33across.com/api/.*"]},{label:"AppNexus",patterns:["^https?://ib[.]adnxs[.]com/.*"]},{label:"Amazon Ads",patterns:["^https?://[a-z-_.]*[.]amazon-adsystem[.]com/.*bid.*"]},{label:"AdTechus (AOL)",patterns:["^https?://([^.]*.)?adserver[.]adtechus[.]com/.*"]},{label:"Aardvark",patterns:["^https?://thor[.]rtk[.]io/.*"]},{label:"AdBlade",patterns:["^https?://rtb[.]adblade[.]com/prebidjs/bid.*"]},{label:"AdBund",patterns:["^https?://us-east-engine[.]adbund[.]xyz/prebid/ad/get.*","^https?://us-west-engine[.]adbund[.]xyz/prebid/ad/get.*"]},{label:"AdButler",patterns:["^https?://servedbyadbutler[.]com/adserve.*"]},{label:"Adequant",
patterns:["^https?://rex[.]adequant[.]com/rex/c2s_prebid.*"]},{label:"AdForm",patterns:["^https?://adx[.]adform[.]net/adx.*"]},{label:"AdMedia",patterns:["^https?://b[.]admedia[.]com/banner/prebid/bidder.*"]},{label:"AdMixer",patterns:["^https?://inv-nets[.]admixer[.]net/prebid[.]aspx.*","^https?://inv-nets[.]admixer[.]net/videoprebid[.]aspx.*"]},{label:"AOL",patterns:["^https?://adserver-us[.]adtech[.]advertising[.]com.*","^https?://adserver-eu[.]adtech[.]advertising[.]com.*","^https?://adserver-as[.]adtech[.]advertising[.]com.*","^https?://adserver[.]adtech[.]de/pubapi/.*"]},{label:"Beachfront",patterns:["^https?://reachms[.]bfmio[.]com/bid[.]json?exchange_id=.*"]},{label:"Bidfluence",patterns:["^https?://cdn[.]bidfluence[.]com/forge[.]js.*"]},{label:"Brightcom",patterns:["^https?://hb[.]iselephant[.]com/auc/ortb.*"]},{label:"C1x",patterns:["^https?://ht-integration[.]c1exchange[.]com:9000/ht.*"]},{label:"CentroBid",patterns:["^https?://t[.]brand-server[.]com/hb.*"]},{
label:"Conversant",patterns:["^https?://media[.]msg[.]dotomi[.]com/s2s/.*"]},{label:"Criteo",patterns:["^https?://static[.]criteo[.]net/js/ld/publishertag[.]js.*","^https?://([^.]*.)?bidder[.]criteo[.]com/cdb.*","^https?://([^.]*.)?rtax[.]criteo[.]com/delivery/rta.*","^https?://([^.]*.)?rtax[.]eu[.]criteo[.]com/delivery/rta.*"]},{label:"Datablocks",patterns:["^https?://[a-z0-9_.-]*[.]dblks[.]net/.*"]},{label:"Districtm",patterns:["^https?://prebid[.]districtm[.]ca/lib[.]js.*"]},{label:"E-Planning",patterns:["^https?://ads[.]us[.]e-planning[.]net.*"]},{label:"Essens",patterns:["^https?://bid[.]essrtb[.]com/bid/prebid_call.*"]},{label:"Facebook",patterns:["^https?://an[.]facebook[.]com/v2/placementbid[.]json.*"]},{label:"FeatureForward",patterns:["^https?://prmbdr[.]featureforward[.]com/newbidder/.*"]},{label:"Fidelity",patterns:["^https?://x[.]fidelity-media[.]com.*"]},{label:"GetIntent",
patterns:["^https?://px[.]adhigh[.]net/rtb/direct_banner.*","^https?://px[.]adhigh[.]net/rtb/direct_vast.*"]},{label:"GumGum",patterns:["^https?://g2[.]gumgum[.]com/hbid/imp.*"]},{label:"Hiromedia",patterns:["^https?://hb-rtb[.]ktdpublishers[.]com/bid/get.*"]},{label:"Imonomy",patterns:["^https?://b[.]imonomy[.]com/openrtb/hb/.*"]},{label:"ImproveDigital",patterns:["^https?://ad[.]360yield[.]com/hb.*"]},{label:"IndexExchange",patterns:["^https?://as(-sec)?[.]casalemedia[.]com/(cygnus|headertag).*","^https?://js(-sec)?[.]indexww[.]com/ht/.*"]},{label:"InnerActive",patterns:["^https?://ad-tag[.]inner-active[.]mobi/simpleM2M/requestJsonAd.*"]},{label:"Innity",patterns:["^https?://as[.]innity[.]com/synd/.*"]},{label:"JCM",patterns:["^https?://media[.]adfrontiers[.]com/pq.*"]},{label:"JustPremium",patterns:["^https?://pre[.]ads[.]justpremium[.]com/v/.*"]},{label:"Kargo",patterns:["^https?://krk[.]kargo[.]com/api/v1/bid.*"]},{label:"Komoona",
patterns:["^https?://bidder[.]komoona[.]com/v1/GetSBids.*"]},{label:"KruxLink",patterns:["^https?://link[.]krxd[.]net/hb.*"]},{label:"Kumma",patterns:["^https?://cdn[.]kumma[.]com/pb_ortb[.]js.*"]},{label:"Mantis",patterns:["^https?://mantodea[.]mantisadnetwork[.]com/website/prebid.*"]},{label:"MarsMedia",patterns:["^https?://bid306[.]rtbsrv[.]com:9306/bidder.*"]},{label:"Media.net",patterns:["^https?://contextual[.]media[.]net/bidexchange.*"]},{label:"MemeGlobal",patterns:["^https?://stinger[.]memeglobal[.]com/api/v1/services/prebid.*"]},{label:"MobFox",patterns:["^https?://my[.]mobfox[.]com/request[.]php.*"]},{label:"NanoInteractive",patterns:["^https?://tmp[.]audiencemanager[.]de/hb.*"]},{label:"OpenX",patterns:["^https?://([^.]*.)?d[.]openx[.]net/w/1[.]0/arj.*","^https?://([^.]*.)?servedbyopenx[.]com/.*"]},{label:"Piximedia",patterns:["^https?://static[.]adserver[.]pm/prebid.*"]},{label:"Platformio",patterns:["^https?://piohbdisp[.]hb[.]adx1[.]com.*"]},{label:"Pollux",
patterns:["^https?://adn[.]plxnt[.]com/prebid.*"]},{label:"PubGears",patterns:["^https?://c[.]pubgears[.]com/tags.*"]},{label:"Pubmatic",patterns:["^https?://ads[.]pubmatic[.]com/AdServer/js/gshowad[.]js.*","^https?://([^.]*.)?gads.pubmatic[.]com/.*","^https?://hbopenbid.pubmatic[.]com/.*"]},{label:"Pulsepoint",patterns:["^https?://bid[.]contextweb[.]com/header/tag.*"]},{label:"Quantcast",patterns:["^https?://global[.]qc[.]rtb[.]quantserve[.]com:8080/qchb.*"]},{label:"Rhythmone",patterns:["^https?://tag[.]1rx[.]io/rmp/.*"]},{label:"Roxot",patterns:["^https?://r[.]rxthdr[.]com.*"]},{label:"Rubicon",patterns:["^https?://([^.]*.)?(fastlane|optimized-by|anvil)[.]rubiconproject[.]com/a/api.*","^https?://fastlane-adv[.]rubiconproject[.]com/v1/auction/video.*"]},{label:"Sekindo",patterns:["^https?://hb[.]sekindo[.]com/live/liveView[.]php.*"]},{label:"ShareThrough",patterns:["^https?://btlr[.]sharethrough[.]com/header-bid/.*"]},{label:"Smart AdServer",
patterns:["^https?://prg[.]smartadserver[.]com/prebid.*"]},{label:"Sonobi",patterns:["^https?://apex[.]go[.]sonobi[.]com/trinity[.]js.*"]},{label:"Sovrn",patterns:["^https?://ap[.]lijit[.]com/rtb/bid.*"]},{label:"SpringServe",patterns:["^https?://bidder[.]springserve[.]com/display/hbid.*"]},{label:"StickyAds",patterns:["^https?://cdn[.]stickyadstv[.]com/mustang/mustang[.]min[.]js.*","^https?://cdn[.]stickyadstv[.]com/prime-time/.*"]},{label:"TapSense3",patterns:["^https?://ads04[.]tapsense[.]com/ads/headerad.*"]},{label:"ThoughtLeadr",patterns:["^https?://a[.]thoughtleadr[.]com/v4/.*"]},{label:"TremorBid",patterns:["^https?://([^.]*.)?ads[.]tremorhub[.]com/ad/tag.*"]},{label:"Trion",patterns:["^https?://in-appadvertising[.]com/api/bidRequest.*"]},{label:"TripleLift",patterns:["^https?://tlx[.]3lift[.]com/header/auction.*"]},{label:"TrustX",patterns:["^https?://sofia[.]trustx[.]org/hb.*"]},{label:"UCFunnel",patterns:["^https?://agent[.]aralego[.]com/header.*"]},{label:"Underdog Media",
patterns:["^https?://udmserve[.]net/udm/img[.]fetch.*"]},{label:"UnRuly",patterns:["^https?://targeting[.]unrulymedia[.]com/prebid.*"]},{label:"VertaMedia",patterns:["^https?://rtb[.]vertamedia[.]com/hb/.*"]},{label:"Vertoz",patterns:["^https?://hb[.]vrtzads[.]com/vzhbidder/bid.*"]},{label:"WideOrbig",patterns:["^https?://([^.]*.)?atemda[.]com/JSAdservingMP[.]ashx.*"]},{label:"WideSpace",patterns:["^https?://engine[.]widespace[.]com/map/engine/hb/.*"]},{label:"YieldBot",patterns:["^https?://cdn[.]yldbt[.]com/js/yieldbot[.]intent[.]js.*"]},{label:"YieldMo",patterns:["^https?://ads[.]yieldmo[.]com/exchange/prebid.*"]}];const Mv=/([a-zA-Z][a-zA-Z_-]*)\s*(?:=(?:"([^"]*)"|([^ \t",;]*)))?/g,Pv="max-age",Ov="s-maxage",Bv="max-stale",Uv="min-fresh",jv="immutable",zv="must-revalidate",qv="no-cache",$v="no-store",Vv="no-transform",Wv="only-if-cached",Hv="private",Gv="proxy-revalidate",Yv="public";function parseBooleanOnly(e){return null===e}function parseDuration(e){if(!e)return null
;const t=parseInt(e,10);return!Number.isFinite(t)||t<0?null:t}class CacheControl{constructor(){this.maxAge=null,this.sharedMaxAge=null,this.maxStale=null,this.maxStaleDuration=null,this.minFresh=null,this.immutable=null,this.mustRevalidate=null,this.noCache=null,this.noStore=null,this.noTransform=null,this.onlyIfCached=null,this.private=null,this.proxyRevalidate=null,this.public=null}parse(e){if(!e||0===e.length)return this;const t={},n=e.match(Mv)||[];return Array.prototype.forEach.call(n,(e=>{const n=e.split("=",2),[a]=n;let r=null;n.length>1&&(r=n[1].trim()),t[a.toLowerCase()]=r})),this.maxAge=parseDuration(t[Pv]),this.sharedMaxAge=parseDuration(t[Ov]),this.maxStale=parseBooleanOnly(t[Bv]),this.maxStaleDuration=parseDuration(t[Bv]),this.maxStaleDuration&&(this.maxStale=!0),this.minFresh=parseDuration(t[Uv]),this.immutable=parseBooleanOnly(t[jv]),this.mustRevalidate=parseBooleanOnly(t[zv]),this.noCache=parseBooleanOnly(t[qv]),this.noStore=parseBooleanOnly(t[$v]),
this.noTransform=parseBooleanOnly(t[Vv]),this.onlyIfCached=parseBooleanOnly(t[Wv]),this.private=parseBooleanOnly(t[Hv]),this.proxyRevalidate=parseBooleanOnly(t[Gv]),this.public=parseBooleanOnly(t[Yv]),this}format(){const e=[];return"number"==typeof this.maxAge&&e.push(`${Pv}=${this.maxAge}`),"number"==typeof this.sharedMaxAge&&e.push(`${Ov}=${this.sharedMaxAge}`),this.maxStale&&("number"==typeof this.maxStaleDuration?e.push(`${Bv}=${this.maxStaleDuration}`):e.push(Bv)),"number"==typeof this.minFresh&&e.push(`${Uv}=${this.minFresh}`),this.immutable&&e.push(jv),this.mustRevalidate&&e.push(zv),this.noCache&&e.push(qv),this.noStore&&e.push($v),this.noTransform&&e.push(Vv),this.onlyIfCached&&e.push(Wv),this.private&&e.push(Hv),this.proxyRevalidate&&e.push(Gv),this.public&&e.push(Yv),e.join(", ")}}var Kv={CacheControl,parse:function parse(e){return(new CacheControl).parse(e)},format:function format(e){return e instanceof CacheControl?e.format():CacheControl.prototype.format.call(e)}}
;function getHeader(e,t){const n=t.toLowerCase();return(e.responseHeaders||[]).find((e=>e.name.toLowerCase()===n))}function isCacheable(e){if(!CacheHeaders.isCacheableAsset(e))return!1;const t=getHeader(e,"cache-control");if(t){try{const e=Kv.parse(t.value);if(e.noStore||e.noCache||0===e.maxAge)return!1}catch(e){}return!0}return!!getHeader(e,"expires")||!!getHeader(e,"last-modified")}function toURL(e){let t;try{t="string"==typeof e?new URL(e):e}catch(e){t=new URL("http://_")}return t}function isGoogleAds(e){return e=toURL(e),/(^|\.)(doubleclick.net|google(syndication|tagservices).com)$/.test(e.hostname)}function isAdSenseTag(e){const t="pagead2.googlesyndication.com"===(e=toURL(e)).host,n=["/pagead/js/adsbygoogle.js","/pagead/show_ads.js"].includes(e.pathname);return t&&n}function isAdSense(e){return isAdSenseTag(e=toURL(e))||function isAdSenseImplTag(e){const t="pagead2.googlesyndication.com"===(e=toURL(e)).host,n=/(^\/pagead\/js\/.*\/show_ads_impl.*?\.js)/.test(e.pathname)
;return t&&n}(e)}function isImpressionPing(e){const{host:t,pathname:n}=toURL(e);return["securepubads.g.doubleclick.net","googleads4.g.doubleclick.net"].includes(t)&&["/pcs/view","/pagead/adview"].includes(n)}function isGptTag(e){const{host:t,pathname:n}=toURL(e),a=["www.googletagservices.com","pagead2.googlesyndication.com","securepubads.g.doubleclick.net"].includes(t),r=["/tag/js/gpt.js","/tag/js/gpt_mobile.js"].includes(n);return a&&r}function isAMPTag(e){const{host:t,pathname:n}=toURL(e),a=["cdn.ampproject.org"].includes(t),r=["/v0/amp-ad-0.1.js"].includes(n);return a&&r}function isGptImplTag(e){return isGoogleAds(e)&&/(^\/gpt\/pubads_impl([a-z_]*)((?<!rendering)_)\d+\.js)/.test(toURL(e).pathname)}function isAMPImplTag(e){return/^\/[a-z_]*\/\d+\/v0\/amp-ad-network-doubleclick-impl-0.1.js/.test(toURL(e).pathname)}function isGpt(e){return isGptTag(e=toURL(e))||isGptImplTag(e)}function isGptAdRequest(e){if(!e)return!1
;return"/gampad/ads"===new URL(e.url).pathname&&"XHR"===e.resourceType&&isGoogleAds(e.url)}function isGptIframe(e){return/(^google_ads_iframe_)/.test(e.id)}function isAdTag(e){return isAdSenseTag(e)||isGptTag(e)||isAMPTag(e)}function isAdScript(e){return isAdSense(e)||isGpt(e)||function isAMP(e){return isAMPTag(e)||isAMPImplTag(e)}(e)}function isAdRequest(e){return function isAdSenseAdRequest(e){if(!e)return!1;const t=new URL(e.url);return"/pagead/ads"===t.pathname&&"googleads.g.doubleclick.net"===t.host}(e)||isGptAdRequest(e)||function isAMPAdRequest(e){if(!e)return!1;const t=new URL(e.url);return"/gampad/ads"===t.pathname&&"securepubads.g.doubleclick.net"===t.host&&"Fetch"===e.resourceType}(e)}function isAdIframe(e){return function isAdSenseIframe(e){return/(^aswift_\d+)/.test(e.id)}(e)||isGptIframe(e)}function isImplTag(e){return isAdSenseTag(e)||isGptImplTag(e)||isAMPImplTag(e)}function getHeaderBidder(e){
for(const t of Lv)for(const n of t.patterns)if(new RegExp(n).test(e))return t.label}function isBidRelatedRequest(e){return!!getHeaderBidder("string"==typeof e?e:e.url)}function isBidRequest(e){return isBidRelatedRequest(e)&&function isPossibleBidRequest(e){return(null==e.resourceSize||e.resourceSize>0)&&"Image"!=e.resourceType&&!isCacheable(e)}(e)}function trimUrl(e){const t=new URL(e),n=t.pathname.length>60?t.pathname.substr(0,60)+"...":t.pathname;return t.origin+n}function getNameOrTld(e){const t=getHeaderBidder(e);if(t)return t;if(isGpt(e))return"GPT";if(isAdSense(e))return"AdSense";if(isAMPTag(e))return"AMP tag";const n=ci.getEntity(e);if(n)return n.name;const{host:a}=new URL(e),[r=""]=a.match(/([^.]*(\.[a-z]{2,3}){1,2})$/)||[];return r||a}function isAdRelated(e){const t="string"==typeof e?e:e.url;if(!t)return!1;if(isAdScript(t)||getHeaderBidder(t))return!0;const n=ci.getEntity(t);return!!n&&n.categories.includes("ad")}function getFrame(e){
return e.args.frame||e.args.data&&e.args.data.frame||null}function isAdTask(e){return!!function getCpuNodeUrls(e){const t=new Set;for(const{args:n}of e.childEvents)n.data&&n.data.url&&t.add(n.data.url);return Array.from(t)}(e).find((e=>isBidRelatedRequest(e)||isGoogleAds(toURL(e))))}function addEdge(e,t){e===t||e.endTime>t.startTime||e.addDependent(t)}function addEdges(e){const t=[],n=[];e.traverse((e=>{e.type===BaseNode.TYPES.NETWORK&&(isGptTag(e.record.url)&&"Script"===e.record.resourceType?n.push(e):isGptAdRequest(e.record)&&t.push(e))})),e.traverse((e=>{if(e.type===BaseNode.TYPES.NETWORK){if(isGptImplTag(e.record.url)){const t=e;for(const e of n)addEdge(e,t)}if(isBidRelatedRequest(e.record)){const n=e;for(const e of t)addEdge(n,e)}if(isImpressionPing(e.record.url)){const n=e;for(const e of t){addEdge(e,n);for(const t of e.getDependents())addEdge(t,n)}}}}))}class AdLanternMetric extends LanternMetric{static get COEFFICIENTS(){return{intercept:0,optimistic:1,pessimistic:0}}
static getPessimisticGraph(e){const t=e.cloneWithRelationships((e=>!0));return addEdges(t),t}static getOptimisticGraph(e){const t=e.record.frameId,n=AdLanternMetric.getPessimisticGraph(e),a=n.cloneWithRelationships((e=>{if(e.type===BaseNode.TYPES.CPU)return function isLongTask(e){return e.event.dur>5e4}(e)||isAdTask(e)||!!getFrame(e.event)&&getFrame(e.event)!==t;if(e.hasRenderBlockingPriority())return!0;const n=e.record.url;return isBidRelatedRequest(n)||isGoogleAds(toURL(n))}));return addEdges(n),a}static getEstimateFromSimulation(e,t){throw new Error("getEstimateFromSimulation not implemented by "+this.name)}static findTiming(e,t){let n={startTime:1/0,endTime:-1/0,duration:0};for(const[a,r]of e.entries())t(a,r)&&n.startTime>r.startTime&&(n=r);return n}static findNetworkTiming(e,t){return this.findTiming(e,(e=>e.type===BaseNode.TYPES.NETWORK&&t(e.record)))}}function getAdStartTime(e){const t=e.find(isAdRequest);return t?t.startTime:-1}function getPageStartTime(e,t=-1){
const n=e.find((e=>200==e.statusCode));return n?n.startTime:t}async function getTimingsByRecord(e,t,n){const a=new Map,r=await go.request(t,n);if("simulate"==n.settings.throttlingMethod){const r=await mo.request({trace:e,devtoolsLog:t},n),o=AdLanternMetric.getOptimisticGraph(r),i=await Wo.request({devtoolsLog:t,settings:n.settings},n),{nodeTimings:s}=i.simulate(o,{});for(const[{record:e},t]of s.entries())e&&a.set(e,t)}else{const e=getPageStartTime(r);for(const t of r)a.set(t,{startTime:1e3*(t.startTime-e),endTime:1e3*(t.endTime-e),duration:1e3*(t.endTime-t.startTime)})}return a}function getScriptUrl(e){if(e.args.data&&["EvaluateScript","FunctionCall"].includes(e.name))return e.args.data.url?e.args.data.url:e.args.data.stackTrace?e.args.data.stackTrace[0].url:void 0}class LanternAdRequestTime extends AdLanternMetric{static getEstimateFromSimulation(e,t){const{nodeTimings:n}=e;return{timeInMs:AdLanternMetric.findNetworkTiming(n,isAdRequest).startTime,nodeTimings:n}}}
LanternAdRequestTime=makeComputedArtifact(LanternAdRequestTime);class AdRequestTime extends Metric{static async computeSimulatedMetric(e,t){return LanternAdRequestTime.request(e,t)}static async computeObservedMetric(e){const{networkRecords:t}=e,n=getPageStartTime(t),a=1e3*(getAdStartTime(t)-n);return Promise.resolve({timing:a})}static async request(e,t){throw Error("Not implemented -- class not decorated")}}var Jv=AdRequestTime=makeComputedArtifact(AdRequestTime);function getAttributableUrl(e,t=new Set){const n=e.attributableURLs.find((e=>t.has(e))),a=e.attributableURLs[0],r=n||a;if(r)return r;let o=50,i="";for(const n of e.children){const e=getAttributableUrl(n,t);e&&n.duration>o&&(i=e,o=n.duration)}return i}class LongTasks extends Metric{static async getSimulationGraph(e,t,n){const a=await mo.request({trace:e,devtoolsLog:t},n);return AdLanternMetric.getOptimisticGraph(a)}static async computeSimulatedResult(e,t,n){const a=await this.getSimulationGraph(e,t,n),r=await Wo.request({
devtoolsLog:t,settings:n.settings},n),{nodeTimings:o}=r.simulate(a,{}),i=[];for(const[e,t]of o.entries())e.type!==BaseNode.TYPES.CPU||t.duration<100||i.push({event:e.event,startTime:t.startTime,endTime:t.endTime,duration:t.duration,selfTime:t.duration,attributableURLs:Array.from(e.getEvaluateScriptURLs()),children:[],parent:e.parent,unbounded:e.unbounded,group:e.group});return i}static async computeObservedResult(e,t,n){const a=await Rd.request(e,n),r=await go.request(t,n),o=new Set(r.filter((e=>"Script"===e.resourceType)).map((e=>e.url)));return a.filter((e=>function isLong(e,t){if(e.duration<50)return!1;const n=getAttributableUrl(e,t);if(!n)return!1;if(e.parent)return n!=getAttributableUrl(e.parent,t);return!0}(e,o)))}static async compute_({trace:e,devtoolsLog:t},n){return"simulate"==n.settings.throttlingMethod?this.computeSimulatedResult(e,t,n):this.computeObservedResult(e,t,n)}static async request(e,t){throw Error("Not implemented -- class not decorated")}}
var Zv=LongTasks=makeComputedArtifact(LongTasks);const Xv={title:"No long tasks blocking ad-related network requests",failureTitle:"Avoid long tasks that block ad-related network requests",description:"Tasks blocking the main thread can delay ad requests and cause a poor user experience. Consider removing long blocking tasks or moving them off of the main thread. These tasks can be especially detrimental to performance on less powerful devices. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/ad-blocking-tasks).",failureDisplayValue:"{timeInMs, number, seconds} s blocked",columnScript:"Attributable URL",columnStartTime:"Start",columnDuration:"Duration"},Qv=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/ad-blocking-tasks.js",Xv),ew=[{key:"script",itemType:"url",text:Qv(Xv.columnScript)},{key:"startTime",itemType:"ms",text:Qv(Xv.columnStartTime),granularity:1},{key:"duration",itemType:"ms",text:Qv(Xv.columnDuration),granularity:1}]
;class AdBlockingTasks extends Audit{static get meta(){return{id:"ad-blocking-tasks",title:Qv(Xv.title),failureTitle:Qv(Xv.failureTitle),description:Qv(Xv.description),requiredArtifacts:["traces","devtoolsLogs"]}}static async audit(e,t){const n="simulate"==t.settings.throttlingMethod?200:100,a={trace:e.traces[Audit.DEFAULT_PASS],devtoolsLog:e.devtoolsLogs[Audit.DEFAULT_PASS],settings:t.settings};let r=[];try{r=await Zv.request(a,t)}catch(e){return Cv.InvalidTiming}if(!r.length)return Cv.NoTasks;const{timing:o}=await Jv.request(a,t);if(!(o>0))return Cv.NoAdRelatedReq;const i=[];for(const e of r){if(e.startTime>o||e.duration<n)continue;const t=getAttributableUrl(e);if(t&&isAdScript(new URL(t)))continue;const a=t&&new URL(t),r=a&&a.origin+a.pathname||"Other";i.push({script:r,rawUrl:t,startTime:e.startTime,endTime:e.endTime,duration:e.duration,isTopLevel:!e.parent})}let s=Array.from(i)
;s.length>10&&(s=i.filter((e=>"Other"!==e.script&&e.isTopLevel)).sort(((e,t)=>t.duration-e.duration)).splice(0,10).sort(((e,t)=>e.startTime-t.startTime)));const c=s.reduce(((e,t)=>t.isTopLevel?e+t.duration:e),0),l=s.length>0;return{score:l?0:1,numericValue:c,numericUnit:"millisecond",displayValue:l?Qv(Xv.failureDisplayValue,{timeInMs:c}):"",details:AdBlockingTasks.makeTableDetails(ew,s)}}}var tw=Object.freeze({__proto__:null,default:AdBlockingTasks,UIStrings:Xv});const nw={title:"Minimal render-blocking resources found",failureTitle:"Avoid render-blocking resources",description:"Render-blocking resources slow down tag load times. Consider loading critical JS/CSS inline or loading scripts asynchronously or loading the tag earlier in the head. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources).",failureDisplayValue:"Up to {timeInMs, number, seconds} s tag load time improvement",columnUrl:"Resource",columnStartTime:"Start",columnDuration:"Duration"
},aw=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/ad-render-blocking-resources.js",nw),rw=[{key:"url",itemType:"url",text:aw(nw.columnUrl)},{key:"startTime",itemType:"ms",text:aw(nw.columnStartTime),granularity:1},{key:"duration",itemType:"ms",text:aw(nw.columnDuration),granularity:1}];class AdRenderBlockingResources extends Audit{static get meta(){return{id:"ad-render-blocking-resources",title:aw(nw.title),failureTitle:aw(nw.failureTitle),scoreDisplayMode:"binary",description:aw(nw.description),requiredArtifacts:["LinkElements","ScriptElements","devtoolsLogs","traces"]}}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=e.traces[Audit.DEFAULT_PASS],r=await go.request(n,t),o=r.find((e=>isAdTag(new URL(e.url))));if(!o)return Cv.NoTag;const i=await getTimingsByRecord(a,n,t),s=new Set;for(const t of e.LinkElements)t.href&&"stylesheet"==t.rel&&s.add(t.href);for(const t of e.ScriptElements)!t.src||t.defer||t.async||s.add(t.src)
;const c=r.filter((e=>e.endTime<o.startTime)).filter((e=>e!=o.initiatorRequest)).filter((e=>e.initiator.type="parser")).filter((e=>s.has(e.url))).map((e=>Object.assign({url:e.url},i.get(e))));c.sort(((e,t)=>e.endTime-t.endTime));const l=i.get(o)||{startTime:1/0},u=c.map((e=>e.startTime)),d=c.map((e=>e.endTime)),m=Math.min(...u),p=Math.min(Math.max(...d),l.startTime)-m;let h="";c.length>0&&p>0&&(h=aw(nw.failureDisplayValue,{timeInMs:p}));return{score:c.length>0&&p>100?0:1,numericValue:c.length,numericUnit:"unitless",displayValue:h,details:{opportunity:p,...AdRenderBlockingResources.makeTableDetails(rw,c)}}}}var ow=Object.freeze({__proto__:null,default:AdRenderBlockingResources,UIStrings:nw});function assert(e){if(null==e)throw new Error("Expected not to be null");return e}function isXhrCritical(e,t,n){const a=t.xhrEdges.get(e.url);if(!a)return!1;for(const{url:e}of n)if(a.has(e))return!0;return!1}function addInitiatedRequests(e,t,n,a){
const r=n.allRecords.filter((e=>null!=e.resourceType)).filter((e=>["Script","XHR"].includes(e.resourceType||"")&&e.endTime<t.startTime)).filter((t=>t.initiatorRequest==e||mo.getNetworkInitiators(t).includes(e.url)));for(const e of r){"XHR"==e.resourceType&&isXhrCritical(e,n,a)&&linkGraph(n,e,a)}}function getCriticalGraph(e,t,n){const a=buildNetworkSummary(e,t),r=new Set;return linkGraph(a,n,r),r}function linkGraph(e,t,n=new Set){if(!t||n.has(t))return n;n.add(t);const a=new Set;for(let r=t.initiator.stack;r;r=r.parent)for(const{url:o}of r.callFrames){if(a.has(o))continue;a.add(o);const i=e.requestsByUrl.get(o);if(i&&(linkGraph(e,i,n),"Script"==i.resourceType)){const a=r.callFrames[0].url,o=e.requestsByUrl.get(a);o&&addInitiatedRequests(o,t,e,n)}}return linkGraph(e,t.initiatorRequest||null,n),n}function buildNetworkSummary(e,t){const n=new Map;for(const t of e)n.set(t.url,t);const a=t.filter((e=>e.name.startsWith("XHR"))).filter((e=>!!(e.args.data||{}).url)),r=new Map;for(const e of a){
const t=e.args.data||{},n=r.get(t.url)||new Set;for(const{url:e}of t.stackTrace||[])n.add(e);r.set(t.url,n)}return{requestsByUrl:n,xhrEdges:r,allRecords:e}}async function computeAdRequestWaterfall(e,t,n){const a=await go.request(t,n),r=a.find(isAdRequest)||a.find(isBidRequest)||a.find(isAdRelated);if(null==r)return Promise.resolve([]);const o=new Set,i=assert(r),s=a.filter((e=>isGpt(e.url)||isAdSense(e.url))),c=a.filter((e=>isBidRequest(e)&&e.endTime<=i.startTime)),l=buildNetworkSummary(a,e.traceEvents);for(const e of[i,...c,...s])linkGraph(l,e,o);const u=new Set(["Script","XHR","Fetch","EventStream","Document",void 0]),d=Array.from(o).filter((e=>e.endTime<i.startTime)).filter((e=>u.has(e.resourceType))).filter((e=>"text/css"!=e.mimeType)),m=await getTimingsByRecord(e,t,n),p=function computeSummaries(e){e.sort(((e,t)=>e.nameOrTld!=t.nameOrTld?e.nameOrTld<t.nameOrTld?-1:1:e.type!=t.type?e.type<t.type?-1:1:e.startTime!=t.startTime?e.startTime<t.startTime?-1:1:e.endTime-t.endTime))
;const t=[];for(let r=0;r<e.length;r++){const o=e[r];let i;for(;r<e.length&&(i=e[r+1],i&&(n=i,a=o,!(Math.max(n.startTime,a.startTime)>Math.min(n.endTime,a.endTime)||n.type&&a.type&&n.type!=a.type||"Script"==n.type||n.nameOrTld!=a.nameOrTld)));)o.endTime=Math.max(o.endTime,i.endTime),o.duration=o.endTime-o.startTime,r++;t.push(o)}var n,a;return t.sort(((e,t)=>e.startTime-t.startTime)),t}(d.map((e=>{const{startTime:t,endTime:n}=m.get(e)||e;return{startTime:t,endTime:n,duration:n-t,selfTime:0,url:trimUrl(e.url),nameOrTld:getNameOrTld(e.url),type:e.resourceType,record:e}})));return function computeSelfTimes(e){if(!e.length)return[];let t=assert(e[0]);t.selfTime=t.duration;let n=t.startTime;for(const a of e){if(a.endTime<n||a==t)continue;const e=Math.max(n,a.startTime),r=Math.min(t.endTime,a.endTime);e<r&&(t.selfTime-=r-e),n=Math.max(n,r),a.endTime>t.endTime&&(a.selfTime=a.endTime-e,t=a)}}(p),p}const iw={title:"Ad request waterfall",failureTitle:"Reduce critical path for ad loading",
description:"Consider reducing the number of resources, loading multiple resources simultaneously, or loading resources earlier to improve ad speed. Requests that block ad loading can be found below. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/ad-request-critical-path).",displayValue:"{serialResources, plural, =1 {1 serial resource} other {# serial resources}}",columnUrl:"Request",columnType:"Type",columnStartTime:"Start",columnEndTime:"End"},sw=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/ad-request-critical-path.js",iw),cw=[{key:"nameOrTld",itemType:"text",text:sw(iw.columnType)},{key:"url",itemType:"url",text:sw(iw.columnUrl)},{key:"startTime",itemType:"ms",text:sw(iw.columnStartTime),granularity:1},{key:"endTime",itemType:"ms",text:sw(iw.columnEndTime),granularity:1}];class AdRequestCriticalPath extends Audit{static get meta(){return{id:"ad-request-critical-path",title:sw(iw.title),failureTitle:sw(iw.failureTitle),
description:sw(iw.description),scoreDisplayMode:"informative",requiredArtifacts:["devtoolsLogs","traces"]}}static async audit(e,t){const n=e.traces[Audit.DEFAULT_PASS],a=e.devtoolsLogs[Audit.DEFAULT_PASS],r=(await computeAdRequestWaterfall(n,a,t)).filter((e=>e.startTime>0&&e.startTime<e.endTime));if(!r.length)return Cv.NoAds;const o=function computeDepth(e){let t=0,n=0;for(const{startTime:a,endTime:r}of e)a>=t?(++n,t=r):t=Math.min(t,r);return n}(r),i=o>3;for(const e of r)delete e.record;const s=function computeIdleTimes(e){let t=1/0;const n=[];for(let a=0;a<e.length;){const{startTime:r,endTime:o}=e[a];for(r-t>150&&n.push(r-t),t=o;++a<e.length&&e[a].startTime<t;)t=Math.max(t,e[a].endTime)}return n}(r),c=Math.max(...s),l=s.reduce(((e,t)=>e+t),0);return{numericValue:o,numericUnit:"unitless",score:i?0:1,displayValue:sw(iw.displayValue,{serialResources:o}),details:{size:r.length,depth:o,maxIdleTime:c,totalIdleTime:l,...AdRequestCriticalPath.makeTableDetails(cw,r)}}}}var lw=Object.freeze({
__proto__:null,default:AdRequestCriticalPath,UIStrings:iw});class LanternBidRequestTime extends AdLanternMetric{static getEstimateFromSimulation(e,t){const{nodeTimings:n}=e,a=AdLanternMetric.findNetworkTiming(n,isBidRequest).startTime;return a>AdLanternMetric.findNetworkTiming(n,isAdRequest).startTime?{timeInMs:-1,nodeTimings:n}:{timeInMs:a,nodeTimings:n}}}LanternBidRequestTime=makeComputedArtifact(LanternBidRequestTime);class BidRequestTime extends Metric{static async computeSimulatedMetric(e,t){return LanternBidRequestTime.request(e,t)}static async computeObservedMetric(e){const{networkRecords:t}=e,n=getPageStartTime(t),a=function getBidStartTime(e){const t=e.find(isBidRequest);return t?t.startTime:-1}(t);if(getAdStartTime(t)<a)return{timing:-1};return{timing:1e3*(a-n)}}static async request(e,t){throw Error("Not implemented -- class not decorated")}}var uw=BidRequestTime=makeComputedArtifact(BidRequestTime);const dw={title:"First bid request time",
failureTitle:"Reduce time to send the first bid request",description:"This metric measures the elapsed time from the start of page load until the first bid request is made. Delayed bid requests will decrease impressions and viewability, and have a negative impact on ad revenue. [Learn More](https://developers.google.com/publisher-ads-audits/reference/audits/bid-request-from-page-start).",displayValue:"{timeInMs, number, seconds} s"},mw=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/bid-request-from-page-start.js",dw);var pw=Object.freeze({__proto__:null,default:class BidRequestFromPageStart extends Audit{static get meta(){return{id:"bid-request-from-page-start",title:mw(dw.title),failureTitle:mw(dw.failureTitle),description:mw(dw.description),scoreDisplayMode:Audit.SCORING_MODES.NUMERIC,requiredArtifacts:["devtoolsLogs","traces"]}}static get defaultOptions(){return{simulate:{p10:4350,median:8e3},provided:{p10:1200,median:2e3}}}static async audit(e,t){const n={
trace:e.traces[Audit.DEFAULT_PASS],devtoolsLog:e.devtoolsLogs[Audit.DEFAULT_PASS],settings:t.settings},a=t.options["provided"==t.settings.throttlingMethod?"provided":"simulate"],{timing:r}=await uw.request(n,t);return r>0?{numericValue:r,numericUnit:"millisecond",score:Audit.computeLogNormalScore(a,r),displayValue:mw(dw.displayValue,{timeInMs:r})}:Cv.NoBids}},UIStrings:dw});const gw={title:"First ad request time",failureTitle:"Reduce time to send the first ad request",description:"This metric measures the elapsed time from the start of page load until the first ad request is made. Delayed ad requests will decrease impressions and viewability, and have a negative impact on ad revenue. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/ad-request-from-page-start).",displayValue:"{timeInMs, number, seconds} s"},hw=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/ad-request-from-page-start.js",gw);var fw=Object.freeze({__proto__:null,
default:class AdRequestFromPageStart extends Audit{static get meta(){return{id:"ad-request-from-page-start",title:hw(gw.title),failureTitle:hw(gw.failureTitle),description:hw(gw.description),scoreDisplayMode:Audit.SCORING_MODES.NUMERIC,requiredArtifacts:["devtoolsLogs","traces"]}}static get defaultOptions(){return{simulate:{p10:6500,median:1e4},provided:{p10:1900,median:3500}}}static async audit(e,t){const n={trace:e.traces[Audit.DEFAULT_PASS],devtoolsLog:e.devtoolsLogs[Audit.DEFAULT_PASS],settings:t.settings},a=t.options["provided"==t.settings.throttlingMethod?"provided":"simulate"],{timing:r}=await Jv.request(n,t);if(!(r>0)){const e=Cv.NoAds;return e.runWarnings=[_v.NoAds],e}return{numericValue:r,numericUnit:"millisecond",score:Audit.computeLogNormalScore(a,r),displayValue:hw(gw.displayValue,{timeInMs:r})}}},UIStrings:gw});const yw={title:"No ad found at the very top of the viewport",failureTitle:"Move the top ad further down the page",
description:"Over 10% of ads are never viewed because users scroll past them before they become viewable. By moving ad slots away from the very top of the viewport, users are more likely to see ads before scrolling away. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/ad-top-of-viewport).",failureDisplayValue:"A scroll of {valueInPx, number} px would hide half of your topmost ad",columnSlot:"Top Slot ID"},bw=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/ad-top-of-viewport.js",yw),vw=[{key:"slot",itemType:"text",text:bw(yw.columnSlot)}];class AdTopOfViewport extends Audit{static get meta(){return{id:"ad-top-of-viewport",title:bw(yw.title),failureTitle:bw(yw.failureTitle),description:bw(yw.description),requiredArtifacts:["ViewportDimensions","IFrameElements"]}}static audit(e){const t=e.ViewportDimensions,n=e.IFrameElements.filter(isAdIframe).filter((e=>e.clientRect.width*e.clientRect.height>1&&!e.isPositionFixed)).map((e=>({
midpoint:e.clientRect.top+e.clientRect.height/2,id:e.id})));if(!n.length)return Cv.NoVisibleSlots;const a=n.reduce(((e,t)=>e.midpoint<t.midpoint?e:t)),r=a.midpoint<t.innerHeight;if(!r)return Cv.NoAdsViewport;const o=r&&a.midpoint<100?0:1;return{score:o,numericValue:a.midpoint,numericUnit:"unitless",displayValue:o?"":bw(yw.failureDisplayValue,{valueInPx:a.midpoint}),details:AdTopOfViewport.makeTableDetails(vw,o?[]:[{slot:a.id}])}}}var ww=Object.freeze({__proto__:null,default:AdTopOfViewport,UIStrings:yw});function toClientRect([e,t,n,a]){return{left:e,top:t,width:n,height:a,right:e+n,bottom:t+a}}function overlaps(e,t){const n=!(e.right<t.left||t.right<e.left),a=!(e.bottom<t.top||t.bottom<e.top);return n&&a}const Dw={title:"Few or no ads loaded outside viewport",failureTitle:"Avoid loading ads until they are nearly on-screen",
description:"Too many ads loaded outside the viewport lowers viewability rates and impacts user experience. Consider loading ads below the fold lazily as the user scrolls down. Consider using GPT's [Lazy Loading API](https://developers.google.com/doubleclick-gpt/reference#googletag.PubAdsService_enableLazyLoad). [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/ads-in-viewport).",failureDisplayValue:"{hiddenAds, plural, =1 {1 ad} other {# ads}} out of view",columnSlot:"Slots Outside Viewport"},Ew=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/ads-in-viewport.js",Dw),Tw=[{key:"slot",itemType:"text",text:Ew(Dw.columnSlot)}];class AdsInViewport extends Audit{static get meta(){return{id:"ads-in-viewport",title:Ew(Dw.title),failureTitle:Ew(Dw.failureTitle),description:Ew(Dw.description),requiredArtifacts:["ViewportDimensions","IFrameElements"]}}static audit(e){
const t=e.ViewportDimensions,n=e.IFrameElements.filter((e=>isGptIframe(e)&&e.clientRect.height*e.clientRect.width>1));if(!n.length)return Cv.NoVisibleSlots;const a=n.filter((e=>!function isBoxInViewport(e,t){const{innerWidth:n,innerHeight:a}=t,{left:r,top:o,right:i,bottom:s}=e;return r<i&&o<s&&r<n&&o<a&&0<i&&0<s}(e.clientRect,t))).map((e=>({slot:e.id}))).sort(((e,t)=>e.slot.localeCompare(t.slot)));return{numericValue:(n.length-a.length)/n.length,numericUnit:"unitless",score:a.length>3?0:1,displayValue:a.length?Ew(Dw.failureDisplayValue,{hiddenAds:a.length}):"",details:AdsInViewport.makeTableDetails(Tw,a)}}}var Sw=Object.freeze({__proto__:null,default:AdsInViewport,UIStrings:Dw});function count(e,t){let n=0;for(const a of e)t(a)&&n++;return n}const Cw={title:"Ad tag is loaded asynchronously",failureTitle:"Load ad tag asynchronously",
description:"Loading the ad tag synchronously blocks content rendering until the tag is fetched and loaded. Consider using the `async` attribute to load gpt.js and/or adsbygoogle.js asynchronously. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/async-ad-tags)."},_w=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/async-ad-tags.js",Cw);function isAsync(e){return"Low"==e.priority||function isStaticRequest(e){return["parser","preload","other"].includes(e.initiator.type)}(e)}var Aw=Object.freeze({__proto__:null,default:class AsyncAdTags extends Audit{static get meta(){return{id:"async-ad-tags",title:_w(Cw.title),failureTitle:_w(Cw.failureTitle),description:_w(Cw.description),requiredArtifacts:["devtoolsLogs","URL"]}}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=await go.request(n,t),r=await sc.request({URL:e.URL,devtoolsLog:n},t),o=a.filter((e=>isAdTag(new URL(e.url)))).filter((e=>e.frameId===r.frameId))
;if(!o.length)return Cv.NoTag;const i=count(o,isAsync)-o.length;return{score:Number(0===i),numericValue:i,numericUnit:"unitless"}}},UIStrings:Cw});const kw={title:"Ads not blocked by load events",failureTitle:"Avoid waiting on load events",description:"Waiting on load events increases ad latency. To speed up ads, eliminate the following load event handlers. [Learn More](https://developers.google.com/publisher-ads-audits/reference/audits/blocking-load-events).",displayValue:"{timeInMs, number, seconds} s blocked",columnEvent:"Event Name",columnTime:"Event Time",columnScript:"Script",columnBlockedUrl:"Blocked URL",columnFunctionName:"Function"},Fw=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/blocking-load-events.js",kw),Rw=[{key:"eventName",itemType:"text",text:Fw(kw.columnEvent)},{key:"time",itemType:"ms",text:Fw(kw.columnTime),granularity:1},{key:"url",itemType:"url",text:Fw(kw.columnScript)},{key:"functionName",itemType:"text",text:Fw(kw.columnFunctionName)
}];function findOriginalCallFrame(e){const{record:t}=e;let n=t&&t.initiator&&t.initiator.stack;if(n){for(;n.parent;)n=n.parent;return n.callFrames[n.callFrames.length-1]}}function findTraceEventOfCallFrame(e,t){return t.find((t=>"FunctionCall"==t.name&&t.args.data&&t.args.data.functionName==e.functionName&&t.args.data.scriptId==e.scriptId&&t.args.data.url==e.url&&Math.abs(t.args.data.lineNumber==e.lineNumber)<2&&Math.abs(t.args.data.columnNumber==e.columnNumber)<2))}function findEventIntervals(e,t){let n={};const a=[];for(const r of t)r.name==`${e}EventStart`?n={start:r.ts,end:1/0,eventName:e}:r.name==`${e}EventEnd`&&(n.end=r.ts,a.push(n));return a}function quantifyBlockedTime(e,t,n){const a=t.find((t=>t.url==e.url)),r=t.find((t=>t.url==e.blockedUrl));if(!a||!r)return 0;const o=n.get(a),i=n.get(r);return o&&i?i.startTime-o.endTime:0}class BlockingLoadEvents extends Audit{static get meta(){return{id:"blocking-load-events",title:Fw(kw.title),failureTitle:Fw(kw.failureTitle),
description:Fw(kw.description),requiredArtifacts:["devtoolsLogs","traces"]}}static async audit(e,t){const n=e.traces[Audit.DEFAULT_PASS],a=e.devtoolsLogs[Audit.DEFAULT_PASS],r=await go.request(a,t),o=await co.request(n,t),{timings:i}=await Dc.request(o,t),{processEvents:s}=o,c=await getTimingsByRecord(n,a,t),l=(await computeAdRequestWaterfall(n,a,t)).sort(((e,t)=>e.startTime-t.startTime));if(!l.length)return Cv.NoAdRelatedReq;const u=[...findEventIntervals("domContentLoaded",s),...findEventIntervals("load",s)],d=[],m=new Set;for(const e of l){const t=findOriginalCallFrame(e);if(!t)continue;const n=JSON.stringify(t);if(m.has(n))continue;m.add(n);const a=findTraceEventOfCallFrame(t,s);if(!a)continue;const o=u.find((e=>e.start<=a.ts&&a.ts<=e.end));if(o){const n=Object.assign({eventName:o.eventName,blockedUrl:e.url,time:i[o.eventName],blockedTime:1/0},t);n.blockedTime=quantifyBlockedTime(n,r,c),d.push(n)}}const p=d.length>0;let h=0;return p&&(h=Math.min(...d.map((e=>e.blockedTime)))),{
numericValue:d.length,numericUnit:"unitless",score:p?0:1,displayValue:p&&h?Fw(kw.displayValue,{timeInMs:h}):"",details:BlockingLoadEvents.makeTableDetails(Rw,d)}}}var xw=Object.freeze({__proto__:null,default:BlockingLoadEvents,UIStrings:kw});const Iw={title:"No bottleneck requests found",failureTitle:"Avoid bottleneck requests",description:"Speed up, load earlier, parallelize, or eliminate the following requests and their dependencies in order to speed up ad loading. [Learn More](https://developers.google.com/publisher-ads-audits/reference/audits/bottleneck-requests).",displayValue:"{blockedTime, number, seconds} s spent blocked on requests",columnUrl:"Blocking Request",columnInitiatorUrl:"Initiator Request",columnStartTime:"Start",columnSelfTime:"Exclusive Time",columnDuration:"Total Time"},Nw=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/bottleneck-requests.js",Iw),Lw=[{key:"url",itemType:"url",text:Nw(Iw.columnUrl)},{key:"selfTime",itemType:"ms",
text:Nw(Iw.columnSelfTime),granularity:1},{key:"duration",itemType:"ms",text:Nw(Iw.columnDuration),granularity:1}];class BottleneckRequests extends Audit{static get meta(){return{id:"bottleneck-requests",title:Nw(Iw.title),failureTitle:Nw(Iw.failureTitle),description:Nw(Iw.description),requiredArtifacts:["devtoolsLogs","traces"]}}static async audit(e,t){const n=e.traces[Audit.DEFAULT_PASS],a=e.devtoolsLogs[Audit.DEFAULT_PASS],r=(await computeAdRequestWaterfall(n,a,t)).filter((e=>e.startTime>0));if(!r.length)return Cv.NoAdRelatedReq;const cost=e=>3*e.selfTime+e.duration,o=r.filter((e=>!isAdScript(toURL(e.url))&&(e.selfTime>250||e.duration>1e3))).sort(((e,t)=>cost(t)-cost(e))).slice(0,5),i=o.reduce(((e,t)=>e+t.selfTime),0)/1e3,s=1e3*i>1e3;for(const e of o)delete e.record;return{numericValue:o.length,numericUnit:"unitless",score:s?0:1,displayValue:s?Nw(Iw.displayValue,{blockedTime:i}):"",details:BottleneckRequests.makeTableDetails(Lw,o)}}}var Mw=Object.freeze({__proto__:null,
default:BottleneckRequests,UIStrings:Iw});const Pw={title:"No duplicate tags found",failureTitle:"Load tags only once",description:"Loading a tag more than once in the same page is redundant and adds overhead without benefit. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/duplicate-tags).",failureDisplayValue:"{duplicateTags, plural, =1 {1 duplicate tag} other {# duplicate tags}}",columnScript:"Script",columnNumReqs:"Duplicate Requests",columnFrameId:"Frame ID"},Ow=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/duplicate-tags.js",Pw),Bw=["googletagservices.com/tag/js/gpt.js","securepubads.g.doubleclick.net/tag/js/gpt.js","pagead2.googlesyndication.com/pagead/js/adsbygoogle.js","pagead2.googlesyndication.com/pagead/js/show_ads.js","cdn.ampproject.org/v0/amp-ad-0.1.js"],Uw=[{key:"script",itemType:"url",text:Ow(Pw.columnScript)},{key:"numReqs",itemType:"text",text:Ow(Pw.columnNumReqs)}];class DuplicateTags extends Audit{
static get meta(){return{id:"duplicate-tags",title:Ow(Pw.title),failureTitle:Ow(Pw.failureTitle),description:Ow(Pw.description),requiredArtifacts:["devtoolsLogs","URL"]}}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=await go.request(n,t),r=await sc.request({URL:e.URL,devtoolsLog:n},t),o=a.filter((e=>e.frameId===r.frameId)).filter((e=>function containsAnySubstring(e,t){return t.some((t=>e.includes(t)))}(e.url,Bw))).filter((e=>e.resourceType===NetworkRequest.TYPES.Script));if(!o.length)return Cv.NoTags;const i=new Map;for(const e of o){const t=new URL(e.url).pathname,n=i.get(t)||0;i.set(t,n+1)}const s=[];for(const[e,t]of i)t>1&&s.push({script:e,numReqs:t});return{numericValue:s.length,numericUnit:"unitless",score:s.length?0:1,details:DuplicateTags.makeTableDetails(Uw,s),displayValue:s.length?Ow(Pw.failureDisplayValue,{duplicateTags:s.length}):""}}}var jw=Object.freeze({__proto__:null,default:DuplicateTags,UIStrings:Pw})
;class LanternAdRenderTime extends AdLanternMetric{static getEstimateFromSimulation(e,t){const{nodeTimings:n}=e;return{timeInMs:AdLanternMetric.findNetworkTiming(n,(e=>!!e.url&&isImpressionPing(new URL(e.url)))).startTime,nodeTimings:n}}}LanternAdRenderTime=makeComputedArtifact(LanternAdRenderTime);class AdRenderTime extends Metric{static async computeSimulatedMetric(e,t){return LanternAdRenderTime.request(e,t)}static async computeObservedMetric(e,t){const{networkRecords:n}=e,a=getPageStartTime(n),r=1e3*(function getImpressionStartTime(e){const t=e.find((e=>isImpressionPing(e.url)));return t?t.startTime:-1}(n)-a);return Promise.resolve({timing:r})}static async request(e,t){throw Error("Not implemented -- class not decorated")}}var zw=AdRenderTime=makeComputedArtifact(AdRenderTime);const qw={title:"Latency of first ad render",failureTitle:"Reduce time to render first ad",
description:"This metric measures the time for the first ad iframe to render from page navigation. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/first-ad-render).",displayValue:"{timeInMs, number, seconds} s"},$w=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/first-ad-render.js",qw);var Vw=Object.freeze({__proto__:null,default:class FirstAdRender extends Audit{static get meta(){return{id:"first-ad-render",title:$w(qw.title),failureTitle:$w(qw.failureTitle),description:$w(qw.description),scoreDisplayMode:Audit.SCORING_MODES.NUMERIC,requiredArtifacts:["devtoolsLogs","traces"]}}static get defaultOptions(){return{simulate:{p10:12900,median:22e3},provided:{p10:2750,median:3700}}}static async audit(e,t){const n=e.traces[Audit.DEFAULT_PASS],a={devtoolsLog:e.devtoolsLogs[Audit.DEFAULT_PASS],trace:n,settings:t.settings},{timing:r}=await zw.request(a,t);if(!(r>0)){const e=Cv.NoAdRendered;return e.runWarnings=[_v.NoAdRendered],e}
const o=t.options["provided"==t.settings.throttlingMethod?"provided":"simulate"];return{numericValue:r,numericUnit:"millisecond",score:Audit.computeLogNormalScore(o,r),displayValue:$w(qw.displayValue,{timeInMs:r})}}},UIStrings:qw});const Ww={title:"Ad slots effectively use horizontal space",failureTitle:"Increase the width of ad slots",description:"Ad slots that utilize most of the page width generally experience increased click-through rate over smaller ad sizes. We recommend leaving no more than 25% of the viewport width unutilized on mobile devices.",failureDisplayValue:"{percentUnused, number, percent} of viewport width is underutilized"},Hw=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/full-width-slots.js",Ww);var Gw=Object.freeze({__proto__:null,default:class FullWidthSlots extends Audit{static get meta(){return{id:"full-width-slots",title:Hw(Ww.title),failureTitle:Hw(Ww.failureTitle),description:Hw(Ww.description),
requiredArtifacts:["ViewportDimensions","devtoolsLogs"]}}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=await go.request(n,t),r=e.ViewportDimensions.innerWidth,o=a.filter(isAdRequest).map((e=>new URL(e.url)));if(!o.length)return Cv.NoAds;const i=o.map((e=>e.searchParams.get("prev_iu_szs")||e.searchParams.get("sz"))).join("|").split(/[|,]/).map((e=>parseInt(e.split("x")[0]))).filter((e=>e<=r&&e>1));if(!i.length)return Cv.NoValidAdWidths;const s=1-Math.max(...i)/r,c=s>.25?0:1;return{score:c,numericValue:s,numericUnit:"unitless",displayValue:c?"":Hw(Ww.failureDisplayValue,{percentUnused:s})}}},UIStrings:Ww});const Yw={title:"GPT and bids loaded in parallel",failureTitle:"Load GPT and bids in parallel",
description:"To optimize ad loading, bid requests should not wait on GPT to load. This issue can often be fixed by making sure that bid requests do not wait on `googletag.pubadsReady` or `googletag.cmd.push`. [Learn More](https://developers.google.com/publisher-ads-audits/reference/audits/gpt-bids-parallel).",columnBidder:"Bidder",columnUrl:"URL",columnStartTime:"Start",columnDuration:"Duration"},Kw=[{key:"bidder",itemType:"text",text:Yw.columnBidder},{key:"url",itemType:"url",text:Yw.columnUrl},{key:"startTime",itemType:"ms",text:Yw.columnStartTime},{key:"duration",itemType:"ms",text:Yw.columnDuration}];class GptBidsInParallel extends Audit{static get meta(){return{id:"gpt-bids-parallel",title:Yw.title,failureTitle:Yw.failureTitle,description:Yw.description,requiredArtifacts:["devtoolsLogs","traces"]}}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=e.traces[Audit.DEFAULT_PASS],r=await go.request(n,t),o=r.find((e=>isGptImplTag(e.url)));if(!o)return Cv.NoGpt
;const i=r.filter(isBidRequest).filter((e=>e.frameId==o.frameId));if(!i.length)return Cv.NoBids;const s=await getTimingsByRecord(a,n,t),c=[],l=new Set;for(const e of i)if(getCriticalGraph(r,a.traceEvents,e).has(o)){const{startTime:t,endTime:n}=s.get(e)||e,a=assert(getHeaderBidder(e.url));if(l.has(a))continue;l.add(a),c.push({bidder:a,url:e.url,startTime:t,duration:n-t})}const u=c.length>0;return{numericValue:c.length,numericUnit:"unitless",score:u?0:1,details:u?GptBidsInParallel.makeTableDetails(Kw,c):void 0}}}var Jw=Object.freeze({__proto__:null,default:GptBidsInParallel,UIStrings:Yw});const Zw={title:"GPT tag is loaded from an official source",failureTitle:"Load GPT from an official source",description:"Load GPT from 'securepubads.g.doubleclick.net' for standard integrations or from 'pagead2.googlesyndication.com' for limited ads. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/loads-gpt-from-official-source)."
},Xw=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/loads-gpt-from-official-source.js",Zw);var Qw=Object.freeze({__proto__:null,default:class LoadsGptFromOfficalSource extends Audit{static get meta(){return{id:"loads-gpt-from-official-source",title:Xw(Zw.title),failureTitle:Xw(Zw.failureTitle),description:Xw(Zw.description),requiredArtifacts:["devtoolsLogs"]}}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=(await go.request(n,t)).map((e=>new URL(e.url))).find(isGptTag);if(!a)return Cv.NoGpt;const r=["securepubads.g.doubleclick.net","pagead2.googlesyndication.com"].includes(a.host);return{score:Number(r),numericValue:Number(!r),numericUnit:"unitless"}}},UIStrings:Zw});const eD={title:"Ad tag is loaded over HTTPS",failureTitle:"Load ad tag over HTTPS",
description:'For privacy and security, always load GPT/AdSense over HTTPS. Insecure pages should explicitly request the ad script securely. GPT Example: `<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js">` AdSense Example: `<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">`. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/loads-ad-tag-over-https).'},tD=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/loads-ad-tag-over-https.js",eD);var nD=Object.freeze({__proto__:null,default:class LoadsAdTagOverHttps extends Audit{static get meta(){return{id:"loads-ad-tag-over-https",title:tD(eD.title),failureTitle:tD(eD.failureTitle),description:tD(eD.description),requiredArtifacts:["devtoolsLogs"]}}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=await go.request(n,t);if(!a.find((e=>200==e.statusCode)))return Cv.NoRecords
;const r=a.filter((e=>isAdTag(new URL(e.url)))),o=r.filter((e=>e.isSecure)),i={type:"debugdata",numAdTagHttpReqs:r.length-o.length,numAdTagHttpsReqs:o.length};if(!r.length){const e=Cv.NoTag;return e.details=i,e}return{numericValue:i.numAdTagHttpReqs,score:i.numAdTagHttpReqs?0:1,details:i}}},UIStrings:eD});const aD={title:"Ad scripts are loaded statically",failureTitle:"Load ad scripts statically",description:"Load the following scripts directly with `<script async src=...>` instead of injecting scripts with JavaScript. Doing so allows the browser to preload scripts sooner. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/script-injected-tags).",failureDisplayValue:"Load {tags, plural, =1 {1 script} other {# scripts}} statically",columnUrl:"Script",columnLoadTime:"Load Time"},rD=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/script-injected-tags.js",aD),oD=[{key:"url",itemType:"url",text:rD(aD.columnUrl)},{key:"loadTime",
itemType:"ms",granularity:1,text:rD(aD.columnLoadTime)}],iD=[/amazon-adsystem\.com\/aax2\/apstag.js/,/js-sec\.indexww\.com\/ht\/p\/.*\.js/,/pubads\.g\.doubleclick\.net\/tag\/js\/gpt\.js/,/static\.criteo\.net\/js\/.*\/publishertag\.js/,/www\.googletagservices\.com\/tag\/js\/gpt\.js/,/pagead2\.googlesyndication\.com\/pagead\/js\/adsbygoogle\.js/,/cdn\.ampproject\.org\/v0\/amp-ad-\d+\.\d+\.js/];function initiatedByInlineScript(e){if("script"!==e.initiator.type)return!1;const t=mo.getNetworkInitiators(e);return 1===t.length&&t[0]===e.documentURL}class StaticAdTags extends Audit{static get meta(){return{id:"script-injected-tags",title:rD(aD.title),failureTitle:rD(aD.failureTitle),description:rD(aD.description),requiredArtifacts:["devtoolsLogs","traces"]}}static async audit(e,t){const n=await async function findStaticallyLoadableTags(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=e.traces[Audit.DEFAULT_PASS],r=[],o=await computeAdRequestWaterfall(a,n,t)
;for(const{record:e}of o)e&&"Script"===e.resourceType&&(initiatedByInlineScript(e)||iD.find((t=>e.url.match(t))))&&r.push(e);return r}(e,t);if(!n.length)return Cv.NoTag;const a=new Set,r=[],o=e.devtoolsLogs[Audit.DEFAULT_PASS],i=e.traces[Audit.DEFAULT_PASS],s=await async function getScriptEvaluationTimes(e,t,n){const a=1e3*getPageStartTime(await go.request(t,n)),r=new Map;for(const t of e.traceEvents){const e=getScriptUrl(t);if(!e)continue;const n=t.ts/1e3-a;(!r.has(e)||r.get(e)>n)&&r.set(e,n)}if("simulate"!==n.settings.throttlingMethod)return r;const o=await getTimingsByRecord(e,t,n),i=new Map;for(const[e,t]of o.entries()){const o=r.get(e.url);if(!o)continue;if(i.has(e.url))continue;const s=1e3*e.startTime-a,c=t.endTime,l=n.settings.throttling.cpuSlowdownMultiplier*(o-s);i.set(e.url,c+l)}return i}(i,o,t);for(const e of n){if(a.has(e.url))continue;a.add(e.url);if(0===count(n.filter((t=>t.url===e.url)),(e=>"parser"===e.initiator.type&&!e.isLinkPreload))){const t=s.get(e.url)||0
;if(t<400)continue;r.push({url:e.url,loadTime:t})}}r.sort(((e,t)=>e.loadTime-t.loadTime));const c=r.length>0;return{displayValue:c?rD(aD.failureDisplayValue,{tags:r.length}):"",score:Number(!c),numericValue:r.length,numericUnit:"unitless",details:StaticAdTags.makeTableDetails(oD,r)}}}var sD=Object.freeze({__proto__:null,default:StaticAdTags,UIStrings:aD});const cD={title:"Header bidding is parallelized",failureTitle:"Parallelize bid requests",description:"Send header bidding requests simultaneously, rather than serially, to retrieve bids more quickly. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/serial-header-bidding).",columnBidder:"Bidder",columnUrl:"URL",columnStartTime:"Start",columnDuration:"Duration"},lD=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/serial-header-bidding.js",cD),uD=[{key:"bidder",itemType:"text",text:lD(cD.columnBidder)},{key:"url",itemType:"url",text:lD(cD.columnUrl)},{key:"startTime",itemType:"ms",
text:lD(cD.columnStartTime)},{key:"duration",itemType:"ms",text:lD(cD.columnDuration)}],dD="ad",mD="bid",pD="unknown";function checkRecordType(e){return isGoogleAds(new URL(e.url))?dD:getHeaderBidder(e.url)?mD:pD}function isPossibleBid(e){return(null==e.resourceSize||e.resourceSize>0)&&"Image"!=e.resourceType&&e.endTime-e.startTime>=.05&&!isCacheable(e)}function clearQueryString(e){const t=new URL(e);return t.search="",t.toString()}class SerialHeaderBidding extends Audit{static get meta(){return{id:"serial-header-bidding",title:lD(cD.title),failureTitle:lD(cD.failureTitle),description:lD(cD.description),requiredArtifacts:["devtoolsLogs","traces","URL"]}}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS],a=e.traces[Audit.DEFAULT_PASS],r=await go.request(n,t);if(!r.length)return Cv.NoRecords;const o=await sc.request({URL:e.URL,devtoolsLog:n},t),i=function bucket(e,t){const n=new Map;for(const a of e){const e=t(a);if(null!=e){const t=n.get(e)||[];t.push(a),n.set(e,t)}}
return n}(r.filter(isPossibleBid).filter((e=>e.frameId==o.frameId)),checkRecordType);if(!i.has(mD))return Cv.NoBids;const s={trace:a,devtoolsLog:n,settings:t.settings},{timing:c}=await Jv.request(s,t),l=await getTimingsByRecord(a,n,t),u=function constructRecords(e,t,n){const a=[];for(const r of e){const e=n.get(r);e&&a.push(Object.assign({},e,{url:r.url,type:t}))}return a}(i.get(mD)||[],mD,l);let d,m=[];for(const e of u)c>0&&e.endTime>c||(e.bidder=getHeaderBidder(e.url),e.url=clearQueryString(e.url),d&&e.startTime>=d.endTime&&(m.push(d),m.push(e)),(!d||e.endTime<d.endTime||e.startTime>=d.endTime)&&(d=e));m=Array.from(new Set(m));const p=m.length>1;return{numericValue:Number(p),numericUnit:"unitless",score:p?0:1,details:p?SerialHeaderBidding.makeTableDetails(uD,m):void 0}}}var gD=Object.freeze({__proto__:null,default:SerialHeaderBidding,UIStrings:cD});class LanternTagLoadTime extends AdLanternMetric{static getEstimateFromSimulation(e,t){const{nodeTimings:n}=e;return{
timeInMs:AdLanternMetric.findNetworkTiming(n,(e=>!!e.url&&isImplTag(new URL(e.url)))).endTime,nodeTimings:n}}}LanternTagLoadTime=makeComputedArtifact(LanternTagLoadTime);class TagLoadTime$1 extends Metric{static async computeSimulatedMetric(e,t){return LanternTagLoadTime.request(e,t)}static async computeObservedMetric(e,t){const{networkRecords:n}=e,a=getPageStartTime(n),r=1e3*(function getTagEndTime(e){const t=e.find((e=>isImplTag(new URL(e.url))));return t?t.endTime:-1}(n)-a);return Promise.resolve({timing:r})}static async request(e,t){throw Error("Not implemented -- class not decorated")}}var hD=TagLoadTime$1=makeComputedArtifact(TagLoadTime$1);const fD={title:"Tag load time",failureTitle:"Reduce tag load time",description:"This metric measures the time for the ad tag's implementation script (pubads_impl.js for GPT; adsbygoogle.js for AdSense) to load after the page loads. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/tag-load-time).",
displayValue:"{timeInMs, number, seconds} s"},yD=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/tag-load-time.js",fD);var bD=Object.freeze({__proto__:null,default:class TagLoadTime extends Audit{static get meta(){return{id:"tag-load-time",title:yD(fD.title),failureTitle:yD(fD.failureTitle),description:yD(fD.description),scoreDisplayMode:Audit.SCORING_MODES.NUMERIC,requiredArtifacts:["devtoolsLogs","traces"]}}static get defaultOptions(){return{simulate:{p10:4350,median:8e3},provided:{p10:1200,median:2e3}}}static async audit(e,t){const n={trace:e.traces[Audit.DEFAULT_PASS],devtoolsLog:e.devtoolsLogs[Audit.DEFAULT_PASS],settings:t.settings},a=t.options["provided"==t.settings.throttlingMethod?"provided":"simulate"],{timing:r}=await hD.request(n,t);if(!(r>0)){const e=Cv.NoTag;return e.runWarnings=[_v.NoTag],e}return{numericValue:r,numericUnit:"millisecond",score:Audit.computeLogNormalScore(a,r),displayValue:yD(fD.displayValue,{timeInMs:r})}}},UIStrings:fD})
;const vD={title:"Ads to page-height ratio is within recommended range",failureTitle:"Reduce ads to page-height ratio",description:"The ads to page-height ratio can impact user experience and ultimately user retention. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/viewport-ad-density).",displayValue:"{adDensity, number, percent} ads to page-height ratio"},wD=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/viewport-ad-density.js",vD);var DD=Object.freeze({__proto__:null,default:class ViewportAdDensity extends Audit{static get meta(){return{id:"viewport-ad-density",title:wD(vD.title),failureTitle:wD(vD.failureTitle),description:wD(vD.description),requiredArtifacts:["ViewportDimensions","IFrameElements"]}}static audit(e){const t=e.ViewportDimensions,n=e.IFrameElements.filter((e=>isAdIframe(e)&&e.clientRect.width*e.clientRect.height>1));if(!n.length)return Cv.NoVisibleSlots;if(t.innerHeight<=0)throw new Error(Av.ViewportAreaZero)
;const a=function computeAdLength(e,t){const n=new Set([...e.map((e=>e.clientRect.left)),...e.map((e=>e.clientRect.right))].map((e=>Math.min(Math.max(1,e),t.innerWidth-1))));e=e.sort(((e,t)=>e.clientRect.top!==t.clientRect.top?e.clientRect.top-t.clientRect.top:e.clientRect.bottom-t.clientRect.bottom));let a=0;for(const t of n){let n=0,r=0;for(const a of e){if(t<a.clientRect.left||t>a.clientRect.right)continue;if(a.isPositionFixed){n+=a.clientRect.height;continue}const e=a.clientRect.bottom-Math.max(r,a.clientRect.top);e>0&&(n+=e),r=Math.max(r,a.clientRect.bottom)}a=Math.max(a,n)}return a}(n,t),r=Math.max(...n.map((e=>e.clientRect.top+e.clientRect.height/2)))+t.innerHeight,o=Math.min(1,a/r);return{score:o>.3?0:1,numericValue:o,numericUnit:"unitless",displayValue:wD(vD.displayValue,{adDensity:o})}}},UIStrings:vD});const ED={title:"Cumulative ad shift",failureTitle:"Reduce ad-related layout shift",
description:"Measures layout shifts that were caused by ads or happened near ads. Reducing cumulative ad-related layout shift will improve user experience. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/cumulative-ad-shift)."},TD=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/cumulative-ad-shift.js",ED);var SD=Object.freeze({__proto__:null,default:class CumulativeAdShift extends Audit{static get meta(){return{id:"cumulative-ad-shift",title:TD(ED.title),failureTitle:TD(ED.failureTitle),description:TD(ED.description),scoreDisplayMode:Audit.SCORING_MODES.NUMERIC,requiredArtifacts:["traces","IFrameElements"]}}static get defaultOptions(){return{p10:.05,median:.25}}static isAdExpansion(e,t){if(!e.args||!e.args.data)return!1;for(const n of e.args.data.impacted_nodes||[]){const e=toClientRect(n.old_rect||[]),a=toClientRect(n.new_rect||[]);if(!(e.top>a.top||e.height!==a.height))for(const n of t){const t=n.clientRect
;if((e.top>=t.top||a.top>=t.bottom)&&overlaps(e,t))return!0}}return!1}static isAttributableToTask(e,t){if(!e.args||!e.args.data)return!1;return!!t.find((t=>t.ts<e.ts&&e.ts-t.ts<5e4))}static compute(e,t,n,a){let r=0,o=0,i=0,s=0,c=0,l=0;for(const u of e)u.args&&u.args.data&&u.args.data.is_main_frame&&(r+=u.args.data.score,o++,(this.isAdExpansion(u,n)||this.isAttributableToTask(u,t))&&(i+=u.args.data.score,s++,u.ts<a&&(c+=u.args.data.score,l++)));return{cumulativeShift:r,numShifts:o,cumulativeAdShift:i,numAdShifts:s,cumulativePreImplTagAdShift:c,numPreImplTagAdShifts:l}}static getLayoutShiftEventsByWindow(e){let t=0,n=[],a=0,r=[];for(const o of e){if("LayoutShift"!==o.name||!o.args||!o.args.data)continue;if(r.length){const e=r[0],i=r[r.length-1];(i.ts-e.ts>5e6||o.ts-i.ts>1e6)&&(a>t&&(n=r,t=a),r=[],a=0)}r.push(o);const e=o.args.data;a+=e.weighted_score_delta||e.score||0}return n.length||(n=r),n}static async audit(e,t){
const n=e.traces[Audit.DEFAULT_PASS],a=this.getLayoutShiftEventsByWindow(n.traceEvents);if(!a.length)return Cv.NoLayoutShifts;const r=n.traceEvents.filter((e=>isAdRelated(getScriptUrl(e)||""))),o=r.find((e=>isImplTag(getScriptUrl(e)||"")))||{ts:1/0},i=e.IFrameElements.filter(isAdIframe),s=this.compute(a,r,i,o.ts),c=s.cumulativeAdShift;return i.length||c?{numericValue:c,numericUnit:"unitless",score:Audit.computeLogNormalScore({p10:t.options.p10,median:t.options.median},c),displayValue:c.toLocaleString(t.settings.locale),details:s}:Cv.NoAdRendered}},UIStrings:ED});const CD={title:"Deprecated GPT API Usage",failureTitle:"Avoid deprecated GPT APIs",description:"Deprecated GPT API methods should be avoided to ensure your page is tagged correctly. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/deprecated-gpt-api-usage).",displayValue:"{numErrors, plural, =1 {1 error} other {# errors}} found"
},_D=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/deprecated-api-usage.js",CD);var AD=Object.freeze({__proto__:null,default:class DeprecatedApiUsage extends Audit{static get meta(){return{id:"deprecated-gpt-api-usage",title:_D(CD.title),failureTitle:_D(CD.failureTitle),description:_D(CD.description),scoreDisplayMode:"informative",requiredArtifacts:["ConsoleMessages","devtoolsLogs"]}}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS];if(!(await go.request(n,t)).find((e=>isGptImplTag(e.url))))return Cv.NoGpt;const a=e.ConsoleMessages.filter((e=>"warning"===e.level||"error"===e.level)).filter((e=>e.url&&isGpt(e.url))).filter((e=>e.text.toLowerCase().includes("deprecated")||e.text.toLowerCase().includes("discouraged"))).map((e=>({source:e.source,description:e.text,url:e.url,timestamp:e.timestamp}))).sort(((e,t)=>(e.timestamp||0)-(t.timestamp||0))),r=[{key:"url",itemType:"url",text:_D(Dr.columnURL)},{key:"description",itemType:"code",
text:_D(Dr.columnDescription)}],o=Audit.makeTableDetails(r,a),i=a.length;return{score:Number(0===i),details:o,displayValue:_D(CD.displayValue,{numErrors:i})}}},UIStrings:CD});const kD={title:"GPT Errors",failureTitle:"Fix GPT errors",description:"Fix GPT errors to ensure your page is tagged as intended. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/gpt-errors-overall).",displayValue:"{numErrors, plural, =1 {1 error} other {# errors}} found"},FD=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/gpt-errors-overall.js",kD);var RD=Object.freeze({__proto__:null,default:class GptErrorsOverall extends Audit{static get meta(){return{id:"gpt-errors-overall",title:FD(kD.title),failureTitle:FD(kD.failureTitle),description:FD(kD.description),scoreDisplayMode:"informative",requiredArtifacts:["ConsoleMessages","devtoolsLogs"]}}static async audit(e,t){const n=e.devtoolsLogs[Audit.DEFAULT_PASS]
;if(!(await go.request(n,t)).find((e=>isGptImplTag(e.url))))return Cv.NoGpt;const a=e.ConsoleMessages.filter((e=>"error"===e.level||"warning"===e.level)).filter((e=>e.url&&isGpt(e.url))).filter((e=>!e.text.toLowerCase().includes("deprecated")&&!e.text.toLowerCase().includes("discouraged"))).map((e=>({source:e.source,description:e.text,url:e.url,timestamp:e.timestamp}))).sort(((e,t)=>(e.timestamp||0)-(t.timestamp||0))),r=[{key:"url",itemType:"url",text:FD(Dr.columnURL)},{key:"description",itemType:"code",text:FD(Dr.columnDescription)}],o=Audit.makeTableDetails(r,a),i=a.length;return{score:Number(0===i),details:o,displayValue:FD(kD.displayValue,{numErrors:i})}}},UIStrings:kD});const xD={title:"Total ad JS blocking time",failureTitle:"Reduce ad JS blocking time",description:"Ad-related scripts are blocking the main thread. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/total-ad-blocking-time).",failureDisplayValue:"{timeInMs, number, seconds} s blocked",
columnName:"Name",columnBlockingTime:"Blocking Time"},ID=createIcuMessageFn("node_modules/lighthouse-plugin-publisher-ads/audits/total-ad-blocking-time.js",xD),ND=[{key:"name",itemType:"text",text:ID(xD.columnName)},{key:"blockingTime",itemType:"ms",text:ID(xD.columnBlockingTime),granularity:1}];class TotalAdBlockingTime extends Audit{static get meta(){return{id:"total-ad-blocking-time",title:ID(xD.title),failureTitle:ID(xD.failureTitle),description:ID(xD.description),requiredArtifacts:["traces","devtoolsLogs"]}}static get defaultOptions(){return{simulate:{p10:290,median:600},provided:{p10:150,median:350}}}static async audit(e,t){const n=e.traces[Audit.DEFAULT_PASS],a=e.devtoolsLogs[Audit.DEFAULT_PASS];if(!(await go.request(a,t)).find((e=>isAdRelated(e.url))))return Cv.NoAdRelatedReq;const r={trace:n,devtoolsLog:a,settings:t.settings};let o=[];try{o=await Zv.request(r,t)}catch(e){return Cv.InvalidTiming}let i=0;const s=new Map;for(const e of o){const t=getAttributableUrl(e)
;if(!t||!isAdRelated(t))continue;if(e.parent)continue;const n=e.duration-50;i+=n;const a=getNameOrTld(t),r=s.get(a)||0;s.set(a,r+n)}const c=[];for(const[e,t]of s.entries())c.push({name:e,blockingTime:t});c.sort(((e,t)=>t.blockingTime-e.blockingTime));const l=t.options[t.settings.throttlingMethod]||t.options.provided;return{score:Audit.computeLogNormalScore(l,i),numericValue:i,numericUnit:"millisecond",displayValue:ID(xD.failureDisplayValue,{timeInMs:i}),details:TotalAdBlockingTime.makeTableDetails(ND,c)}}}var LD=Object.freeze({__proto__:null,default:TotalAdBlockingTime,UIStrings:xD})}();