{ "scriptlets": [ { "name": "safe-self.fn", "aliases": [], "body": "function safeSelf(){if(scriptletGlobals.safeSelf)return scriptletGlobals.safeSelf;const e=globalThis;const t={Array_from:Array.from,Error:e.Error,Function_toStringFn:e.Function.prototype.toString,Function_toString:e=>t.Function_toStringFn.call(e),Math_floor:Math.floor,Math_max:Math.max,Math_min:Math.min,Math_random:Math.random,Object:Object,Object_defineProperty:Object.defineProperty.bind(Object),Object_defineProperties:Object.defineProperties.bind(Object),Object_fromEntries:Object.fromEntries.bind(Object),Object_getOwnPropertyDescriptor:Object.getOwnPropertyDescriptor.bind(Object),Object_hasOwn:Object.hasOwn.bind(Object),Object_toString:Object.prototype.toString,RegExp:e.RegExp,RegExp_test:e.RegExp.prototype.test,RegExp_exec:e.RegExp.prototype.exec,Request_clone:e.Request.prototype.clone,String:e.String,String_fromCharCode:String.fromCharCode,String_split:String.prototype.split,XMLHttpRequest:e.XMLHttpRequest,addEventListener:e.EventTarget.prototype.addEventListener,removeEventListener:e.EventTarget.prototype.removeEventListener,fetch:e.fetch,JSON:e.JSON,JSON_parseFn:e.JSON.parse,JSON_stringifyFn:e.JSON.stringify,JSON_parse:(...e)=>t.JSON_parseFn.call(t.JSON,...e),JSON_stringify:(...e)=>t.JSON_stringifyFn.call(t.JSON,...e),log:console.log.bind(console),logLevel:0,makeLogPrefix(...e){return this.sendToLogger&&`[${e.join(\" \\u205d \")}]`||\"\"},uboLog(...e){if(this.sendToLogger===void 0)return;if(e===void 0||e[0]===\"\")return;return this.sendToLogger(\"info\",...e)},uboErr(...e){if(this.sendToLogger===void 0)return;if(e===void 0||e[0]===\"\")return;return this.sendToLogger(\"error\",...e)},escapeRegexChars(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")},initPattern(e,t={}){if(e===\"\")return{matchAll:true,expect:true};const r=t.canNegate!==true||e.startsWith(\"!\")===false;if(r===false)e=e.slice(1);const n=/^\\/(.+)\\/([gimsu]*)$/.exec(e);if(n!==null)return{re:new this.RegExp(n[1],n[2]||t.flags),expect:r};if(t.flags!==void 0)return{re:new this.RegExp(this.escapeRegexChars(e),t.flags),expect:r};return{pattern:e,expect:r}},testPattern(e,t){if(e.matchAll)return true;if(e.re)return this.RegExp_test.call(e.re,t)===e.expect;return t.includes(e.pattern)===e.expect},patternToRegex(e,t=void 0,r=false){if(e===\"\")return/^/;const n=/^\\/(.+)\\/([gimsu]*)$/.exec(e);if(n===null){const n=this.escapeRegexChars(e);return new RegExp(r?`^${n}$`:n,t)}try{return new RegExp(n[1],n[2]||void 0)}catch{}return/^/},getExtraArgs(e,t=0){const r=e.slice(t).reduce(((e,t,r,n)=>{if((r&1)===0){const t=n[r+1];const o=/^\\d+$/.test(t)?parseInt(t,10):t;e.push([n[r],o])}return e}),[]);return this.Object_fromEntries(r)},onIdle(t,r){if(e.requestIdleCallback)return e.requestIdleCallback(t,r);return e.requestAnimationFrame(t)},offIdle(t){if(e.requestIdleCallback)return e.cancelIdleCallback(t);return e.cancelAnimationFrame(t)}};scriptletGlobals.safeSelf=t;if(scriptletGlobals.bcSecret===void 0)return t;t.logLevel=scriptletGlobals.logLevel||1;let r=\"\";let n=\"\";let o=0;t.toLogText=(e,...t)=>{if(t.length===0)return;const s=`[${document.location.hostname||document.location.href}]${t.join(\" \")}`;if(s===n&&e===r)if(Date.now()-o<5e3)return;r=e;n=s;o=Date.now();return s};try{const r=new e.BroadcastChannel(scriptletGlobals.bcSecret);let n=[];t.sendToLogger=(e,...o)=>{const s=t.toLogText(e,...o);if(s===void 0)return;if(n===void 0)return r.postMessage({what:\"messageToLogger\",type:e,text:s});n.push({type:e,text:s})};r.onmessage=e=>{const o=e.data;switch(o){case\"iamready!\":if(n===void 0)break;n.forEach((({type:e,text:t})=>r.postMessage({what:\"messageToLogger\",type:e,text:t})));n=void 0;break;case\"setScriptletLogLevelToOne\":t.logLevel=1;break;case\"setScriptletLogLevelToTwo\":t.logLevel=2;break}};r.postMessage(\"areyouready?\")}catch{t.sendToLogger=(e,...r)=>{const n=t.toLogText(e,...r);if(n===void 0)return;t.log(`uBO ${n}`)}}return t}", "dependencies": [] }, { "name": "run-at.fn", "aliases": [], "body": "function runAt(e,t){const n=e=>{const t={loading:1,asap:1,interactive:2,end:2,2:2,complete:3,idle:3,3:3};const n=Array.isArray(e)?e:[e];for(const e of n){const n=`${e}`;if(Object.hasOwn(t,n)===false)continue;return t[n]}return 0};const r=n(t);if(n(document.readyState)>=r){e();return}const a=()=>{if(n(document.readyState){n.disconnect();e()}));n.observe(document,{childList:true})}", "dependencies": [] }, { "name": "set-attr.fn", "aliases": [], "body": "function setAttrFn(e=false,t,n=\"\",o=\"\",r=\"\",s={}){if(n===\"\")return;if(o===\"\")return;const i=safeSelf();const u=e===false&&/^\\[.+\\]$/.test(r)?r.slice(1,-1):\"\";const f=e=>u!==\"\"?e.getAttribute(u)||\"\":r;const c=()=>{let e;try{e=document.querySelectorAll(n)}catch{return false}for(const n of e){const e=n.getAttribute(o);const r=f(n);if(r===e)continue;if(r!==\"\"&&/^on/i.test(o))if(o.toLowerCase()in n)continue;n.setAttribute(o,r);i.uboLog(t,`${o}=\"${r}\"`)}return true};let l,a;const d=e=>{if(a!==void 0)return;let t=false;for(const n of e){if(n.addedNodes.length===0)continue;for(const e of n.addedNodes){if(e.nodeType!==1)continue;t=true;break}if(t)break}if(t===false)return;a=self.requestAnimationFrame((()=>{a=void 0;c()}))};const b=()=>{if(c()===false)return;l=new MutationObserver(d);l.observe(document.body,{subtree:true,childList:true})};runAt((()=>{b()}),s.runAt||\"idle\")}", "dependencies": [ "run-at.fn", "safe-self.fn" ] }, { "name": "set-attr.js", "aliases": [], "body": "function setAttr(t=\"\",e=\"\",s=\"\"){const r=safeSelf();const f=r.makeLogPrefix(\"set-attr\",t,e,s);const n=[\"\",\"false\",\"true\"];if(n.includes(s.toLowerCase())===false)if(/^\\d+$/.test(s)){const t=parseInt(s,10);if(t>=32768)return;s=`${t}`}else if(/^\\[.+\\]$/.test(s)===false)return;const a=r.getExtraArgs(Array.from(arguments),3);setAttrFn(false,f,t,e,s,a)}", "dependencies": [ "safe-self.fn", "set-attr.fn" ], "executionWorld": "ISOLATED" }, { "name": "trusted-set-attr.js", "aliases": [], "body": "function trustedSetAttr(t=\"\",r=\"\",e=\"\"){const s=safeSelf();const n=s.makeLogPrefix(\"trusted-set-attr\",t,r,e);const o=s.getExtraArgs(Array.from(arguments),3);setAttrFn(true,n,t,r,e,o)}", "dependencies": [ "safe-self.fn", "set-attr.fn" ], "executionWorld": "ISOLATED", "requiresTrust": true }, { "name": "remove-attr.js", "aliases": [ "ra.js" ], "body": "function removeAttr(t=\"\",e=\"\",o=\"\"){if(typeof t!==\"string\")return;if(t===\"\")return;const r=safeSelf();const s=r.makeLogPrefix(\"remove-attr\",t,e,o);const n=r.String_split.call(t,/\\s*\\|\\s*/);const i=n.map((t=>`${e}[${CSS.escape(t)}]`)).join(\",\");if(r.logLevel>1)r.uboLog(s,`Target selector:\\n\\t${i}`);const f=/\\basap\\b/.test(o);let l;const u=()=>{if(l!==void 0)return;l=r.onIdle((()=>{l=void 0;a()}),{timeout:17})};const a=()=>{if(l!==void 0){r.offIdle(l);l=void 0}try{const t=document.querySelectorAll(i);for(const e of t)for(const t of n){if(e.hasAttribute(t)===false)continue;e.removeAttribute(t);r.uboLog(s,`Removed attribute '${t}'`)}}catch{}};const c=t=>{if(l!==void 0)return;let e=true;for(let o=0;o{a();if(/\\bstay\\b/.test(o)===false)return;const t=new MutationObserver(c);t.observe(document,{attributes:true,attributeFilter:n,childList:true,subtree:true})};runAt((()=>{d()}),r.String_split.call(o,/\\s+/))}", "dependencies": [ "run-at.fn", "safe-self.fn" ] }, { "name": "trusted-create-html.js", "aliases": [], "body": "function trustedCreateHTML(e,t=\"\",r=\"\"){if(e===\"\")return;if(t===\"\")return;const n=safeSelf();const o=n.makeLogPrefix(\"trusted-create-html\",e,t,r);const s=n.getExtraArgs(Array.from(arguments),3);self.trustedCreateHTML=true;let u=self.frameElement;while(u!==null){const e=u.ownerDocument;if(e===null)break;const t=e.defaultView;if(t===null)break;if(t.trustedCreateHTML)return;u=u.frameElement}const i=parseInt(r,10);const l=new DOMParser;const c=l.parseFromString(t,\"text/html\");const f=[];while(c.body.firstChild!==null)f.push(document.adoptNode(c.body.firstChild));if(f.length===0)return;const a=[];const d=()=>{for(const e of a){if(e.parentNode===null)continue;e.parentNode.removeChild(e)}n.uboLog(o,\"Node(s) removed\")};const m=(e,t)=>{for(const r of t){e.append(r);if(isNaN(i))continue;a.push(r)}};const h=()=>{const t=document.querySelectorAll(e);if(t.length===0)return false;const r=Math.min(t.length,s.limit||1)-1;for(let e=0;ee.cloneNode(true))));m(t[r],f);n.uboLog(o,\"Node(s) appended\");if(a.length===0)return true;setTimeout(d,i);return true};const p=()=>{if(h())return;const t=new MutationObserver((()=>{if(h()===false)return;t.disconnect()}));const r={childList:true,subtree:true};if(/[#.[]/.test(e)){r.attributes=true;if(e.includes(\"[\")===false){r.attributeFilter=[];if(e.includes(\"#\"))r.attributeFilter.push(\"id\");if(e.includes(\".\"))r.attributeFilter.push(\"class\")}}t.observe(document,r)};runAt(p,s.runAt||\"loading\")}", "dependencies": [ "run-at.fn", "safe-self.fn" ], "executionWorld": "ISOLATED", "requiresTrust": true }, { "name": "urlskip.fn", "aliases": [], "body": "function urlSkip(e,t,n){try{let r=false;let i=e;for(const e of n){const t=i;const n=e.charCodeAt(0);if(n===35&&e===\"#\"){const e=t.indexOf(\"#\");i=e!==-1?t.slice(e+1):\"\";continue}if(n===38){const n=(parseInt(e.slice(1))||0)-1;if(n<0)return;const r=new URL(t);if(n>=r.searchParams.size)return;const s=Array.from(r.searchParams.keys());i=decodeURIComponent(s[n]);continue}if(n===43&&e===\"+https\"){const e=t.replace(/^https?:\\/\\//,\"\");if(/^[\\w-]:\\/\\//.test(e))return;i=`https://${e}`;continue}if(n===45){if(e===\"-base64\"){i=self.atob(t);continue}if(e===\"-safebase64\"){if(urlSkip.safeBase64Replacer===void 0){urlSkip.safeBase64Map={\"-\":\"+\",_:\"/\"};urlSkip.safeBase64Replacer=e=>urlSkip.safeBase64Map[e]}i=t.replace(/[-_]/g,urlSkip.safeBase64Replacer);i=self.atob(i);continue}if(e===\"-uricomponent\"){i=decodeURIComponent(t);continue}if(e===\"-blocked\"){r=true;continue}}if(n===47){const n=new RegExp(e.slice(1,-1));const r=n.exec(t);if(r===null)return;if(r.length<=1)return;i=r[1];continue}if(n===63){i=new URL(t).searchParams.get(e.slice(1));if(i===null)return;if(i.includes(\" \"))i=i.replace(/ /g,\"%20\");continue}return}const s=new URL(i);if(s.protocol!==\"https:\")if(s.protocol!==\"http:\")return;if(t&&r!==true)return;return i}catch{}}", "dependencies": [] }, { "name": "href-sanitizer.js", "aliases": [ "urlskip.js" ], "body": "function hrefSanitizer(t=\"\",e=\"\"){if(typeof t!==\"string\")return;if(t===\"\")return;const r=safeSelf();const n=r.makeLogPrefix(\"href-sanitizer\",t,e);if(e===\"\")e=\"text\";const o=(t,e)=>{let r=[];try{r=document.querySelectorAll(`a[href=\"${t}\"`)}catch{}for(const t of r)t.setAttribute(\"href\",e);return r.length};const i=t=>{if(typeof t!==\"string\")return\"\";if(t===\"\")return\"\";if(/[\\x00-\\x20\\x7f]/.test(t))return\"\";try{const e=new URL(t,document.location);return e.href}catch{}return\"\"};const f=(t,e)=>{if(/^\\[.*\\]$/.test(e))return t.getAttribute(e.slice(1,-1).trim())||\"\";if(e===\"text\")return t.textContent.replace(/^[^\\x21-\\x7e]+/,\"\").replace(/[^\\x21-\\x7e]+$/,\"\");const r=e.replace(/(\\S)\\?/g,\"\\\\1 ?\").split(/\\s+/);const n=urlSkip(t.href,false,r);if(n===void 0)return;return n.replace(/ /g,\"%20\")};const c=()=>{let c=[];try{c=document.querySelectorAll(t)}catch{return false}for(const t of c){if(t.localName!==\"a\")continue;if(t.hasAttribute(\"href\")===false)continue;const c=t.getAttribute(\"href\");const s=f(t,e);const u=i(s);if(u===\"\")continue;if(u===c)continue;t.setAttribute(\"href\",u);const l=o(c,u);r.uboLog(n,`Sanitized ${l+1} links to\\n${u}`)}return true};let s,u;const l=t=>{if(u!==void 0)return;let e=false;for(const r of t){if(r.addedNodes.length===0)continue;for(const t of r.addedNodes){if(t.nodeType!==1)continue;e=true;break}if(e)break}if(e===false)return;u=r.onIdle((()=>{u=void 0;c()}))};const a=()=>{if(c()===false)return;s=new MutationObserver(l);s.observe(document.body,{subtree:true,childList:true})};runAt((()=>{a()}),\"interactive\")}", "dependencies": [ "run-at.fn", "safe-self.fn", "urlskip.fn" ], "executionWorld": "ISOLATED" }, { "name": "get-random-token.fn", "aliases": [], "body": "function getRandomTokenFn(){const n=safeSelf();return n.String_fromCharCode(Date.now()%26+97)+n.Math_floor(n.Math_random()*982451653+982451653).toString(36)}", "dependencies": [ "safe-self.fn" ] }, { "name": "get-exception-token.fn", "aliases": [], "body": "function getExceptionTokenFn(){const n=getRandomTokenFn();const e=self.onerror;self.onerror=function(t,...o){if(typeof t===\"string\"&&t.includes(n))return true;if(e instanceof Function)return e.call(this,t,...o)}.bind();return n}", "dependencies": [ "get-random-token.fn" ] }, { "name": "collate-fetch-arguments.fn", "aliases": [], "body": "function collateFetchArgumentsFn(e,t){const o=safeSelf();const c=[\"body\",\"cache\",\"credentials\",\"duplex\",\"headers\",\"integrity\",\"keepalive\",\"method\",\"mode\",\"priority\",\"redirect\",\"referrer\",\"referrerPolicy\",\"url\"];const l={};if(collateFetchArgumentsFn.collateKnownProps===void 0)collateFetchArgumentsFn.collateKnownProps=(e,t)=>{for(const o of c){if(e[o]===void 0)continue;t[o]=e[o]}};if(typeof e!==\"object\"||o.Object_toString.call(e)!==\"[object Request]\")l.url=`${e}`;else{let t;try{t=o.Request_clone.call(e)}catch{}collateFetchArgumentsFn.collateKnownProps(t||e,l)}if(typeof t===\"object\"&&t!==null)collateFetchArgumentsFn.collateKnownProps(t,l);return l}", "dependencies": [ "safe-self.fn" ] }, { "name": "parse-properties-to-match.fn", "aliases": [], "body": "function parsePropertiesToMatchFn(t,e=\"\"){const i=safeSelf();const n=new Map;if(t===void 0||t===\"\")return n;const o={canNegate:true};for(const s of i.String_split.call(t,/\\s+/)){let[t,r]=i.String_split.call(s,\":\");if(t===\"\")continue;if(r!==void 0&&/[^$\\w -]/.test(t)){t=`${t}:${r}`;r=void 0}if(r!==void 0)n.set(t,i.initPattern(r,o));else if(e!==\"\")n.set(e,i.initPattern(t,o))}return n}", "dependencies": [ "safe-self.fn" ] }, { "name": "match-object-properties.fn", "aliases": [], "body": "function matchObjectPropertiesFn(t,...n){const e=safeSelf();const f=[];for(const o of n){if(o instanceof Object===false)continue;for(const[n,i]of t){let t=o[n];if(t===void 0)continue;if(typeof t!==\"string\"){try{t=e.JSON_stringify(t)}catch{}if(typeof t!==\"string\")continue}if(e.testPattern(i,t)===false)return;f.push(`${n}: ${t}`)}}return f}", "dependencies": [ "safe-self.fn" ] }, { "name": "generate-content.fn", "aliases": [], "body": "function generateContentFn(t,e){const n=safeSelf();const r=t=>{const e=[];let r=0;do{const t=n.Math_random().toString(36).slice(2);e.push(t);r+=t.length}while(r{const r=scriptletGlobals.warOrigin;const s=e.slice(4);const i=[r,\"/\",s];const o=scriptletGlobals.warSecret;if(o!==void 0)i.push(\"?secret=\",o);const c=new n.XMLHttpRequest;c.responseType=\"text\";c.onloadend=e=>{t(e.target.responseText||\"\")};c.open(\"GET\",i.join(\"\"));c.send()})).catch((()=>\"\"))}if(e.startsWith(\"join:\")){const n=e.slice(7).split(e.slice(5,7)).map((e=>generateContentFn(t,e)));return n.some((t=>t instanceof Promise))?Promise.all(n).then((t=>t.join(\"\"))):n.join(\"\")}if(t)return e;return\"\"}", "dependencies": [ "safe-self.fn" ] }, { "name": "arglist-parser.fn", "aliases": [], "body": "class ArglistParser{constructor(t=\",\",e=false){this.separatorChar=this.actualSeparatorChar=t;this.separatorCode=this.actualSeparatorCode=t.charCodeAt(0);this.mustQuote=e;this.quoteBeg=0;this.quoteEnd=0;this.argBeg=0;this.argEnd=0;this.separatorBeg=0;this.separatorEnd=0;this.transform=false;this.failed=false;this.reWhitespaceStart=/^\\s+/;this.reWhitespaceEnd=/(?:^|\\S)(\\s+)$/;this.reOddTrailingEscape=/(?:^|[^\\\\])(?:\\\\\\\\)*\\\\$/;this.reTrailingEscapeChars=/\\\\+$/}nextArg(t,e=0){const s=t.length;this.quoteBeg=e+this.leftWhitespaceCount(t.slice(e));this.failed=false;const r=t.charCodeAt(this.quoteBeg);if(r===34||r===39||r===96){this.indexOfNextArgSeparator(t,r);if(this.argEnd!==s){this.quoteEnd=this.argEnd+1;this.separatorBeg=this.separatorEnd=this.quoteEnd;this.separatorEnd+=this.leftWhitespaceCount(t.slice(this.quoteEnd));if(this.separatorEnd===s)return this;if(t.charCodeAt(this.separatorEnd)===this.separatorCode){this.separatorEnd+=1;return this}}}this.indexOfNextArgSeparator(t,this.separatorCode);this.separatorBeg=this.separatorEnd=this.argEnd;if(this.separatorBeg]=?)(.+?)\\]/;#p=/^-?\\d+/;#s;#t;#e(t,e){if(t.length===0)return;const s=[];let i=t.charCodeAt(e);if(i===36){s.push({mv:this.#a});e+=1}else if(i===64){s.push({mv:this.#c});e+=1}else s.push({mv:e===0?this.#a:this.#c});let r=this.#o;for(;;){if(e===t.length)break;i=t.charCodeAt(e);if(i===32){e+=1;continue}if(i===46){if(r!==this.#o)return;if(t.startsWith(\"..\",e)){r=this.#h;e+=2}else{r=this.#l;e+=1}continue}if(i!==91){if(r===this.#o){const i=s.at(-1);if(i===void 0)return;e=this.#d(t,i,e);break}const i=this.#v(t,e);if(i===void 0)return;s.push({mv:r,k:i});e+=i.length;r=this.#o;continue}if(t.startsWith(\"[?\",e)){const i=t.charCodeAt(e+2)===33;const n=e+2+(i?1:0);const o=this.#e(t,n);if(o===void 0)return;if(t.startsWith(\"]\",o.i)===false)return;if(i)o.steps.at(-1).not=true;s.push({mv:r||this.#l,steps:o.steps});e=o.i+1;r=this.#o;continue}if(t.startsWith(\"[*]\",e)){r||=this.#l;s.push({mv:r,k:\"*\"});e+=3;r=this.#o;continue}const n=this.#m(t,e+1);if(n===void 0)return;r||=this.#l;s.push({mv:r,k:n.s});e=n.i+1;r=this.#o}if(s.length===0)return;if(r!==this.#o)return;return{steps:s,i:e}}#i(t,e){let s=[];if(Array.isArray(t)===false)return s;for(const i of t)switch(i.mv){case this.#a:s=[[\"$\"]];break;case this.#c:s=[e];break;case this.#l:case this.#h:s=this.#y(s,i);break;default:break}return s}#y(t,e){const s=[];for(const i of t){const{value:t}=this.#r(i);if(e.k===\"*\")this.#k(i,e,t,s);else if(e.k!==void 0)this.#E(i,e,t,s);else if(e.steps)this.#N(i,e,t,s)}return s}#k(t,e,s,i){const r=e.mv===this.#h;for(const{path:e}of this.#g(s,r))i.push([...t,...e])}#E(t,e,s,i){const r=Array.isArray(e.k)?e.k:[e.k];for(const n of r){const r=this.#b(e,s,n);if(r===void 0)continue;i.push([...t,r])}if(e.mv!==this.#h)return;for(const{obj:n,key:o,path:a}of this.#g(s,true))for(const s of r){const r=this.#b(e,n[o],s);if(r===void 0)continue;i.push([...t,...a,r])}}#N(t,e,s,i){const r=e.mv===this.#h;if(Array.isArray(s)===false){const s=this.#i(e.steps,t);if(s.length!==0)i.push(t);if(r!==true)return}for(const{obj:n,key:o,path:a}of this.#g(s,r)){if(Array.isArray(n[o]))continue;const s=[...t,...a];const r=this.#i(e.steps,s);if(r.length===0)continue;i.push(s)}}#D(t,e){if(typeof e===\"number\")if(Array.isArray(t))return e>=0?e:t.length+e;return e}#g(t,e){const s={next(){const t=this.stack.length;if(t===0){this.value=void 0;this.done=true;return this}const s=this.stack[t-1];const i=s.keys.next();if(i.done){this.stack.pop();this.path.pop();return this.next()}this.path[t-1]=i.value;this.value={obj:s.obj,key:i.value,path:this.path.slice()};const r=this.value.obj[this.value.key];if(e)if(Array.isArray(r))this.stack.push({obj:r,keys:r.keys()});else if(typeof r===\"object\"&&r!==null)this.stack.push({obj:r,keys:Object.keys(r).values()});return this},path:[],value:void 0,done:false,stack:[],[Symbol.iterator](){return this}};if(Array.isArray(t))s.stack.push({obj:t,keys:t.keys()});else if(typeof t===\"object\"&&t!==null)s.stack.push({obj:t,keys:Object.keys(t).values()});return s}#m(t,e){const s=[];for(;;){const i=t.charCodeAt(e);if(i===93)break;if(i===44){e+=1;continue}if(i===39){const i=this.#A(t,39,e+1);if(i===void 0)return;s.push(i.s);e=i.i;continue}if(i===45||i>=48&&i<=57){const i=this.#p.exec(t.slice(e));if(i===null)return;const r=parseInt(t.slice(e),10);s.push(r);e+=i[0].length;continue}const r=this.#v(t,e);if(r===void 0)return;s.push(r);e+=r.length}return{s:s.length===1?s[0]:s,i:e}}#v(t,e){const s=this.#u.exec(t.slice(e));if(s===null)return;return s[0]}#A(t,e,s){const i=t.length;const r=[];let n=s,o=s;for(;;){if(o===i)return;const s=t.charCodeAt(o);if(s===e){r.push(t.slice(n,o));o+=1;break}if(s===92&&o+1\":a=o>t.rval===n;break;case\">=\":a=o>=t.rval===n;break;case\"^=\":a=`${o}`.startsWith(t.rval)===n;break;case\"$=\":a=`${o}`.endsWith(t.rval)===n;break;case\"*=\":a=`${o}`.includes(t.rval)===n;break;case\"re\":a=t.rval.test(`${o}`);break;default:a=r===n;break}if(a)return i}#n(t,e){let{modify:s,rval:i}=this.#t;if(typeof i===\"string\")i=i.replace(\"${now}\",`${Date.now()}`);switch(s){case void 0:t[e]=i;break;case\"+\":{if(i instanceof Object===false)return;const s=t[e];if(s instanceof Object===false)return;if(Array.isArray(s))return;for(const[t,e]of Object.entries(i))s[t]=e;break}case\"repl\":{const s=t[e];if(typeof s!==\"string\")return;if(this.#t.re===void 0){this.#t.re=null;try{this.#t.re=i.regex!==void 0?new RegExp(i.regex,i.flags):new RegExp(i.pattern.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\"))}catch{}}if(this.#t.re===null)return;t[e]=s.replace(this.#t.re,i.replacement);break}default:break}}}", "dependencies": [] }, { "name": "proxy-apply.fn", "aliases": [], "body": "function proxyApplyFn(t=\"\",p=\"\"){let o=globalThis;let n=t;for(;;){const t=n.indexOf(\".\");if(t===-1)break;o=o[n.slice(0,t)];if(o instanceof Object===false)return;n=n.slice(t+1)}const r=o[n];if(typeof r!==\"function\")return;if(proxyApplyFn.CtorContext===void 0){proxyApplyFn.ctorContexts=[];proxyApplyFn.CtorContext=class{constructor(...t){this.init(...t)}init(t,p){this.callFn=t;this.callArgs=p;return this}reflect(){const t=Reflect.construct(this.callFn,this.callArgs);this.callFn=this.callArgs=this.private=void 0;proxyApplyFn.ctorContexts.push(this);return t}static factory(...t){return proxyApplyFn.ctorContexts.length!==0?proxyApplyFn.ctorContexts.pop().init(...t):new proxyApplyFn.CtorContext(...t)}};proxyApplyFn.applyContexts=[];proxyApplyFn.ApplyContext=class{constructor(...t){this.init(...t)}init(t,p,o){this.callFn=t;this.thisArg=p;this.callArgs=o;return this}reflect(){const t=Reflect.apply(this.callFn,this.thisArg,this.callArgs);this.callFn=this.thisArg=this.callArgs=this.private=void 0;proxyApplyFn.applyContexts.push(this);return t}static factory(...t){return proxyApplyFn.applyContexts.length!==0?proxyApplyFn.applyContexts.pop().init(...t):new proxyApplyFn.ApplyContext(...t)}};proxyApplyFn.isCtor=new Map;proxyApplyFn.proxies=new WeakMap;proxyApplyFn.nativeToString=Function.prototype.toString;const t=new Proxy(Function.prototype.toString,{apply(t,p){let o=p;for(;;){const t=proxyApplyFn.proxies.get(o);if(t===void 0)break;o=t}return proxyApplyFn.nativeToString.call(o)}});proxyApplyFn.proxies.set(t,proxyApplyFn.nativeToString);Function.prototype.toString=t}if(proxyApplyFn.isCtor.has(t)===false)proxyApplyFn.isCtor.set(t,r.prototype?.constructor===r);const i={apply(t,o,n){return p(proxyApplyFn.ApplyContext.factory(t,o,n))}};if(proxyApplyFn.isCtor.get(t))i.construct=function(t,o){return p(proxyApplyFn.CtorContext.factory(t,o))};const l=new Proxy(r,i);proxyApplyFn.proxies.set(l,r);o[n]=l}", "dependencies": [] }, { "name": "edit-outbound-object.fn", "aliases": [], "body": "function editOutboundObjectFn(t=false,e=\"\",o=\"\"){if(e===\"\")return;const n=safeSelf();const u=n.makeLogPrefix(`${t?\"trusted-\":\"\"}edit-outbound-object`,e,o);const r=JSONPath.create(o);if(r.valid===false||r.value!==void 0&&t!==true)return n.uboLog(u,\"Bad JSONPath query\");proxyApplyFn(e,(function(t){const e=t.reflect();const o=r.apply(e);if(o===void 0)return e;n.uboLog(u,\"Edited\");if(n.logLevel>1)n.uboLog(u,`After edit:\\n${n.JSON_stringify(o,null,2)}`);return o}))}", "dependencies": [ "jsonpath.fn", "proxy-apply.fn", "safe-self.fn" ] }, { "name": "edit-outbound-object.js", "aliases": [], "body": "function editOutboundObject(t=\"\",e=\"\"){editOutboundObjectFn(false,t,e)}", "dependencies": [ "edit-outbound-object.fn" ] }, { "name": "trusted-edit-outbound-object.js", "aliases": [], "body": "function trustedEditOutboundObject(t=\"\",u=\"\"){editOutboundObjectFn(true,t,u)}", "dependencies": [ "edit-outbound-object.fn" ], "requiresTrust": true }, { "name": "json-edit.js", "aliases": [], "body": "function jsonEdit(n=\"\"){editOutboundObjectFn(false,\"JSON.parse\",n)}", "dependencies": [ "edit-outbound-object.fn" ] }, { "name": "trusted-json-edit.js", "aliases": [], "body": "function trustedJsonEdit(t=\"\"){editOutboundObjectFn(true,\"JSON.parse\",t)}", "dependencies": [ "edit-outbound-object.fn" ], "requiresTrust": true }, { "name": "edit-inbound-object.fn", "aliases": [], "body": "function editInboundObjectFn(t=false,e=\"\",r=\"\",n=\"\"){if(e===\"\")return;const i=safeSelf();const o=i.makeLogPrefix(`${t?\"trusted-\":\"\"}edit-inbound-object`,e,n);const f=JSONPath.create(n);if(f.valid===false||f.value!==void 0&&t!==true)return i.uboLog(o,\"Bad JSONPath query\");const l=parseInt(r,10);if(isNaN(l))return;const u=t=>{if(Array.isArray(t)===false)return;if(l>=0){if(t.length<=l)return;return l}if(t.length<-l)return;return t.length+l};const s=t=>{let e;try{e=i.JSON_parse(i.JSON_stringify(t))}catch{}if(typeof e!==\"object\"||e===null)return;const r=f.apply(e);if(r===void 0)return;i.uboLog(o,\"Edited\");if(i.logLevel>1)i.uboLog(o,`After edit:\\n${i.JSON_stringify(r,null,2)}`);return r};proxyApplyFn(e,(function(t){const e=u(t.callArgs);if(e!==void 0){const r=s(t.callArgs[e]);if(r)t.callArgs[e]=r}return t.reflect()}))}", "dependencies": [ "jsonpath.fn", "proxy-apply.fn", "safe-self.fn" ] }, { "name": "edit-inbound-object.js", "aliases": [], "body": "function editInboundObject(n=\"\",e=\"\",t=\"\"){editInboundObjectFn(false,n,e,t)}", "dependencies": [ "edit-inbound-object.fn" ] }, { "name": "trusted-edit-inbound-object.js", "aliases": [], "body": "function trustedEditInboundObject(t=\"\",n=\"\",d=\"\"){editInboundObjectFn(true,t,n,d)}", "dependencies": [ "edit-inbound-object.fn" ], "requiresTrust": true }, { "name": "json-edit-xhr-response.fn", "aliases": [], "body": "function jsonEditXhrResponseFn(e,t=\"\"){const s=safeSelf();const o=s.makeLogPrefix(`${e?\"trusted-\":\"\"}json-edit-xhr-response`,t);const r=new WeakMap;const n=JSONPath.create(t);if(n.valid===false||n.value!==void 0&&e!==true)return s.uboLog(o,\"Bad JSONPath query\");const p=s.getExtraArgs(Array.from(arguments),2);const i=parsePropertiesToMatchFn(p.propsToMatch,\"url\");self.XMLHttpRequest=class extends self.XMLHttpRequest{open(e,t,...n){const p={method:e,url:t};const a=i.size===0||matchObjectPropertiesFn(i,p);if(a){if(s.logLevel>1&&Array.isArray(a))s.uboLog(o,`Matched \"propsToMatch\":\\n\\t${a.join(\"\\n\\t\")}`);r.set(this,p)}return super.open(e,t,...n)}get response(){const e=super.response;const t=r.get(this);if(t===void 0)return e;const p=typeof e===\"string\"?e.length:void 0;if(t.lastResponseLength!==p){t.response=void 0;t.lastResponseLength=p}if(t.response!==void 0)return t.response;let i;if(typeof e===\"object\")i=e;else if(typeof e===\"string\")try{i=s.JSON_parse(e)}catch{}if(typeof i!==\"object\"||i===null)return t.response=e;const a=n.apply(i);if(a===void 0)return t.response=e;s.uboLog(o,\"Edited\");const c=typeof e===\"string\"?JSONPath.toJSON(a,s.JSON_stringify):a;return t.response=c}get responseText(){const e=this.response;return typeof e!==\"string\"?super.responseText:e}}}", "dependencies": [ "jsonpath.fn", "match-object-properties.fn", "parse-properties-to-match.fn", "safe-self.fn" ] }, { "name": "json-edit-xhr-response.js", "aliases": [], "body": "function jsonEditXhrResponse(n=\"\",...s){jsonEditXhrResponseFn(false,n,...s)}", "dependencies": [ "json-edit-xhr-response.fn" ] }, { "name": "trusted-json-edit-xhr-response.js", "aliases": [], "body": "function trustedJsonEditXhrResponse(n=\"\",...s){jsonEditXhrResponseFn(true,n,...s)}", "dependencies": [ "json-edit-xhr-response.fn" ], "requiresTrust": true }, { "name": "json-edit-xhr-request.fn", "aliases": [], "body": "function jsonEditXhrRequestFn(e,t=\"\"){const r=safeSelf();const s=r.makeLogPrefix(`${e?\"trusted-\":\"\"}json-edit-xhr-request`,t);const o=new WeakMap;const n=JSONPath.create(t);if(n.valid===false||n.value!==void 0&&e!==true)return r.uboLog(s,\"Bad JSONPath query\");const i=r.getExtraArgs(Array.from(arguments),2);const a=parsePropertiesToMatchFn(i.propsToMatch,\"url\");self.XMLHttpRequest=class extends self.XMLHttpRequest{open(e,t,...n){const i={method:e,url:t};const c=a.size===0||matchObjectPropertiesFn(a,i);if(c){if(r.logLevel>1&&Array.isArray(c))r.uboLog(s,`Matched \"propsToMatch\":\\n\\t${c.join(\"\\n\\t\")}`);o.set(this,i)}return super.open(e,t,...n)}send(e){const t=o.get(this);if(t)e=this.#e(e)||e;super.send(e)}#e(e){if(typeof e!==\"string\")return;let t;try{t=r.JSON_parse(e)}catch{}if(t instanceof Object===false)return;const o=n.apply(t);if(o===void 0)return;e=r.JSON_stringify(o);r.uboLog(s,\"Edited\");if(r.logLevel>1)r.uboLog(s,`After edit:\\n${e}`);return e}}}", "dependencies": [ "jsonpath.fn", "match-object-properties.fn", "parse-properties-to-match.fn", "safe-self.fn" ] }, { "name": "json-edit-xhr-request.js", "aliases": [], "body": "function jsonEditXhrRequest(e=\"\",...n){jsonEditXhrRequestFn(false,e,...n)}", "dependencies": [ "json-edit-xhr-request.fn" ] }, { "name": "trusted-json-edit-xhr-request.js", "aliases": [], "body": "function trustedJsonEditXhrRequest(t=\"\",...e){jsonEditXhrRequestFn(true,t,...e)}", "dependencies": [ "json-edit-xhr-request.fn" ], "requiresTrust": true }, { "name": "json-edit-fetch-response.fn", "aliases": [], "body": "function jsonEditFetchResponseFn(e,t=\"\"){const r=safeSelf();const o=r.makeLogPrefix(`${e?\"trusted-\":\"\"}json-edit-fetch-response`,t);const n=JSONPath.create(t);if(n.valid===false||n.value!==void 0&&e!==true)return r.uboLog(o,\"Bad JSONPath query\");const s=r.getExtraArgs(Array.from(arguments),2);const c=parsePropertiesToMatchFn(s.propsToMatch,\"url\");proxyApplyFn(\"fetch\",(function(e){const t=e.callArgs;const s=e.reflect();if(c.size!==0){const e=collateFetchArgumentsFn(...t);const n=matchObjectPropertiesFn(c,e);if(n===void 0)return s;if(r.logLevel>1)r.uboLog(o,`Matched \"propsToMatch\":\\n\\t${n.join(\"\\n\\t\")}`)}return s.then((e=>{const t=e.clone();return t.json().then((t=>{if(typeof t!==\"object\")return e;const s=n.apply(t);if(s===void 0)return e;r.uboLog(o,\"Edited\");const c=Response.json(s,{status:e.status,statusText:e.statusText,headers:e.headers});Object.defineProperties(c,{ok:{value:e.ok},redirected:{value:e.redirected},type:{value:e.type},url:{value:e.url}});return c})).catch((t=>{r.uboErr(o,\"Error:\",t);return e}))})).catch((e=>{r.uboErr(o,\"Error:\",e);return s}))}))}", "dependencies": [ "collate-fetch-arguments.fn", "jsonpath.fn", "match-object-properties.fn", "parse-properties-to-match.fn", "proxy-apply.fn", "safe-self.fn" ] }, { "name": "json-edit-fetch-response.js", "aliases": [], "body": "function jsonEditFetchResponse(e=\"\",...n){jsonEditFetchResponseFn(false,e,...n)}", "dependencies": [ "json-edit-fetch-response.fn" ] }, { "name": "trusted-json-edit-fetch-response.js", "aliases": [], "body": "function trustedJsonEditFetchResponse(e=\"\",...t){jsonEditFetchResponseFn(true,e,...t)}", "dependencies": [ "json-edit-fetch-response.fn" ], "requiresTrust": true }, { "name": "json-edit-fetch-request.fn", "aliases": [], "body": "function jsonEditFetchRequestFn(t,e=\"\"){const o=safeSelf();const r=o.makeLogPrefix(`${t?\"trusted-\":\"\"}json-edit-fetch-request`,e);const n=JSONPath.create(e);if(n.valid===false||n.value!==void 0&&t!==true)return o.uboLog(r,\"Bad JSONPath query\");const s=o.getExtraArgs(Array.from(arguments),2);const c=parsePropertiesToMatchFn(s.propsToMatch,\"url\");const i=t=>{if(typeof t!==\"string\")return;let e;try{e=o.JSON_parse(t)}catch{}if(e instanceof Object===false)return;const r=n.apply(e);if(r===void 0)return;return o.JSON_stringify(r)};const f=t=>{const e=t.callArgs;const[n,s]=e;const f=s?.body;if(Boolean(f)===false)return t.reflect();const a=i(f);if(a===void 0||a===f)return t.reflect();if(c.size!==0){const e=collateFetchArgumentsFn(n,s);const i=matchObjectPropertiesFn(c,e);if(i===void 0)return t.reflect();if(o.logLevel>1)o.uboLog(r,`Matched \"propsToMatch\":\\n\\t${i.join(\"\\n\\t\")}`)}o.uboLog(r,\"Edited\");if(o.logLevel>1)o.uboLog(r,`After edit:\\n${a}`);s.body=a;return t.reflect()};proxyApplyFn(\"fetch\",f);proxyApplyFn(\"Request\",f)}", "dependencies": [ "collate-fetch-arguments.fn", "jsonpath.fn", "match-object-properties.fn", "parse-properties-to-match.fn", "proxy-apply.fn", "safe-self.fn" ] }, { "name": "json-edit-fetch-request.js", "aliases": [], "body": "function jsonEditFetchRequest(e=\"\",...t){jsonEditFetchRequestFn(false,e,...t)}", "dependencies": [ "json-edit-fetch-request.fn" ] }, { "name": "trusted-json-edit-fetch-request.js", "aliases": [], "body": "function trustedJsonEditFetchRequest(t=\"\",...e){jsonEditFetchRequestFn(true,t,...e)}", "dependencies": [ "json-edit-fetch-request.fn" ], "requiresTrust": true }, { "name": "jsonl-edit.fn", "aliases": [], "body": "function jsonlEditFn(n,t=\"\"){const o=safeSelf();const s=/\\r?\\n/.exec(t)?.[0]||\"\\n\";const c=t.split(\"\\n\");const e=[];for(const t of c){let s;try{s=o.JSON_parse(t)}catch{}if(typeof s!==\"object\"||s===null){e.push(t);continue}const c=n.apply(s);if(c===void 0){e.push(t);continue}const i=o.JSON_stringify(c);e.push(i)}return e.join(s)}", "dependencies": [ "jsonpath.fn", "safe-self.fn" ] }, { "name": "jsonl-edit-xhr-response.fn", "aliases": [], "body": "function jsonlEditXhrResponseFn(e,s=\"\"){const t=safeSelf();const o=t.makeLogPrefix(`${e?\"trusted-\":\"\"}jsonl-edit-xhr-response`,s);const n=new WeakMap;const r=JSONPath.create(s);if(r.valid===false||r.value!==void 0&&e!==true)return t.uboLog(o,\"Bad JSONPath query\");const p=t.getExtraArgs(Array.from(arguments),2);const i=parsePropertiesToMatchFn(p.propsToMatch,\"url\");self.XMLHttpRequest=class extends self.XMLHttpRequest{open(e,s,...r){const p={method:e,url:s};const a=i.size===0||matchObjectPropertiesFn(i,p);if(a){if(t.logLevel>1&&Array.isArray(a))t.uboLog(o,`Matched \"propsToMatch\":\\n\\t${a.join(\"\\n\\t\")}`);n.set(this,p)}return super.open(e,s,...r)}get response(){const e=super.response;const s=n.get(this);if(s===void 0)return e;const p=typeof e===\"string\"?e.length:void 0;if(s.lastResponseLength!==p){s.response=void 0;s.lastResponseLength=p}if(s.response!==void 0)return s.response;if(typeof e!==\"string\")return s.response=e;const i=jsonlEditFn(r,e);if(i!==e)t.uboLog(o,\"Pruned\");return s.response=i}get responseText(){const e=this.response;return typeof e!==\"string\"?super.responseText:e}}}", "dependencies": [ "jsonpath.fn", "jsonl-edit.fn", "match-object-properties.fn", "parse-properties-to-match.fn", "safe-self.fn" ] }, { "name": "jsonl-edit-xhr-response.js", "aliases": [], "body": "function jsonlEditXhrResponse(n=\"\",...s){jsonlEditXhrResponseFn(false,n,...s)}", "dependencies": [ "jsonl-edit-xhr-response.fn" ] }, { "name": "trusted-jsonl-edit-xhr-response.js", "aliases": [], "body": "function trustedJsonlEditXhrResponse(n=\"\",...s){jsonlEditXhrResponseFn(true,n,...s)}", "dependencies": [ "jsonl-edit-xhr-response.fn" ], "requiresTrust": true }, { "name": "jsonl-edit-fetch-response.fn", "aliases": [], "body": "function jsonlEditFetchResponseFn(e,t=\"\"){const r=safeSelf();const o=r.makeLogPrefix(`${e?\"trusted-\":\"\"}jsonl-edit-fetch-response`,t);const n=JSONPath.create(t);if(n.valid===false||n.value!==void 0&&e!==true)return r.uboLog(o,\"Bad JSONPath query\");const s=r.getExtraArgs(Array.from(arguments),2);const c=parsePropertiesToMatchFn(s.propsToMatch,\"url\");const u=t===\"\";proxyApplyFn(\"fetch\",(function(e){const t=e.callArgs;const s=e.reflect();if(c.size!==0){const e=collateFetchArgumentsFn(...t);const n=matchObjectPropertiesFn(c,e);if(n===void 0)return s;if(r.logLevel>1)r.uboLog(o,`Matched \"propsToMatch\":\\n\\t${n.join(\"\\n\\t\")}`)}return s.then((e=>{const t=e.clone();return t.text().then((t=>{if(typeof t!==\"string\")return t;if(u){r.uboLog(o,t);return e}const s=jsonlEditFn(n,t);if(s===t)return e;r.uboLog(o,\"Pruned\");const c=new Response(s,{status:e.status,statusText:e.statusText,headers:e.headers});Object.defineProperties(c,{ok:{value:e.ok},redirected:{value:e.redirected},type:{value:e.type},url:{value:e.url}});return c})).catch((t=>{r.uboErr(o,\"Error:\",t);return e}))})).catch((e=>{r.uboErr(o,\"Error:\",e);return s}))}))}", "dependencies": [ "collate-fetch-arguments.fn", "jsonpath.fn", "jsonl-edit.fn", "match-object-properties.fn", "parse-properties-to-match.fn", "proxy-apply.fn", "safe-self.fn" ] }, { "name": "jsonl-edit-fetch-response.js", "aliases": [], "body": "function jsonlEditFetchResponse(e=\"\",...n){jsonlEditFetchResponseFn(false,e,...n)}", "dependencies": [ "jsonl-edit-fetch-response.fn" ] }, { "name": "trusted-jsonl-edit-fetch-response.js", "aliases": [], "body": "function trustedJsonlEditFetchResponse(e=\"\",...t){jsonlEditFetchResponseFn(true,e,...t)}", "dependencies": [ "jsonl-edit-fetch-response.fn" ], "requiresTrust": true }, { "name": "matches-stack-trace.fn", "aliases": [], "body": "function matchesStackTraceFn(t,e=\"\"){const n=safeSelf();const c=getExceptionTokenFn();const i=new n.Error(c);const s=new URL(self.location.href);s.hash=\"\";const l=/(.*?@)?(\\S+)(:\\d+):\\d+\\)?$/;const o=[];for(let t of n.String_split.call(i.stack,/[\\n\\r]+/)){if(t.includes(c))continue;t=t.trim();const e=n.RegExp_exec.call(l,t);if(e===null)continue;let i=e[2];if(i.startsWith(\"(\"))i=i.slice(1);if(i===s.href)i=\"inlineScript\";else if(i.startsWith(\"\"))i=\"injectedScript\";let r=e[1]!==void 0?e[1].slice(0,-1):t.slice(0,e.index).trim();if(r.startsWith(\"at\"))r=r.slice(2).trim();let a=e[3];o.push(\" \"+`${r} ${i}${a}:1`.trim())}o[0]=`stackDepth:${o.length-1}`;const r=o.join(\"\\t\");const a=t.matchAll!==true&&n.testPattern(t,r);if(e===\"all\"||e===\"match\"&&a||e===\"nomatch\"&&!a)n.uboLog(r.replace(/\\t/g,\"\\n\"));return a}", "dependencies": [ "get-exception-token.fn", "safe-self.fn" ] }, { "name": "abort-on-stack-trace.js", "aliases": [ "aost.js" ], "body": "function abortOnStackTrace(e=\"\",t=\"\"){if(typeof e!==\"string\")return;const n=safeSelf();const r=n.initPattern(t,{canNegate:true});const c=n.getExtraArgs(Array.from(arguments),2);if(t===\"\")c.log=\"all\";const o=function(e,t){const c=t.indexOf(\".\");if(c===-1){let c=e[t];Object.defineProperty(e,t,{get:function(){const e=n.logLevel>1?\"all\":\"match\";if(matchesStackTraceFn(r,e))throw new ReferenceError(getExceptionTokenFn());return c},set:function(e){const t=n.logLevel>1?\"all\":\"match\";if(matchesStackTraceFn(r,t))throw new ReferenceError(getExceptionTokenFn());c=e}});return}const i=t.slice(0,c);let f=e[i];t=t.slice(c+1);if(f){o(f,t);return}const s=Object.getOwnPropertyDescriptor(e,i);if(s&&s.set!==void 0)return;Object.defineProperty(e,i,{get:function(){return f},set:function(e){f=e;if(e instanceof Object)o(e,t)}})};const i=window;o(i,e)}", "dependencies": [ "get-exception-token.fn", "matches-stack-trace.fn", "safe-self.fn" ] }, { "name": "object-find-owner.fn", "aliases": [], "body": "function objectFindOwnerFn(e,t,n=false){const f=safeSelf();let r=e;let s=t;for(;;){if(typeof r!==\"object\"||r===null)return false;const e=s.indexOf(\".\");if(e===-1){if(n===false)return f.Object_hasOwn(r,s);let e=false;if(s===\"*\")for(const t in r){if(f.Object_hasOwn(r,t)===false)continue;delete r[t];e=true}else if(f.Object_hasOwn(r,s)){delete r[s];e=true}return e}const t=s.slice(0,e);const i=s.slice(e+1);let c=false;if(t===\"[-]\"&&Array.isArray(r)){let e=r.length;while(e--){if(objectFindOwnerFn(r[e],i)===false)continue;r.splice(e,1);c=true}return c}if(t===\"{-}\"&&r instanceof Object){for(const e of Object.keys(r)){if(objectFindOwnerFn(r[e],i)===false)continue;delete r[e];c=true}return c}if(t===\"[]\"&&Array.isArray(r)||t===\"{}\"&&r instanceof Object||t===\"*\"&&r instanceof Object){for(const e of Object.keys(r)){if(objectFindOwnerFn(r[e],i,n)===false)continue;c=true}return c}if(f.Object_hasOwn(r,t)===false)return false;r=r[t];s=s.slice(e+1)}}", "dependencies": [ "safe-self.fn" ] }, { "name": "object-prune.fn", "aliases": [], "body": "function objectPruneFn(t,e,n,r={matchAll:true},c={}){if(typeof e!==\"string\")return;const o=safeSelf();const s=e!==\"\"?o.String_split.call(e,/ +/):[];const f=s.length!==0&&n!==\"\"?o.String_split.call(n,/ +/):[];if(r.matchAll!==true)if(matchesStackTraceFn(r,c.logstack)===false)return;if(objectPruneFn.mustProcess===void 0)objectPruneFn.mustProcess=(t,e)=>{for(const n of e)if(objectFindOwnerFn(t,n)===false)return false;return true};if(s.length===0)return;let i=\"nomatch\";if(objectPruneFn.mustProcess(t,f))for(const e of s)if(objectFindOwnerFn(t,e,true))i=\"match\";if(i===\"match\")return t}", "dependencies": [ "matches-stack-trace.fn", "object-find-owner.fn", "safe-self.fn" ] }, { "name": "trusted-prune-inbound-object.js", "aliases": [], "body": "function trustedPruneInboundObject(t=\"\",n=\"\",e=\"\",r=\"\"){if(t===\"\")return;let i=globalThis;let c=t;for(;;){const t=c.indexOf(\".\");if(t===-1)break;i=i[c.slice(0,t)];if(i instanceof Object===false)return;c=c.slice(t+1)}if(typeof i[c]!==\"function\")return;const f=parseInt(n);if(isNaN(f))return;if(f<1)return;const o=safeSelf();const s=o.getExtraArgs(Array.from(arguments),4);const a=[];if(e!==\"\")a.push(...o.String_split.call(e,/ +/));if(r!==\"\")a.push(...o.String_split.call(r,/ +/));const l=o.initPattern(s.stackToMatch||\"\",{canNegate:true});const u=t=>{for(const n of a)if(objectFindOwnerFn(t,n)===false)return false;return true};i[c]=new Proxy(i[c],{apply:function(t,n,i){const c=f<=i.length?i[f-1]:void 0;if(c instanceof Object&&u(c)){let t=c;if(s.dontOverwrite)try{t=o.JSON_parse(o.JSON_stringify(c))}catch{t=void 0}if(t!==void 0){const n=objectPruneFn(t,e,r,l,s);i[f-1]=n||t}}return Reflect.apply(t,n,i)}})}", "dependencies": [ "object-find-owner.fn", "object-prune.fn", "safe-self.fn" ], "requiresTrust": true }, { "name": "trusted-prune-outbound-object.js", "aliases": [], "body": "function trustedPruneOutboundObject(t=\"\",n=\"\",e=\"\"){if(t===\"\")return;const r=safeSelf();const c=r.getExtraArgs(Array.from(arguments),3);proxyApplyFn(t,(function(t){const r=t.reflect();if(r instanceof Object===false)return r;const o=objectPruneFn(r,n,e,{matchAll:true},c);return o||r}))}", "dependencies": [ "object-prune.fn", "proxy-apply.fn", "safe-self.fn" ], "requiresTrust": true }, { "name": "json-prune.js", "aliases": [], "body": "function jsonPrune(n=\"\",r=\"\",e=\"\"){const o=safeSelf();const t=o.makeLogPrefix(\"json-prune\",n,r,e);const u=o.initPattern(e,{canNegate:true});const i=o.getExtraArgs(Array.from(arguments),3);proxyApplyFn(\"JSON.parse\",(function(e){const f=e.reflect();if(n===\"\")o.uboLog(t,o.JSON_stringify(f,null,2));const s=objectPruneFn(f,n,r,u,i);if(s===void 0)return f;o.uboLog(t,\"Pruned\");if(o.logLevel>1)o.uboLog(t,`After pruning:\\n${o.JSON_stringify(s,null,2)}`);return s}))}", "dependencies": [ "object-prune.fn", "proxy-apply.fn", "safe-self.fn" ] }, { "name": "json-prune-fetch-response.js", "aliases": [], "body": "function jsonPruneFetchResponse(e=\"\",t=\"\"){const r=safeSelf();const o=r.makeLogPrefix(\"json-prune-fetch-response\",e,t);const n=r.getExtraArgs(Array.from(arguments),2);const s=parsePropertiesToMatchFn(n.propsToMatch,\"url\");const c=r.initPattern(n.stackToMatch||\"\",{canNegate:true});const u=e===\"\";const a=function(a,f,i){const l=Reflect.apply(a,f,i);if(s.size!==0){const e=collateFetchArgumentsFn(...i);const t=matchObjectPropertiesFn(s,e);if(t===void 0)return l;if(r.logLevel>1)r.uboLog(o,`Matched \"propsToMatch\":\\n\\t${t.join(\"\\n\\t\")}`)}return l.then((s=>{const a=s.clone();return a.json().then((a=>{if(typeof a!==\"object\")return s;if(u){r.uboLog(o,r.JSON_stringify(a,null,2));return s}const f=objectPruneFn(a,e,t,c,n);if(typeof f!==\"object\")return s;r.uboLog(o,\"Pruned\");const i=Response.json(f,{status:s.status,statusText:s.statusText,headers:s.headers});Object.defineProperties(i,{ok:{value:s.ok},redirected:{value:s.redirected},type:{value:s.type},url:{value:s.url}});return i})).catch((e=>{r.uboErr(o,\"Error:\",e);return s}))})).catch((e=>{r.uboErr(o,\"Error:\",e);return l}))};self.fetch=new Proxy(self.fetch,{apply:a})}", "dependencies": [ "collate-fetch-arguments.fn", "match-object-properties.fn", "object-prune.fn", "parse-properties-to-match.fn", "safe-self.fn" ] }, { "name": "json-prune-xhr-response.js", "aliases": [], "body": "function jsonPruneXhrResponse(e=\"\",t=\"\"){const s=safeSelf();const o=s.makeLogPrefix(\"json-prune-xhr-response\",e,t);const n=new WeakMap;const r=s.getExtraArgs(Array.from(arguments),2);const p=parsePropertiesToMatchFn(r.propsToMatch,\"url\");const c=s.initPattern(r.stackToMatch||\"\",{canNegate:true});self.XMLHttpRequest=class extends self.XMLHttpRequest{open(e,t,...c){const i={method:e,url:t};let a=\"match\";if(p.size!==0)if(matchObjectPropertiesFn(p,i)===void 0)a=\"nomatch\";if(a===\"match\"){if(s.logLevel>1)s.uboLog(o,`Matched optional \"propsToMatch\", \"${r.propsToMatch}\"`);n.set(this,i)}return super.open(e,t,...c)}get response(){const p=super.response;const i=n.get(this);if(i===void 0)return p;const a=typeof p===\"string\"?p.length:void 0;if(i.lastResponseLength!==a){i.response=void 0;i.lastResponseLength=a}if(i.response!==void 0)return i.response;let f;if(typeof p===\"object\")f=p;else if(typeof p===\"string\")try{f=s.JSON_parse(p)}catch{}if(typeof f!==\"object\")return i.response=p;const u=objectPruneFn(f,e,t,c,r);let h;if(typeof u===\"object\"){h=typeof p===\"string\"?s.JSON_stringify(u):u;s.uboLog(o,\"Pruned\")}else h=p;return i.response=h}get responseText(){const e=this.response;return typeof e!==\"string\"?super.responseText:e}}}", "dependencies": [ "match-object-properties.fn", "object-prune.fn", "parse-properties-to-match.fn", "safe-self.fn" ] }, { "name": "evaldata-prune.js", "aliases": [], "body": "function evaldataPrune(n=\"\",e=\"\"){proxyApplyFn(\"eval\",(function(t){const r=t.reflect();if(typeof r!==\"object\")return r;if(r===null)return null;const u=objectPruneFn(r,n,e);return u||r}))}", "dependencies": [ "object-prune.fn", "proxy-apply.fn" ] }, { "name": "noeval-if.js", "aliases": [ "prevent-eval-if.js" ], "body": "function noEvalIf(e=\"\"){if(typeof e!==\"string\")return;const n=safeSelf();const t=n.makeLogPrefix(\"noeval-if\",e);const o=n.patternToRegex(e);proxyApplyFn(\"eval\",(function(r){const{callArgs:f}=r;const l=String(f[0]);if(e!==\"\"&&o.test(l)){n.uboLog(t,\"Prevented:\\n\",l);return}if(e===\"\"||n.logLevel>1)n.uboLog(t,\"Not prevented:\\n\",l);return r.reflect()}))}", "dependencies": [ "proxy-apply.fn", "safe-self.fn" ] }, { "name": "prevent-addEventListener.js", "aliases": [ "addEventListener-defuser.js", "aeld.js" ], "body": "function preventAddEventListener(e=\"\",t=\"\"){const n=safeSelf();const r=n.getExtraArgs(Array.from(arguments),2);const o=n.makeLogPrefix(\"prevent-addEventListener\",e,t);const i=n.patternToRegex(e,void 0,true);const s=n.patternToRegex(t);const c=r.elements||void 0;const u=e=>{if(c===\"window\")return e===window;if(c===\"document\")return e===document;if(e&&e.matches&&e.matches(c))return true;const t=Array.from(document.querySelectorAll(c));return t.includes(e)};const a=e=>{if(e instanceof Window)return\"window\";if(e instanceof Document)return\"document\";if(e instanceof Element===false)return\"?\";const t=[];const n=String(e.id);if(n!==\"\")t.push(`#${CSS.escape(n)}`);for(let n=0;n{const o=n.RegExp_test.call(i,t);const a=n.RegExp_test.call(s,r);const f=o||a;const d=o&&a;if(n.logLevel>1&&f)debugger;if(d&&c!==void 0)if(u(e)===false)return false;return d};const d=function(r){const{callArgs:i,thisArg:s}=r;let c,u;try{c=String(i[0]);if(typeof i[1]===\"function\")u=String(n.Function_toString(i[1]));else if(typeof i[1]===\"object\"&&i[1]!==null){if(typeof i[1].handleEvent===\"function\")u=String(n.Function_toString(i[1].handleEvent))}else u=String(i[1])}catch{}if(e===\"\"&&t===\"\")n.uboLog(o,`Called: ${c}\\n${u}\\n${a(s)}`);else if(f(s,c,u))return n.uboLog(o,`Prevented: ${c}\\n${u}\\n${a(s)}`);return r.reflect()};runAt((()=>{proxyApplyFn(\"EventTarget.prototype.addEventListener\",d);if(r.protect){const{addEventListener:e}=EventTarget.prototype;Object.defineProperty(EventTarget.prototype,\"addEventListener\",{set(){},get(){return e}})}proxyApplyFn(\"document.addEventListener\",d);if(r.protect){const{addEventListener:e}=document;Object.defineProperty(document,\"addEventListener\",{set(){},get(){return e}})}}),r.runAt)}", "dependencies": [ "proxy-apply.fn", "run-at.fn", "safe-self.fn" ] }, { "name": "prevent-dialog.js", "aliases": [], "body": "function preventDialog(e=\"\"){const o=safeSelf();const t=o.makeLogPrefix(\"prevent-dialog\",e);const n=()=>{i=void 0;const n=document.querySelectorAll(`dialog${e}`);for(const e of n){if(typeof e.close!==\"function\")continue;if(e.open===false)continue;e.close();o.uboLog(t,\"Closed\")}};let i;const r=new MutationObserver((()=>{if(i!==void 0)return;i=requestAnimationFrame(n)}));r.observe(document,{attributes:true,childList:true,subtree:true})}", "dependencies": [ "safe-self.fn" ] }, { "name": "prevent-fetch.fn", "aliases": [], "body": "function preventFetchFn(e=false,t=\"\",n=\"\",r=\"\"){const s=safeSelf();const o=self.setTimeout;const c=`${e?\"trusted-\":\"\"}prevent-fetch`;const a=s.makeLogPrefix(c,t,n,r);const i=s.getExtraArgs(Array.from(arguments),4);const l=parsePropertiesToMatchFn(t,\"url\");const u={ok:[false,true],status:[403],statusText:[\"\",\"Not Found\"],type:[\"basic\",\"cors\",\"default\",\"error\",\"opaque\"]};const f={statusText:{value:\"OK\"}};const h={};if(/^\\{.*\\}$/.test(r))try{Object.entries(JSON.parse(r)).forEach((([t,n])=>{if(t===\"headers\"&&e){Object.assign(h,n);return}if(u[t]===void 0)return;if(u[t].includes(n)===false)return;f[t]={value:n}}))}catch{}else if(r!==\"\")if(u.type.includes(r))f.type={value:r};proxyApplyFn(\"fetch\",(function r(c){const{callArgs:u}=c;const p=collateFetchArgumentsFn(...u);if(s.logLevel>1||t===\"\"&&n===\"\"){const e=Array.from(Object.entries(p)).map((e=>`${e[0]}:${e[1]}`));s.uboLog(a,`Called: ${e.join(\"\\n\")}`)}if(t===\"\"&&n===\"\")return c.reflect();const g=matchObjectPropertiesFn(l,p);if(g===void 0||g.length===0)return c.reflect();return Promise.resolve(generateContentFn(e,n)).then((e=>{s.uboLog(a,`Prevented with response \"${e}\"`);const t=Object.assign({},h);if(t[\"content-length\"]===void 0)t[\"content-length\"]=e.length;const n=new Response(e,{headers:t});const r=Object.assign({url:{value:p.url}},f);s.Object_defineProperties(n,r);if(i.throttle)return new Promise((e=>{o((()=>{e(n)}),i.throttle)}));return n}))}))}", "dependencies": [ "collate-fetch-arguments.fn", "generate-content.fn", "match-object-properties.fn", "parse-properties-to-match.fn", "proxy-apply.fn", "safe-self.fn" ] }, { "name": "prevent-fetch.js", "aliases": [ "no-fetch-if.js" ], "body": "function preventFetch(...e){preventFetchFn(false,...e)}", "dependencies": [ "prevent-fetch.fn" ] }, { "name": "trusted-prevent-fetch.js", "aliases": [], "body": "function trustedPreventFetch(...e){preventFetchFn(true,...e)}", "dependencies": [ "prevent-fetch.fn" ], "requiresTrust": true }, { "name": "prevent-innerHTML.js", "aliases": [], "body": "function preventInnerHTML(e=\"\",t=\"\"){const n=safeSelf();const r=n.makeLogPrefix(\"prevent-innerHTML\",e,t);const i=n.initPattern(t,{canNegate:true});const o=n.Object_getOwnPropertyDescriptor(Element.prototype,\"innerHTML\");if(o===void 0)return;const s=(t,r)=>{if(e!==\"\"){if(typeof t.matches!==\"function\")return false;if(t.matches(e)===false)return false}return n.testPattern(i,`${r}`)};Object.defineProperty(Element.prototype,\"innerHTML\",{get:function(){return o.get?o.get.call(this):o.value},set:function(e){if(s(this,e))n.uboLog(r,\"Prevented\");else if(o.set)o.set.call(this,e);if(n.logLevel>1)n.uboLog(r,`Assigned:\\n${e}`);o.value=e}})}", "dependencies": [ "safe-self.fn" ] }, { "name": "range-parser.fn", "aliases": [], "body": "class RangeParser{constructor(i){this.not=i.charAt(0)===\"!\";if(this.not)i=i.slice(1);if(i===\"\")return;const t=i.indexOf(\"-\");if(t!==0)this.min=this.max=parseInt(i,10)||0;if(t!==-1)this.max=parseInt(i.slice(t+1),10)||Number.MAX_SAFE_INTEGER}unbound(){return this.min===void 0&&this.max===void 0}test(i){const t=Math.min(Math.max(Number(i)||0,0),Number.MAX_SAFE_INTEGER);if(this.min===this.max)return(this.min===void 0||t===this.min)!==this.not;if(this.min===void 0)return t<=this.max!==this.not;if(this.max===void 0)return t>=this.min!==this.not;return(t>=this.min&&t<=this.max)!==this.not}}", "dependencies": [] }, { "name": "prevent-setTimeout.js", "aliases": [ "no-setTimeout-if.js", "nostif.js", "setTimeout-defuser.js" ], "body": "function preventSetTimeout(n=\"\",t=\"\"){const e=safeSelf();const o=e.makeLogPrefix(\"prevent-setTimeout\",n,t);const c=n.charAt(0)===\"!\";const r=e.patternToRegex(c?n.slice(1):n);const s=new RangeParser(t);proxyApplyFn(\"setTimeout\",(function(t){const{callArgs:i}=t;const u=i[0]instanceof Function?e.String(e.Function_toString(i[0])):e.String(i[0]);const f=i[1];if(n===\"\"&&s.unbound()){e.uboLog(o,`Called:\\n${u}\\n${f}`);return t.reflect()}if(r.test(u)!==c&&s.test(f)){i[0]=function(){};e.uboLog(o,`Prevented:\\n${u}\\n${f}`)}return t.reflect()}))}", "dependencies": [ "proxy-apply.fn", "range-parser.fn", "safe-self.fn" ] }, { "name": "prevent-setInterval.js", "aliases": [ "no-setInterval-if.js", "nosiif.js", "setInterval-defuser.js" ], "body": "function preventSetInterval(n=\"\",t=\"\"){const e=safeSelf();const o=e.makeLogPrefix(\"prevent-setInterval\",n,t);const r=n.charAt(0)===\"!\";const c=e.patternToRegex(r?n.slice(1):n);const s=new RangeParser(t);proxyApplyFn(\"setInterval\",(function(t){const{callArgs:i}=t;const a=i[0]instanceof Function?e.String(e.Function_toString(i[0])):e.String(i[0]);const l=i[1];if(n===\"\"&&s.unbound()){e.uboLog(o,`Called:\\n${a}\\n${l}`);return t.reflect()}if(c.test(a)!==r&&s.test(l)){i[0]=function(){};e.uboLog(o,`Prevented:\\n${a}\\n${l}`)}return t.reflect()}))}", "dependencies": [ "proxy-apply.fn", "range-parser.fn", "safe-self.fn" ] }, { "name": "prevent-requestAnimationFrame.js", "aliases": [ "no-requestAnimationFrame-if.js", "norafif.js" ], "body": "function preventRequestAnimationFrame(n=\"\"){const e=safeSelf();const t=e.makeLogPrefix(\"prevent-requestAnimationFrame\",n);const o=n.charAt(0)===\"!\";const i=e.patternToRegex(o?n.slice(1):n);proxyApplyFn(\"requestAnimationFrame\",(function(r){const{callArgs:c}=r;const s=c[0]instanceof Function?e.String(e.Function_toString(c[0])):e.String(c[0]);if(n===\"\")e.uboLog(t,`Called:\\n${s}`);else if(i.test(s)!==o){c[0]=function(){};e.uboLog(t,`Prevented:\\n${s}`)}return r.reflect()}))}", "dependencies": [ "proxy-apply.fn", "safe-self.fn" ] }, { "name": "prevent-xhr.fn", "aliases": [], "body": "function preventXhrFn(e=false,t=\"\",r=\"\"){if(typeof t!==\"string\")return;const n=safeSelf();const s=e?\"trusted-prevent-xhr\":\"prevent-xhr\";const o=n.makeLogPrefix(s,t,r);const a=new WeakMap;const p=parsePropertiesToMatchFn(t,\"url\");const l=scriptletGlobals.warOrigin;const c=(e,t)=>{try{e.dispatchEvent(new Event(t))}catch{}};proxyApplyFn(\"XMLHttpRequest.prototype.open\",(function(e){const{thisArg:s,callArgs:c}=e;a.delete(s);const[u,i,...h]=c;if(l!==void 0&&i.startsWith(l))return e.reflect();const d={method:u,url:i};if(t===\"\"&&r===\"\"){n.uboLog(o,`Called: ${n.JSON_stringify(d,null,2)}`);return e.reflect()}if(matchObjectPropertiesFn(p,d)){const e=Object.assign(d,{xhr:s,defer:h.length===0||!!h[0],directive:r,headers:{date:\"\",\"content-type\":\"\",\"content-length\":\"\"},url:d.url,props:{response:{value:\"\"},responseText:{value:\"\"},responseXML:{value:null}}});a.set(s,e)}return e.reflect()}));proxyApplyFn(\"XMLHttpRequest.prototype.send\",(function(t){const{thisArg:s}=t;const p=a.get(s);if(p===void 0)return t.reflect();p.headers[\"date\"]=(new Date).toUTCString();let l=\"\";switch(s.responseType){case\"arraybuffer\":p.props.response.value=new ArrayBuffer(0);p.headers[\"content-type\"]=\"application/octet-stream\";break;case\"blob\":p.props.response.value=new Blob([]);p.headers[\"content-type\"]=\"application/octet-stream\";break;case\"document\":{const e=new DOMParser;const t=e.parseFromString(\"\",\"text/html\");p.props.response.value=t;p.props.responseXML.value=t;p.headers[\"content-type\"]=\"text/html\";break}case\"json\":p.props.response.value={};p.props.responseText.value=\"{}\";p.headers[\"content-type\"]=\"application/json\";break;default:if(r===\"\")break;l=generateContentFn(e,p.directive);if(l instanceof Promise)l=l.then((e=>{p.props.response.value=e;p.props.responseText.value=e}));else{p.props.response.value=l;p.props.responseText.value=l}p.headers[\"content-type\"]=\"text/plain\";break}if(p.defer===false){p.headers[\"content-length\"]=`${p.props.response.value}`.length;Object.defineProperties(p.xhr,{readyState:{value:4},responseURL:{value:p.url},status:{value:200},statusText:{value:\"OK\"}});Object.defineProperties(p.xhr,p.props);return}Promise.resolve(l).then((()=>p)).then((e=>{Object.defineProperties(e.xhr,{readyState:{value:1,configurable:true},responseURL:{value:p.url}});c(e.xhr,\"readystatechange\");return e})).then((e=>{p.headers[\"content-length\"]=`${e.props.response.value}`.length;Object.defineProperties(e.xhr,{readyState:{value:2,configurable:true},status:{value:200},statusText:{value:\"OK\"}});c(e.xhr,\"readystatechange\");return e})).then((e=>{Object.defineProperties(e.xhr,{readyState:{value:3,configurable:true}});Object.defineProperties(e.xhr,e.props);c(e.xhr,\"readystatechange\");return e})).then((e=>{Object.defineProperties(e.xhr,{readyState:{value:4}});c(e.xhr,\"readystatechange\");c(e.xhr,\"load\");c(e.xhr,\"loadend\");n.uboLog(o,`Prevented with response:\\n${e.xhr.response}`)}))}));proxyApplyFn(\"XMLHttpRequest.prototype.getResponseHeader\",(function(e){const{thisArg:t}=e;const r=a.get(t);if(r===void 0||t.readyState32767)return}else if(e){if(t.startsWith(\"json:\"))try{n=r.JSON_parse(t.slice(5))}catch{return}else if(t.startsWith(\"{\")&&t.endsWith(\"}\"))try{n=r.JSON_parse(t).value}catch{return}}else return;if(s.as!==void 0)if(s.as===\"function\")return()=>n;else if(s.as===\"callback\")return()=>()=>n;else if(s.as===\"resolved\")return Promise.resolve(n);else if(s.as===\"rejected\")return Promise.reject(n);return n}", "dependencies": [ "safe-self.fn" ] }, { "name": "set-constant.fn", "aliases": [], "body": "function setConstantFn(t=false,e=\"\",n=\"\"){if(e===\"\")return;const r=safeSelf();const i=r.makeLogPrefix(\"set-constant\",e,n);const o=r.getExtraArgs(Array.from(arguments),3);function u(e,n){const u=(()=>{const t=e.lastIndexOf(\".\");if(t===-1)return e;return e.slice(t+1)})();const f=t=>{r.Object_defineProperty(t,\"name\",{value:u});return new Proxy(t,{defineProperty(t,e){if(e!==\"toString\")return Reflect.defineProperty(...arguments);return true},deleteProperty(t,e){if(e!==\"toString\")return Reflect.deleteProperty(...arguments);return true},get(t,e){if(e===\"toString\")return function(){return`function ${u}() { [native code] }`}.bind(null);return Reflect.get(...arguments)}})};if(u===\"\")return;const c=document.currentScript;let s=validateConstantFn(t,n,o);if(n===\"noopFunc\"||n===\"trueFunc\"||n===\"falseFunc\")s=f(s);let l=false;const a=function(e){if(t)return false;if(l)return true;l=e!==void 0&&e!==null&&s!==void 0&&s!==null&&typeof e!==typeof s;if(l)r.uboLog(i,`Aborted because value set to ${e}`);return l};const d=function(t,e,n,o){if(o.init(n?t[e]:s)===false)return;const u=r.Object_getOwnPropertyDescriptor(t,e);let f,c;if(u instanceof r.Object){t[e]=s;if(u.get instanceof Function)f=u.get;if(u.set instanceof Function)c=u.set}try{r.Object_defineProperty(t,e,{configurable:n,get(){if(f!==void 0)f();return o.getter()},set(t){if(c!==void 0)c(t);o.setter(t)}});r.uboLog(i,\"Trap installed\")}catch(t){r.uboErr(i,t)}};const g=function(t,e){const n=e.indexOf(\".\");if(n===-1){d(t,e,false,{v:void 0,init:function(t){if(a(t))return false;this.v=t;return true},getter:function(){if(document.currentScript===c)return this.v;r.uboLog(i,\"Property read\");return s},setter:function(t){if(a(t)===false)return;s=t}});return}const o=e.slice(0,n);const u=t[o];e=e.slice(n+1);if(u instanceof r.Object||typeof u===\"object\"&&u!==null){g(u,e);return}d(t,o,true,{v:void 0,init:function(t){this.v=t;return true},getter:function(){return this.v},setter:function(t){this.v=t;if(t instanceof r.Object)g(t,e)}})};g(window,e)}runAt((()=>{u(e,n)}),o.runAt)}", "dependencies": [ "run-at.fn", "safe-self.fn", "validate-constant.fn" ] }, { "name": "set-constant.js", "aliases": [ "set.js" ], "body": "function setConstant(...n){setConstantFn(false,...n)}", "dependencies": [ "set-constant.fn" ] }, { "name": "trusted-set-constant.js", "aliases": [ "trusted-set.js" ], "body": "function trustedSetConstant(...t){setConstantFn(true,...t)}", "dependencies": [ "set-constant.fn" ], "requiresTrust": true }, { "name": "trusted-replace-argument.js", "aliases": [], "body": "function trustedReplaceArgument(t=\"\",e=\"\",r=\"\"){if(t===\"\")return;const n=safeSelf();const s=n.makeLogPrefix(\"trusted-replace-argument\",t,e,r);const i=parseInt(e,10)||0;const o=n.getExtraArgs(Array.from(arguments),3);let a;if(r.startsWith(\"repl:/\")){const t=parseReplaceFn(r.slice(5));if(t===void 0)return;a=t=>`${t}`.replace(a.re,a.replacement);Object.assign(a,t)}else if(r.startsWith(\"add:\")){const t=parseFloat(r.slice(4));if(isNaN(t))return;a=e=>Number(e)+t}else{const t=validateConstantFn(true,r,o);a=()=>t}const c=o.condition?n.patternToRegex(o.condition):/^/;const l=t=>{if(e===\"this\")return t.thisArg;const{callArgs:r}=t;const n=i>=0?i:r.length-i;if(n<0||n>=r.length)return;t.private={argpos:n};return r[n]};const f=(t,r)=>{if(e===\"this\"){if(r!==t.thisArg)t.thisArg=r}else if(t.private)t.callArgs[t.private.argpos]=r};proxyApplyFn(t,(function(t){if(e===\"\"){n.uboLog(s,`Arguments:\\n${t.callArgs.join(\"\\n\")}`);return t.reflect()}const r=l(t);if(o.condition!==void 0)if(n.RegExp_test.call(c,r)===false)return t.reflect();const i=a(r);if(i!==r){f(t,i);n.uboLog(s,`Replaced argument:\\nBefore: ${JSON.stringify(r)}\\nAfter: ${i}`)}return t.reflect()}))}", "dependencies": [ "parse-replace.fn", "proxy-apply.fn", "safe-self.fn", "validate-constant.fn" ], "requiresTrust": true }, { "name": "spoof-css.js", "aliases": [], "body": "function spoofCSS(e,...t){if(typeof e!==\"string\")return;if(e===\"\")return;const r=e=>e.replace(/-[a-z]/g,(e=>e.charAt(1).toUpperCase()));const n=new Map;const o=new Map;for(let e=0;e{const o=r(e);const i=n.has(o);const a=i?n.get(o):t;if(i)s.uboLog(c,`Spoofing ${e} to ${a}`);return a};const f=(e,t,r)=>{const n=e.bind(t);Object.defineProperty(n,\"name\",{value:r});Object.defineProperty(n,\"toString\",{value:()=>`function ${r}() { [native code] }`});return n};self.getComputedStyle=new Proxy(self.getComputedStyle,{apply:function(t,r,s){if(o.has(\"_debug\"))debugger;const c=Reflect.apply(t,r,s);const l=new WeakSet(document.querySelectorAll(e));if(l.has(s[0])===false)return c;const u=new Proxy(c,{get(e,t){if(typeof e[t]===\"function\"){if(t===\"getPropertyValue\")return f((function t(r){return a(r,e[r])}),e,\"getPropertyValue\");return f(e[t],e,t)}if(i.includes(t))return Reflect.get(e,t);return a(t,Reflect.get(e,t))},getOwnPropertyDescriptor(e,t){if(n.has(t))return{configurable:true,enumerable:true,value:n.get(t),writable:true};return Reflect.getOwnPropertyDescriptor(e,t)}});return u},get(e,t){if(t===\"toString\")return e.toString.bind(e);return Reflect.get(e,t)}});Element.prototype.getBoundingClientRect=new Proxy(Element.prototype.getBoundingClientRect,{apply:function(t,r,s){if(o.has(\"_debug\"))debugger;const c=Reflect.apply(t,r,s);const i=new WeakSet(document.querySelectorAll(e));if(i.has(r)===false)return c;let{x:a,y:f,height:l,width:u}=c;if(o.has(\"_rectx\"))a=parseFloat(o.get(\"_rectx\"));if(o.has(\"_recty\"))f=parseFloat(o.get(\"_recty\"));if(o.has(\"_rectw\"))u=parseFloat(o.get(\"_rectw\"));else if(n.has(\"width\"))u=parseFloat(n.get(\"width\"));if(o.has(\"_recth\"))l=parseFloat(o.get(\"_recth\"));else if(n.has(\"height\"))l=parseFloat(n.get(\"height\"));return new self.DOMRect(a,f,u,l)},get(e,t){if(t===\"toString\")return e.toString.bind(e);return Reflect.get(e,t)}})}", "dependencies": [ "safe-self.fn" ] }, { "name": "get-safe-cookie-values.fn", "aliases": [], "body": "function getSafeCookieValuesFn(){return[\"accept\",\"reject\",\"accepted\",\"rejected\",\"notaccepted\",\"allow\",\"disallow\",\"deny\",\"allowed\",\"denied\",\"approved\",\"disapproved\",\"checked\",\"unchecked\",\"dismiss\",\"dismissed\",\"enable\",\"disable\",\"enabled\",\"disabled\",\"essential\",\"nonessential\",\"forbidden\",\"forever\",\"hide\",\"hidden\",\"necessary\",\"required\",\"ok\",\"on\",\"off\",\"true\",\"t\",\"false\",\"f\",\"yes\",\"y\",\"no\",\"n\",\"all\",\"none\",\"functional\",\"granted\",\"done\",\"decline\",\"declined\",\"closed\",\"next\",\"mandatory\",\"disagree\",\"agree\"]}", "dependencies": [] }, { "name": "get-all-cookies.fn", "aliases": [], "body": "function getAllCookiesFn(){const t=safeSelf();return t.String_split.call(document.cookie,/\\s*;\\s*/).map((t=>{const e=t.indexOf(\"=\");if(e===0)return;if(e===-1)return`${t.trim()}=`;const i=t.slice(0,e).trim();const n=t.slice(e+1).trim();return{key:i,value:n}})).filter((t=>t!==void 0))}", "dependencies": [ "safe-self.fn" ] }, { "name": "get-cookie.fn", "aliases": [], "body": "function getCookieFn(n=\"\"){const i=safeSelf();for(const o of i.String_split.call(document.cookie,/\\s*;\\s*/)){const i=o.indexOf(\"=\");if(i===-1)continue;if(o.slice(0,i)!==n)continue;return o.slice(i+1).trim()}}", "dependencies": [ "safe-self.fn" ] }, { "name": "set-cookie.fn", "aliases": [], "body": "function setCookieFn(e=false,o=\"\",n=\"\",t=\"\",i=\"\",s={}){if(e===false&&/[^!#$%&'*+\\-.0-9A-Z[\\]^_`a-z|~]/.test(o))o=encodeURIComponent(o);if(/[^ -:<-[\\]-~]/.test(n))n=encodeURIComponent(n);const c=getCookieFn(o);if(c!==void 0&&s.dontOverwrite)return;if(c===n&&s.reload)return;const f=[o,\"=\",n];if(t!==\"\")f.push(\"; expires=\",t);if(i===\"\")i=\"/\";else if(i===\"none\")i=\"\";if(i!==\"\"&&i!==\"/\")return;if(i===\"/\")f.push(\"; path=/\");if(e){if(s.domain){let e=s.domain;if(/^\\/.+\\//.test(e)){const o=new URL(document.baseURI);const n=new RegExp(e.slice(1,-1));const t=n.exec(o.hostname);e=t?t[0]:void 0}if(e)f.push(`; domain=${e}`)}f.push(\"; Secure\")}else if(/^__(Host|Secure)-/.test(o))f.push(\"; Secure\");try{document.cookie=f.join(\"\")}catch{}const r=getCookieFn(o)===n;if(r&&s.reload)window.location.reload();return r}", "dependencies": [ "get-cookie.fn" ] }, { "name": "set-cookie.js", "aliases": [], "body": "function setCookie(e=\"\",o=\"\",t=\"\"){if(e===\"\")return;const s=safeSelf();const n=s.makeLogPrefix(\"set-cookie\",e,o,t);const f=o.toLowerCase();const r=/^(\"?)(.+)\\1$/.exec(f);const c=r&&r[2]||f;const i=getSafeCookieValuesFn();if(i.includes(c)===false){if(/^-?\\d+$/.test(c)===false)return;const e=parseInt(o,10)||0;if(e<-32767||e>32767)return}const a=setCookieFn(false,e,o,\"\",t,s.getExtraArgs(Array.from(arguments),3));if(a)s.uboLog(n,\"Done\")}", "dependencies": [ "get-safe-cookie-values.fn", "safe-self.fn", "set-cookie.fn" ], "executionWorld": "ISOLATED" }, { "name": "set-cookie-reload.js", "aliases": [], "body": "function setCookieReload(o,e,i,...t){setCookie(o,e,i,\"reload\",\"1\",...t)}", "dependencies": [ "set-cookie.js" ], "executionWorld": "ISOLATED" }, { "name": "trusted-set-cookie.js", "aliases": [], "body": "function trustedSetCookie(e=\"\",t=\"\",r=\"\",n=\"\"){if(e===\"\")return;const o=safeSelf();const s=o.makeLogPrefix(\"set-cookie\",e,t,n);const l=new Date;if(t.includes(\"$now$\"))t=t.replaceAll(\"$now$\",l.getTime());if(t.includes(\"$currentDate$\"))t=t.replaceAll(\"$currentDate$\",l.toUTCString());if(t.includes(\"$currentISODate$\"))t=t.replaceAll(\"$currentISODate$\",l.toISOString());let a=\"\";if(r!==\"\"){if(r===\"1day\")l.setDate(l.getDate()+1);else if(r===\"1year\")l.setFullYear(l.getFullYear()+1);else{if(/^\\d+$/.test(r)===false)return;l.setSeconds(l.getSeconds()+parseInt(r,10))}a=l.toUTCString()}const i=setCookieFn(true,e,t,a,n,safeSelf().getExtraArgs(Array.from(arguments),4));if(i)o.uboLog(s,\"Done\")}", "dependencies": [ "safe-self.fn", "set-cookie.fn" ], "executionWorld": "ISOLATED", "requiresTrust": true }, { "name": "trusted-set-cookie-reload.js", "aliases": [], "body": "function trustedSetCookieReload(e,o,t,d,...i){trustedSetCookie(e,o,t,d,\"reload\",\"1\",...i)}", "dependencies": [ "trusted-set-cookie.js" ], "executionWorld": "ISOLATED", "requiresTrust": true }, { "name": "remove-cookie.js", "aliases": [ "cookie-remover.js" ], "body": "function removeCookie(o=\"\"){if(typeof o!==\"string\")return;const e=safeSelf();const t=e.patternToRegex(o);const n=e.getExtraArgs(Array.from(arguments),1);const i=(o,e=500)=>{if(i.timer!==void 0)return;i.timer=setTimeout((()=>{i.timer=void 0;o()}),e)};const c=new URL(document.baseURI);let s=n.domain;if(s&&/^\\/.+\\//.test(s)){const o=new RegExp(s.slice(1,-1));const e=o.exec(c.hostname);s=e?e[0]:void 0}const d=()=>{e.String_split.call(document.cookie,\";\").forEach((o=>{const e=o.indexOf(\"=\");if(e===-1)return;const n=o.slice(0,e).trim();if(t.test(n)===false)return;const i=n+\"=\";const d=`; domain=${c.hostname}`;const r=`; domain=.${c.hostname}`;let m,a;if(s){m=`; domain=${s}`;a=`; domain=.${s}`}else if(document.domain){const o=document.domain;if(o!==c.hostname)m=`; domain=.${o}`;if(o.startsWith(\"www.\"))a=`; domain=${o.replace(\"www\",\"\")}`}const f=\"; path=/\";const u=\"; Max-Age=-1000; expires=Thu, 01 Jan 1970 00:00:00 GMT\";document.cookie=i+u;document.cookie=i+d+u;document.cookie=i+r+u;document.cookie=i+f+u;document.cookie=i+d+f+u;document.cookie=i+r+f+u;if(m!==void 0)document.cookie=i+m+f+u;if(a!==void 0)document.cookie=i+a+f+u}))};d();window.addEventListener(\"beforeunload\",d);if(typeof n.when!==\"string\")return;const r=[\"scroll\",\"keydown\"];const m=e.String_split.call(n.when,/\\s/);for(const o of m){if(r.includes(o)===false)continue;document.addEventListener(o,(()=>{i(d)}),{passive:true})}}", "dependencies": [ "safe-self.fn" ], "executionWorld": "ISOLATED" }, { "name": "get-all-local-storage.fn", "aliases": [], "body": "function getAllLocalStorageFn(t=\"localStorage\"){const e=self[t];const n=[];for(let t=0;t32767)return}}let s=false;try{const t=self[`${e}Storage`];if(o===\"$remove$\"){const e=safeSelf();const o=e.patternToRegex(n,void 0,true);const l=[];for(let e=0,n=t.length;e{window.location.reload()}),l.reload)}", "dependencies": [ "get-safe-cookie-values.fn", "safe-self.fn" ] }, { "name": "remove-cache-storage-item.fn", "aliases": [], "body": "function removeCacheStorageItem(e=\"\",t=\"\"){if(e===\"\")return;const o=safeSelf();const n=o.makeLogPrefix(\"remove-cache-storage-item\",e,t);const r=self.caches;if(r instanceof Object===false)return;const f=o.patternToRegex(e,void 0,true);const i=o.patternToRegex(t,void 0,true);r.keys().then((e=>{for(const s of e){if(f.test(s)===false)continue;if(t===\"\"){r.delete(s).then((e=>{if(o.logLevel>1)o.uboLog(n,`Deleting ${s}`);if(e!==true)return;o.uboLog(n,`Deleted ${s}: ${e}`)}));continue}r.open(s).then((e=>{e.keys().then((t=>{for(const r of t){if(i.test(r.url)===false)continue;if(o.logLevel>1)o.uboLog(n,`Deleting ${s}/${r.url}`);e.delete(r).then((e=>{if(e!==true)return;o.uboLog(n,`Deleted ${s}/${r.url}: ${e}`)}))}}))}))}}))}", "dependencies": [ "safe-self.fn" ], "executionWorld": "ISOLATED" }, { "name": "set-local-storage-item.js", "aliases": [], "body": "function setLocalStorageItem(t=\"\",e=\"\"){const a=safeSelf();const o=a.getExtraArgs(Array.from(arguments),2);setLocalStorageItemFn(\"local\",false,t,e,o)}", "dependencies": [ "safe-self.fn", "set-local-storage-item.fn" ], "executionWorld": "ISOLATED" }, { "name": "set-session-storage-item.js", "aliases": [], "body": "function setSessionStorageItem(e=\"\",s=\"\"){const t=safeSelf();const o=t.getExtraArgs(Array.from(arguments),2);setLocalStorageItemFn(\"session\",false,e,s,o)}", "dependencies": [ "safe-self.fn", "set-local-storage-item.fn" ], "executionWorld": "ISOLATED" }, { "name": "trusted-set-local-storage-item.js", "aliases": [], "body": "function trustedSetLocalStorageItem(t=\"\",e=\"\"){const o=safeSelf();const r=o.getExtraArgs(Array.from(arguments),2);setLocalStorageItemFn(\"local\",true,t,e,r)}", "dependencies": [ "safe-self.fn", "set-local-storage-item.fn" ], "executionWorld": "ISOLATED", "requiresTrust": true }, { "name": "trusted-set-session-storage-item.js", "aliases": [], "body": "function trustedSetSessionStorageItem(t=\"\",e=\"\"){const s=safeSelf();const o=s.getExtraArgs(Array.from(arguments),2);setLocalStorageItemFn(\"session\",true,t,e,o)}", "dependencies": [ "safe-self.fn", "set-local-storage-item.fn" ], "executionWorld": "ISOLATED", "requiresTrust": true }, { "name": "should-debug.fn", "aliases": [], "body": "function shouldDebug(e){if(e instanceof Object===false)return false;return scriptletGlobals.canDebug&&e.debug}", "dependencies": [] }, { "name": "abort-current-script.fn", "aliases": [], "body": "function abortCurrentScriptFn(e=\"\",t=\"\",r=\"\"){if(typeof e!==\"string\")return;if(e===\"\")return;const n=safeSelf();const o=n.makeLogPrefix(\"abort-current-script\",e,t,r);const c=n.patternToRegex(t);const s=n.patternToRegex(r);const i=n.getExtraArgs(Array.from(arguments),3);const a=document.currentScript;const f=n.String_split.call(e,\".\");let l=window;let u;for(;;){u=f.shift();if(f.length===0)break;if(u in l===false)break;l=l[u];if(l instanceof Object===false)return}let g;let b=Object.getOwnPropertyDescriptor(l,u);if(b instanceof Object===false||b.get instanceof Function===false){g=l[u];b=void 0}const d=shouldDebug(i);const p=getExceptionTokenFn();const h=new WeakMap;const m=Object.getOwnPropertyDescriptor(Node.prototype,\"textContent\").get;const O=e=>{let t=m.call(e);if(t.trim()!==\"\")return t;if(h.has(e))return h.get(e);const[,r,n]=/^data:([^,]*),(.+)$/.exec(e.src.trim())||[\"\",\"\",\"\"];try{switch(true){case r.endsWith(\";base64\"):t=self.atob(n);break;default:t=self.decodeURIComponent(n);break}}catch{}h.set(e,t);return t};const w=()=>{const e=document.currentScript;if(e instanceof HTMLScriptElement===false)return;if(e===a)return;if(r!==\"\"&&s.test(e.src)===false){if(d===\"nomatch\"||d===\"all\")debugger;return}if(n.logLevel>1&&r!==\"\")n.uboLog(o,`Matched src\\n${e.src}`);const t=O(e);if(c.test(t)===false){if(d===\"nomatch\"||d===\"all\")debugger;return}if(n.logLevel>1)n.uboLog(o,`Matched text\\n${t}`);if(d===\"match\"||d===\"all\")debugger;n.uboLog(o,\"Aborted\");throw new ReferenceError(p)};if(d===\"install\")debugger;try{Object.defineProperty(l,u,{get:function(){w();return b instanceof Object?b.get.call(l):g},set:function(e){w();if(b instanceof Object)b.set.call(l,e);else g=e}})}catch(e){n.uboErr(o,`Error: ${e}`)}}", "dependencies": [ "get-exception-token.fn", "safe-self.fn", "should-debug.fn" ] }, { "name": "replace-node-text.fn", "aliases": [], "body": "function replaceNodeTextFn(e=\"\",t=\"\",n=\"\"){const o=safeSelf();const r=o.makeLogPrefix(\"replace-node-text.fn\",...Array.from(arguments));const c=o.patternToRegex(e,\"i\",true);const s=o.patternToRegex(t,\"gms\");const i=o.getExtraArgs(Array.from(arguments),3);const u=i.includes||i.condition?o.patternToRegex(i.includes||i.condition,\"ms\"):null;const l=i.excludes?o.patternToRegex(i.excludes,\"ms\"):null;const f=(e=true)=>{if(e)x(g.takeRecords());g.disconnect();if(o.logLevel>1)o.uboLog(r,\"Quitting\")};const a=(()=>{const e={createScript:e=>e};const{trustedTypes:t}=self;if(t instanceof Object)if(typeof t.getPropertyType===\"function\")if(t.getPropertyType(\"script\",\"textContent\")===\"TrustedScript\")return t.createPolicy(getRandomTokenFn(),e);return e})();let d=i.sedCount||0;const m=e=>{const c=e.textContent;if(u){u.lastIndex=0;if(o.RegExp_test.call(u,c)===false)return true}if(l){l.lastIndex=0;if(o.RegExp_test.call(l,c))return true}s.lastIndex=0;if(o.RegExp_test.call(s,c)===false)return true;s.lastIndex=0;const i=t!==\"\"?c.replace(s,n):n;e.textContent=e.nodeName===\"SCRIPT\"?a.createScript(i):i;if(o.logLevel>1)o.uboLog(r,`Text before:\\n${c.trim()}`);o.uboLog(r,`Text after:\\n${i.trim()}`);return d===0||(d-=1)!==0};const x=e=>{for(const t of e)for(const e of t.addedNodes){if(c.test(e.nodeName)===false)continue;if(m(e))continue;f(false);return}};const g=new MutationObserver(x);g.observe(document,{childList:true,subtree:true});if(document.documentElement){const e=document.createTreeWalker(document.documentElement,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT);let t=0;for(;;){const n=e.nextNode();t+=1;if(n===null)break;if(c.test(n.nodeName)===false)continue;if(n===document.currentScript)continue;if(m(n))continue;f();break}o.uboLog(r,`${t} nodes present before installing mutation observer`)}if(i.stay)return;runAt((()=>{const e=i.quitAfter||0;if(e!==0)setTimeout((()=>{f()}),e);else f()}),\"interactive\")}", "dependencies": [ "get-random-token.fn", "run-at.fn", "safe-self.fn" ] }, { "name": "replace-fetch-response.fn", "aliases": [], "body": "function replaceFetchResponseFn(e=false,t=\"\",r=\"\",n=\"\"){if(e!==true)return;const s=safeSelf();const o=s.makeLogPrefix(\"replace-fetch-response\",t,r,n);if(t===\"*\")t=\".*\";const c=s.patternToRegex(t);const a=parsePropertiesToMatchFn(n,\"url\");const u=s.getExtraArgs(Array.from(arguments),4);const l=u.includes?s.patternToRegex(u.includes):null;self.fetch=new Proxy(self.fetch,{apply:function(e,n,u){const f=Reflect.apply(e,n,u);if(t===\"\")return f;if(a.size!==0){const e=collateFetchArgumentsFn(...u);const t=matchObjectPropertiesFn(a,e);if(t===void 0)return f;if(s.logLevel>1)s.uboLog(o,`Matched \"propsToMatch\":\\n\\t${t.join(\"\\n\\t\")}`)}return f.then((e=>{const t=e.clone();return t.text().then((t=>{if(l&&l.test(t)===false)return e;const n=t.replace(c,r);if(n===t)return e;s.uboLog(o,\"Replaced\");const a=new Response(n,{status:e.status,statusText:e.statusText,headers:e.headers});Object.defineProperties(a,{ok:{value:e.ok},redirected:{value:e.redirected},type:{value:e.type},url:{value:e.url}});return a})).catch((t=>{s.uboErr(o,t);return e}))})).catch((e=>{s.uboErr(o,e);return f}))}})}", "dependencies": [ "collate-fetch-arguments.fn", "match-object-properties.fn", "parse-properties-to-match.fn", "safe-self.fn" ] }, { "name": "abort-current-script.js", "aliases": [ "acs.js", "abort-current-inline-script.js", "acis.js" ], "body": "function abortCurrentScript(...t){runAtHtmlElementFn((()=>{abortCurrentScriptFn(...t)}))}", "dependencies": [ "abort-current-script.fn", "run-at-html-element.fn" ] }, { "name": "abort-on-property-read.js", "aliases": [ "aopr.js" ], "body": "function abortOnPropertyRead(t=\"\"){if(typeof t!==\"string\")return;if(t===\"\")return;const e=safeSelf();const n=e.makeLogPrefix(\"abort-on-property-read\",t);const o=getExceptionTokenFn();const r=function(){e.uboLog(n,\"Aborted\");throw new ReferenceError(o)};const c=function(t,e){const n=e.indexOf(\".\");if(n===-1){const n=Object.getOwnPropertyDescriptor(t,e);if(!n||n.get!==r)Object.defineProperty(t,e,{get:r,set:function(){}});return}const o=e.slice(0,n);let i=t[o];e=e.slice(n+1);if(i){c(i,e);return}const f=Object.getOwnPropertyDescriptor(t,o);if(f&&f.set!==void 0)return;Object.defineProperty(t,o,{get:function(){return i},set:function(t){i=t;if(t instanceof Object)c(t,e)}})};const i=window;c(i,t)}", "dependencies": [ "get-exception-token.fn", "safe-self.fn" ] }, { "name": "abort-on-property-write.js", "aliases": [ "aopw.js" ], "body": "function abortOnPropertyWrite(e=\"\"){if(typeof e!==\"string\")return;if(e===\"\")return;const t=safeSelf();const r=t.makeLogPrefix(\"abort-on-property-write\",e);const n=getExceptionTokenFn();let o=window;for(;;){const t=e.indexOf(\".\");if(t===-1)break;o=o[e.slice(0,t)];if(o instanceof Object===false)return;e=e.slice(t+1)}delete o[e];Object.defineProperty(o,e,{set:function(){t.uboLog(r,\"Aborted\");throw new ReferenceError(n)}})}", "dependencies": [ "get-exception-token.fn", "safe-self.fn" ] }, { "name": "adjust-setInterval.js", "aliases": [ "nano-setInterval-booster.js", "nano-sib.js" ], "body": "function adjustSetInterval(t=\"\",e=\"\",n=\"\"){if(typeof t!==\"string\")return;const s=safeSelf();const a=s.patternToRegex(t);let i=e!==\"*\"?parseInt(e,10):-1;if(isNaN(i)||isFinite(i)===false)i=1e3;let l=parseFloat(n);l=isNaN(l)===false&&isFinite(l)?Math.min(Math.max(l,.001),50):.05;self.setInterval=new Proxy(self.setInterval,{apply:function(t,e,n){const[s,r]=n;if((i===-1||r===i)&&a.test(s.toString()))n[1]=r*l;return t.apply(e,n)}})}", "dependencies": [ "safe-self.fn" ] }, { "name": "adjust-setTimeout.js", "aliases": [ "nano-setTimeout-booster.js", "nano-stb.js" ], "body": "function adjustSetTimeout(t=\"\",e=\"\",i=\"\"){if(typeof t!==\"string\")return;const s=safeSelf();const n=s.patternToRegex(t);let a=e!==\"*\"?parseInt(e,10):-1;if(isNaN(a)||isFinite(a)===false)a=1e3;let o=parseFloat(i);o=isNaN(o)===false&&isFinite(o)?Math.min(Math.max(o,.001),50):.05;self.setTimeout=new Proxy(self.setTimeout,{apply:function(t,e,i){const[s,f]=i;if((a===-1||f===a)&&n.test(s.toString()))i[1]=f*o;return t.apply(e,i)}})}", "dependencies": [ "safe-self.fn" ] }, { "name": "prevent-refresh.js", "aliases": [ "refresh-defuser.js" ], "body": "function preventRefresh(e=\"\"){if(typeof e!==\"string\")return;const t=safeSelf();const n=t.makeLogPrefix(\"prevent-refresh\",e);const o=e=>{window.stop();t.uboLog(n,`Prevented \"${e}\"`)};const r=()=>{const t=document.querySelector('meta[http-equiv=\"refresh\" i][content]');if(t===null)return;const n=t.getAttribute(\"content\")||\"\";const r=e===\"\"?Math.max(parseFloat(n)||0,0)*500:0;if(r===0)o(n);else setTimeout((()=>{o(n)}),r)};self.addEventListener(\"load\",r,{capture:true,once:true})}", "dependencies": [ "safe-self.fn" ], "executionWorld": "ISOLATED" }, { "name": "remove-class.js", "aliases": [ "rc.js" ], "body": "function removeClass(e=\"\",t=\"\",o=\"\"){if(typeof e!==\"string\")return;if(e===\"\")return;const s=safeSelf();const r=s.makeLogPrefix(\"remove-class\",e,t,o);const n=s.String_split.call(e,/\\s*\\|\\s*/);const l=n.map((e=>`${t}.${CSS.escape(e)}`)).join(\",\");if(s.logLevel>1)s.uboLog(r,`Target selector:\\n\\t${l}`);const c=/\\bstay\\b/.test(o);let i;const a=()=>{i=void 0;try{const e=document.querySelectorAll(l);for(const t of e){t.classList.remove(...n);s.uboLog(r,\"Removed class(es)\")}}catch{}if(c)return;if(document.readyState!==\"complete\")return;f.disconnect()};const u=e=>{if(i!==void 0)return;let t=true;for(let o=0;o{a();f.observe(document,{attributes:true,attributeFilter:[\"class\"],childList:true,subtree:true})};runAt((()=>{d()}),/\\bcomplete\\b/.test(o)?\"idle\":\"loading\")}", "dependencies": [ "run-at.fn", "safe-self.fn" ], "executionWorld": "ISOLATED" }, { "name": "webrtc-if.js", "aliases": [], "body": "function webrtcIf(e=\"\"){if(typeof e!==\"string\")return;const t=safeSelf();const n=t.patternToRegex(e);const r=window.RTCPeerConnection?\"RTCPeerConnection\":window.webkitRTCPeerConnection?\"webkitRTCPeerConnection\":\"\";if(r===\"\")return;const o=console.log.bind(console);const s=new WeakSet;const c=function(e,t){if(s.has(e))return false;if(t instanceof Object===false)return true;if(Array.isArray(t.iceServers)===false)return true;for(const e of t.iceServers){const t=typeof e.urls===\"string\"?[e.urls]:e.urls;if(Array.isArray(t))for(const e of t)if(n.test(e))return true;if(typeof e.username===\"string\")if(n.test(e.username))return true;if(typeof e.credential===\"string\")if(n.test(e.credential))return true}s.add(e);return false};const i=window[r];const f=i.prototype;f.createDataChannel=new Proxy(f.createDataChannel,{apply:function(e,t,n){if(c(e,n[1])===false){o(\"uBO:\",n[1]);return Reflect.apply(e,t,n.slice(0,1))}return Reflect.apply(e,t,n)}});window[r]=new Proxy(i,{construct:function(e,t){if(c(e,t[0])===false){o(\"uBO:\",t[0]);return Reflect.construct(e)}return Reflect.construct(e,t)}})}", "dependencies": [ "safe-self.fn" ] }, { "name": "prevent-window-open.js", "aliases": [ "nowoif.js", "no-window-open-if.js", "window.open-defuser.js" ], "body": "function noWindowOpenIf(e=\"\",t=\"\",o=\"\"){const n=safeSelf();const r=n.makeLogPrefix(\"no-window-open-if\",e,t,o);const s=e.startsWith(\"!\")===false;if(s===false)e=e.slice(1);const l=n.patternToRegex(e);const c=(parseFloat(t)||0)*1e3;const f=self.setTimeout;const i=function(e,t,o){const n=document.createElement(e);n[t]=o;n.style.setProperty(\"height\",\"1px\",\"important\");n.style.setProperty(\"position\",\"fixed\",\"important\");n.style.setProperty(\"top\",\"-1px\",\"important\");n.style.setProperty(\"width\",\"1px\",\"important\");document.body.appendChild(n);f((()=>{n.remove()}),c);return n};const u=function(){};proxyApplyFn(\"open\",(function p(a){if(e===\"debug\"&&n.logLevel!==0){debugger;return a.reflect()}const{callArgs:g}=a;const d=g.join(\" \");if(l.test(d)!==s){if(n.logLevel>1)n.uboLog(r,`Allowed (${g.join(\", \")})`);return a.reflect()}n.uboLog(r,`Prevented (${g.join(\", \")})`);if(t===\"\")return null;if(o===\"blank\"){g[0]=\"about:blank\";const e=a.reflect();f((()=>{e.close()}),c);return e}const y=o===\"obj\"?i(\"object\",\"data\",...g):i(\"iframe\",\"src\",...g);let b=y.contentWindow;if(typeof b===\"object\"&&b!==null)Object.defineProperty(b,\"closed\",{value:false});else b=new Proxy(self,{get:function(e,t,...o){if(t===\"closed\")return false;const n=Reflect.get(e,t,...o);if(typeof n===\"function\")return u;return n},set:function(...e){return Reflect.set(...e)}});if(n.logLevel!==0)b=new Proxy(b,{get:function(e,t,...o){const s=Reflect.get(e,t,...o);n.uboLog(r,`popup / get ${t} === ${s}`);if(typeof s===\"function\")return(...t)=>s.call(e,...t);return s},set:function(e,t,o,...s){n.uboLog(r,`popup / set ${t} = ${o}`);return Reflect.set(e,t,o,...s)}});return b}))}", "dependencies": [ "proxy-apply.fn", "safe-self.fn" ] }, { "name": "close-window.js", "aliases": [ "window-close-if.js" ], "body": "function closeWindow(o=\"\"){if(typeof o!==\"string\")return;const t=safeSelf();let e=\"\";if(/^\\/.*\\/$/.test(o))e=window.location.href;else if(o!==\"\")e=`${window.location.pathname}${window.location.search}`;try{const n=t.patternToRegex(o);if(n.test(e))window.close()}catch(o){console.log(o)}}", "dependencies": [ "safe-self.fn" ], "executionWorld": "ISOLATED" }, { "name": "window.name-defuser.js", "aliases": [], "body": "function windowNameDefuser(){if(window===window.top)window.name=\"\"}", "dependencies": [] }, { "name": "overlay-buster.js", "aliases": [], "body": "function overlayBuster(e){if(e===\"\"&&window!==window.top)return;var t;var n=3e4;var o=0;var i=50;var r=function(){var e=document.documentElement,d=document.body,a=Math.min(e.clientWidth,window.innerWidth),m=Math.min(e.clientHeight,window.innerHeight),u=Math.min(a,m)*.05,l=document.elementFromPoint(a/2,m/2),c,f;for(;;){if(l===null||l.parentNode===null||l===d)break;c=window.getComputedStyle(l);if(parseInt(c.zIndex,10)>=1e3||c.position===\"fixed\"){f=l.getBoundingClientRect();if(f.left<=u&&f.top<=u&&a-f.right<=u&&m-f.bottom{let t=e.target;while(t!==null){if(t.localName===\"a\"&&t.hasAttribute(\"target\")){e.stopPropagation();e.preventDefault();break}t=t.parentNode}}),{capture:true})}", "dependencies": [] }, { "name": "xml-prune.js", "aliases": [], "body": "function xmlPrune(e=\"\",t=\"\",r=\"\"){if(typeof e!==\"string\")return;if(e===\"\")return;const n=safeSelf();const s=n.makeLogPrefix(\"xml-prune\",e,t,r);const o=n.patternToRegex(r);const u=n.getExtraArgs(Array.from(arguments),3);const c=(e,t)=>{const r=/^xpath\\(.+\\)$/.test(t);if(r===false)return Array.from(e.querySelectorAll(t));const n=e.evaluate(t.slice(6,-1),e,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);const s=[];for(let e=0;e{try{if(t!==\"\"&&r.querySelector(t)===null)return r;if(u.logdoc){const e=new XMLSerializer;n.uboLog(s,`Document is\\n\\t${e.serializeToString(r)}`)}const o=c(r,e);if(o.length===0)return r;n.uboLog(s,`Removing ${o.length} items`);for(const e of o){if(e.nodeType===1)e.remove();else if(e.nodeType===2)e.ownerElement.removeAttribute(e.nodeName);n.uboLog(s,`${e.constructor.name}.${e.nodeName} removed`)}}catch(e){n.uboErr(s,`Error: ${e}`)}return r};const a=e=>{if((/^\\s*\\s*$/.test(e))===false)return e;try{const t=new DOMParser;const r=t.parseFromString(e,\"text/xml\");i(r);const n=new XMLSerializer;e=n.serializeToString(r)}catch{}return e};const l=e=>{if(typeof e===\"string\")return e;if(e instanceof Request)return e.url;return String(e)};self.fetch=new Proxy(self.fetch,{apply:function(e,t,r){const n=Reflect.apply(e,t,r);if(o.test(l(r[0]))===false)return n;return n.then((e=>{const t=e.clone();return t.text().then((t=>{const r=new Response(a(t),{status:e.status,statusText:e.statusText,headers:e.headers});Object.defineProperties(r,{ok:{value:e.ok},redirected:{value:e.redirected},type:{value:e.type},url:{value:e.url}});return r})).catch((()=>e))}))}});self.XMLHttpRequest.prototype.open=new Proxy(self.XMLHttpRequest.prototype.open,{apply:async(e,t,r)=>{if(o.test(l(r[1]))===false)return Reflect.apply(e,t,r);t.addEventListener(\"readystatechange\",(function(){if(t.readyState!==4)return;const e=t.responseType;if(e===\"document\"||e===\"\"&&t.responseXML instanceof XMLDocument){i(t.responseXML);const e=new XMLSerializer;const r=e.serializeToString(t.responseXML);Object.defineProperty(t,\"responseText\",{value:r});if(typeof t.response===\"string\")Object.defineProperty(t,\"response\",{value:r});return}if(e===\"text\"||e===\"\"&&typeof t.responseText===\"string\"){const e=t.responseText;const r=a(e);if(r===e)return;Object.defineProperty(t,\"response\",{value:r});Object.defineProperty(t,\"responseText\",{value:r});return}}));return Reflect.apply(e,t,r)}})}", "dependencies": [ "safe-self.fn" ] }, { "name": "m3u-prune.js", "aliases": [], "body": "function m3uPrune(t=\"\",e=\"\"){if(typeof t!==\"string\")return;const n=safeSelf();const s=n.makeLogPrefix(\"m3u-prune\",t,e);const r=[];const i=t=>{if(t===\"\")return/^/;const e=/^\\/(.+)\\/([gms]*)$/.exec(t);if(e!==null){let t=e[2]||\"\";if(t.includes(\"m\"))t+=\"s\";return new RegExp(e[1],t)}return new RegExp(t.replace(/[.+?^${}()|[\\]\\\\]/g,\"\\\\$&\").replace(/\\*+/g,\".*?\"))};const o=i(t);const l=i(e);const f=(t,e)=>{if(t[e].startsWith('#EXT-X-CUE:TYPE=\"SpliceOut\"')===false)return false;r.push(`\\t${t[e]}`);t[e]=void 0;e+=1;if(t[e].startsWith(\"#EXT-X-ASSET:CAID\")){r.push(`\\t${t[e]}`);t[e]=void 0;e+=1}if(t[e].startsWith(\"#EXT-X-SCTE35:\")){r.push(`\\t${t[e]}`);t[e]=void 0;e+=1}if(t[e].startsWith(\"#EXT-X-CUE-IN\")){r.push(`\\t${t[e]}`);t[e]=void 0;e+=1}if(t[e].startsWith(\"#EXT-X-SCTE35:\")){r.push(`\\t${t[e]}`);t[e]=void 0;e+=1}return true};const u=(t,e)=>{if(t[e].startsWith(\"#EXTINF\")===false)return false;if(o.test(t[e+1])===false)return false;r.push(\"Discarding\",`\\t${t[e]}, \\t${t[e+1]}`);t[e]=t[e+1]=void 0;e+=2;if(t[e].startsWith(\"#EXT-X-DISCONTINUITY\")){r.push(`\\t${t[e]}`);t[e]=void 0;e+=1}return true};const a=e=>{if(/^\\s*#EXTM3U/.test(e)===false)return e;if(t===\"\"){n.uboLog(` Content:\\n${e}`);return e}if(o.multiline){o.lastIndex=0;for(;;){const t=o.exec(e);if(t===null)break;let s=t[0];let i=e.slice(0,t.index);if(/^[\\n\\r]+/.test(s)===false&&/[\\n\\r]+$/.test(i)===false){const t=/[^\\n\\r]+$/.exec(i);if(t!==null){i=i.slice(0,t.index);s=t[0]+s}}let l=e.slice(t.index+t[0].length);if(/[\\n\\r]+$/.test(s)===false&&/^[\\n\\r]+/.test(l)===false){const t=/^[^\\n\\r]+/.exec(l);if(t!==null){l=l.slice(t.index);s+=s+t[0]}}e=i.trim()+\"\\n\"+l.trim();o.lastIndex=i.length+1;r.push(\"Discarding\",...n.String_split.call(s,/\\n+/).map((t=>`\\t${t}`)));if(o.global===false)break}return e}const s=n.String_split.call(e,/\\n\\r|\\n|\\r/);for(let t=0;tt!==void 0)).join(\"\\n\")};const c=t=>{if(typeof t===\"string\")return t;if(t instanceof Request)return t.url;return String(t)};proxyApplyFn(\"fetch\",(async function t(e){const i=e.callArgs;const o=e.reflect();if(l.test(c(i[0]))===false)return o;const f=await o;const u=f.clone();const p=await u.text();const d=a(p);if(d===p)return f;const h=new Response(d,{status:f.status,statusText:f.statusText,headers:f.headers});Object.defineProperties(h,{url:{value:f.url},type:{value:f.type}});if(r.length!==0){r.unshift(s);n.uboLog(r.join(\"\\n\"))}return h}));self.XMLHttpRequest.prototype.open=new Proxy(self.XMLHttpRequest.prototype.open,{apply:async(t,e,i)=>{if(l.test(c(i[1]))===false)return Reflect.apply(t,e,i);e.addEventListener(\"readystatechange\",(function(){if(e.readyState!==4)return;const t=e.responseType;if(t!==\"\"&&t!==\"text\")return;const i=e.responseText;const o=a(i);if(o===i)return;Object.defineProperty(e,\"response\",{value:o});Object.defineProperty(e,\"responseText\",{value:o});if(r.length!==0){r.unshift(s);n.uboLog(r.join(\"\\n\"))}}));return Reflect.apply(t,e,i)}})}", "dependencies": [ "proxy-apply.fn", "safe-self.fn" ] }, { "name": "call-nothrow.js", "aliases": [], "body": "function callNothrow(t=\"\"){if(typeof t!==\"string\")return;if(t===\"\")return;const n=safeSelf();const e=n.String_split.call(t,\".\");let r=window,f;for(;;){f=e.shift();if(e.length===0)break;r=r[f];if(r instanceof Object===false)return}if(f===\"\")return;const i=r[f];if(typeof i!==\"function\")return;r[f]=new Proxy(i,{apply:function(...t){let n;try{n=Reflect.apply(...t)}catch{}return n}})}", "dependencies": [ "safe-self.fn" ] }, { "name": "remove-node-text.js", "aliases": [ "rmnt.js" ], "body": "function removeNodeText(e,n,...o){replaceNodeTextFn(e,\"\",\"\",\"includes\",n||\"\",...o)}", "dependencies": [ "replace-node-text.fn" ], "executionWorld": "ISOLATED" }, { "name": "prevent-canvas.js", "aliases": [], "body": "function preventCanvas(t=\"\"){const e=safeSelf();const n=e.initPattern(t,{canNegate:true});const a=globalThis.HTMLCanvasElement.prototype;a.getContext=new Proxy(a.getContext,{apply(t,a,o){if(e.testPattern(n,o[0]))return null;return Reflect.apply(t,a,o)}})}", "dependencies": [ "safe-self.fn" ] }, { "name": "multiup.js", "aliases": [], "body": "function multiup(){const t=t=>{const e=t.target;if(e.matches(\"button[link]\")===false)return;const n=e.closest(\"form\");if(n===null)return;if(n!==e.parentElement)return;const r=(e.getAttribute(\"link\")||\"\").trim();if(r===\"\")return;t.preventDefault();t.stopPropagation();document.location.href=r};document.addEventListener(\"click\",t,{capture:true})}", "dependencies": [], "executionWorld": "ISOLATED" }, { "name": "trusted-replace-node-text.js", "aliases": [ "trusted-rpnt.js", "replace-node-text.js", "rpnt.js" ], "body": "function replaceNodeText(e,c,n,...o){replaceNodeTextFn(e,c,n,...o)}", "dependencies": [ "replace-node-text.fn" ], "executionWorld": "ISOLATED", "requiresTrust": true }, { "name": "trusted-replace-fetch-response.js", "aliases": [ "trusted-rpfr.js" ], "body": "function trustedReplaceFetchResponse(...e){replaceFetchResponseFn(true,...e)}", "dependencies": [ "replace-fetch-response.fn" ], "requiresTrust": true }, { "name": "trusted-replace-xhr-response.js", "aliases": [], "body": "function trustedReplaceXhrResponse(e=\"\",s=\"\",t=\"\"){const n=safeSelf();const o=n.makeLogPrefix(\"trusted-replace-xhr-response\",e,s,t);const r=new WeakMap;if(e===\"*\")e=\".*\";const p=n.patternToRegex(e);const c=parsePropertiesToMatchFn(t,\"url\");const i=n.getExtraArgs(Array.from(arguments),3);const a=i.includes?n.patternToRegex(i.includes):null;self.XMLHttpRequest=class extends self.XMLHttpRequest{open(e,s,...t){const p=this;const i={method:e,url:s};let a=\"match\";if(c.size!==0)if(matchObjectPropertiesFn(c,i)===void 0)a=\"nomatch\";if(a===\"match\"){if(n.logLevel>1)n.uboLog(o,`Matched \"propsToMatch\"`);r.set(p,i)}return super.open(e,s,...t)}get response(){const e=super.response;const t=r.get(this);if(t===void 0)return e;const c=typeof e===\"string\"?e.length:void 0;if(t.lastResponseLength!==c){t.response=void 0;t.lastResponseLength=c}if(t.response!==void 0)return t.response;if(typeof e!==\"string\")return t.response=e;if(a&&a.test(e)===false)return t.response=e;const i=e;const f=i.replace(p,s);if(f!==i)n.uboLog(o,\"Match\");return t.response=f}get responseText(){const e=this.response;if(typeof e!==\"string\")return super.responseText;return e}}}", "dependencies": [ "match-object-properties.fn", "parse-properties-to-match.fn", "safe-self.fn" ], "requiresTrust": true }, { "name": "trusted-click-element.js", "aliases": [], "body": "function trustedClickElement(e=\"\",t=\"\",o=\"\"){const n=safeSelf();const r=n.makeLogPrefix(\"trusted-click-element\",e,t,o);if(t!==\"\"){const e=n.String_split.call(t,\",\").map((e=>{const t=e.indexOf(\":\");const o=t!==-1?e.slice(0,t):e;const r=o.startsWith(\"!\");const i=r?o.slice(1):o;const c=t!==-1?e.slice(t+1).trim():\"\";if(c===\"\")return;const s={not:r,type:i};const l=/^\\/(.+)\\/(i?)$/.exec(c);if(l!==null){s.re=new RegExp(l[1],l[2]||void 0);return s}const u=c.indexOf(\"=\");const a=u!==-1?c.slice(0,u).trim():c;const f=u!==-1?c.slice(u+1).trim():\"\";s.re=new RegExp(`^${n.escapeRegexChars(a)}=${n.escapeRegexChars(f)}`);return s})).filter((e=>e!==void 0));const o=e.some((e=>e.type===\"cookie\"))?getAllCookiesFn():[];const r=e.some((e=>e.type===\"localStorage\"))?getAllLocalStorageFn():[];const i=(e,t)=>{for(const{key:o,value:n}of e)if(t.test(`${o}=${n}`))return true;return false};for(const{not:t,type:n,re:c}of e)switch(n){case\"cookie\":if(i(o,c)===t)return;break;case\"localStorage\":if(i(r,c)===t)return;break}}const i=e=>{if(e.openOrClosedShadowRoot)return e.openOrClosedShadowRoot;if(typeof chrome===\"object\")if(chrome.dom&&chrome.dom.openOrClosedShadowRoot)return chrome.dom.openOrClosedShadowRoot(e);return e.shadowRoot};const c=(e,t=document)=>{const o=e.indexOf(\" >>> \");if(o===-1)return t.querySelector(e);const n=e.slice(0,o).trim();const r=e.slice(o+5).trim();const s=t.querySelector(n);if(s===null)return null;const l=i(s);return l&&c(r,l)};const s=n.String_split.call(e,/\\s*,\\s*/).map((e=>{if(/^\\d+$/.test(e))return parseInt(e,10);return e}));if(s.length===0)return;const l=parseInt(o,10)||1;for(let e=s.length-1;e>0;e--){if(typeof s[e]!==\"string\")continue;if(typeof s[e-1]!==\"string\")continue;s.splice(e,0,l)}if(s.length===1&&o!==\"\")s.unshift(l);if(typeof s.at(-1)!==\"number\")s.push(1e4);const u=e=>new Promise((t=>{n.uboLog(r,`Waiting for ${e} ms`);u.timer=setTimeout((()=>{u.timer=void 0;t()}),e)}));u.cancel=()=>{const{timer:e}=u;if(e===void 0)return;clearTimeout(e);u.timer=void 0};const a=e=>new Promise((t=>{const o=c(e);if(o!==null){o.click();t();return}n.uboLog(r,`Waiting for ${e}`);const i=new MutationObserver((()=>{const o=c(e);if(o===null)return;a.cancel();o.click();t()}));i.observe(document,{attributes:true,childList:true,subtree:true});a.observer=i}));a.cancel=()=>{const{observer:e}=a;if(e===void 0)return;a.observer=void 0;e.disconnect()};const f=e=>{f.cancel();f.timer=setTimeout((()=>{f.timer=void 0;m();n.uboLog(r,`Timed out after ${e} ms`)}),e)};f.cancel=()=>{if(f.timer===void 0)return;clearTimeout(f.timer);f.timer=void 0};const m=()=>{u.cancel();a.cancel();f.cancel()};const d=async()=>{f(s.pop());while(s.length!==0){const e=s.shift();if(e===void 0)break;if(typeof e===\"number\"){await u(e);if(e===1)continue;continue}if(e.startsWith(\"!\"))continue;await a(e);n.uboLog(r,`Clicked ${e}`)}m()};runAtHtmlElementFn(d)}", "dependencies": [ "get-all-cookies.fn", "get-all-local-storage.fn", "run-at-html-element.fn", "safe-self.fn" ], "executionWorld": "ISOLATED", "requiresTrust": true }, { "name": "trusted-replace-outbound-text.js", "aliases": [], "body": "function trustedReplaceOutboundText(e=\"\",t=\"\",o=\"\",...n){if(e===\"\")return;const r=safeSelf();const c=r.makeLogPrefix(\"trusted-replace-outbound-text\",e,t,o,...n);const s=r.patternToRegex(t);const u=o.startsWith(\"json:\")?r.JSON_parse(o.slice(5)):o;const a=r.getExtraArgs(n);const d=r.patternToRegex(a.condition||\"\");proxyApplyFn(e,(function(e){const o=e.reflect();let n=o;if(a.encoding===\"base64\")try{n=self.atob(o)}catch{return o}if(t===\"\"){r.uboLog(c,\"Decoded outbound text:\\n\",n);return o}d.lastIndex=0;if(d.test(n)===false)return o;const i=n.replace(s,u);if(i===n)return o;r.uboLog(c,\"Matched and replaced\");if(r.logLevel>1)r.uboLog(c,\"Modified decoded outbound text:\\n\",i);let f=i;if(a.encoding===\"base64\")f=self.btoa(i);return f}))}", "dependencies": [ "proxy-apply.fn", "safe-self.fn" ], "requiresTrust": true }, { "name": "trusted-suppress-native-method.js", "aliases": [], "body": "function trustedSuppressNativeMethod(e=\"\",t=\"\",r=\"\",n=\"\"){if(e===\"\")return;const l=safeSelf();const u=l.makeLogPrefix(\"trusted-suppress-native-method\",e,t,r,n);const a=l.String_split.call(t,/\\s*\\|\\s*/).map((e=>{if(/^\".*\"$/.test(e))return{type:\"pattern\",re:l.patternToRegex(e.slice(1,-1))};if(/^\\/.+\\/$/.test(e))return{type:\"pattern\",re:l.patternToRegex(e)};if(e===\"false\")return{type:\"exact\",value:false};if(e===\"true\")return{type:\"exact\",value:true};if(e===\"null\")return{type:\"exact\",value:null};if(e===\"undefined\")return{type:\"exact\",value:void 0}}));const f=l.initPattern(n,{canNegate:true});proxyApplyFn(e,(function(e){const{callArgs:n}=e;if(t===\"\"){l.uboLog(u,`Arguments:\\n${n.join(\"\\n\")}`);return e.reflect()}for(let t=0;t1?\"all\":\"\";if(matchesStackTraceFn(f,t)===false)return e.reflect()}if(r===\"debug\"){debugger;return e.reflect()}l.uboLog(u,`Suppressed:\\n${n.join(\"\\n\")}`);if(r===\"abort\")throw new ReferenceError}))}", "dependencies": [ "matches-stack-trace.fn", "proxy-apply.fn", "safe-self.fn" ], "requiresTrust": true }, { "name": "trusted-prevent-dom-bypass.js", "aliases": [], "body": "function trustedPreventDomBypass(e=\"\",n=\"\"){if(e===\"\")return;const t=safeSelf();const o=t.makeLogPrefix(\"trusted-prevent-dom-bypass\",e,n);proxyApplyFn(e,(function(e){const c=new Set(e.callArgs.filter((e=>e instanceof HTMLElement)));const i=e.reflect();if(c.length===0)return i;for(const e of c)try{if(`${e.contentWindow}`!==\"[object Window]\")continue;if(e.contentWindow.location.href!==\"about:blank\")if(e.contentWindow.location.href!==self.location.href)continue;if(n!==\"\"){let t=self,o=e.contentWindow;let c=n;for(;;){const e=c.indexOf(\".\");if(e===-1)break;const n=c.slice(0,e);t=t[n];o=o[n];c=c.slice(e+1)}o[c]=t[c]}else Object.defineProperty(e,\"contentWindow\",{value:self});t.uboLog(o,\"Bypass prevented\")}catch{}return i}))}", "dependencies": [ "proxy-apply.fn", "safe-self.fn" ], "requiresTrust": true }, { "name": "trusted-override-element-method.js", "aliases": [], "body": "function trustedOverrideElementMethod(e=\"\",r=\"\",t=\"\"){if(e===\"\")return;const n=safeSelf();const o=n.makeLogPrefix(\"trusted-override-element-method\",e,r,t);const f=n.getExtraArgs(Array.from(arguments),3);proxyApplyFn(e,(function(e){let i=r===\"\";if(i===false){const{thisArg:t}=e;try{i=t.closest(r)===t}catch{}}if(i===false)return e.reflect();n.uboLog(o,\"Overridden\");if(t===\"\")return;if(t===\"debug\"&&n.logLevel!==0)debugger;if(t===\"throw\")throw new ReferenceError;return validateConstantFn(true,t,f)}))}", "dependencies": [ "proxy-apply.fn", "safe-self.fn", "validate-constant.fn" ], "requiresTrust": true } ], "redirects": [ { "name": "1x1.gif", "aliases": [ "1x1-transparent.gif" ], "body": "R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==", "contentType": "image/gif;base64" }, { "name": "2x2.png", "aliases": [ "2x2-transparent.png" ], "body": "iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAC0lEQVQI12NgQAcAABIAAe+JVKQAAAAASUVORK5CYII=", "contentType": "image/png;base64" }, { "name": "3x2.png", "aliases": [ "3x2-transparent.png" ], "body": "iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAC0lEQVQI12NgwAUAABoAASRETuUAAAAASUVORK5CYII=", "contentType": "image/png;base64" }, { "name": "32x32.png", "aliases": [ "32x32-transparent.png" ], "body": "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGklEQVRYw+3BAQEAAACCIP+vbkhAAQAAAO8GECAAAZf3V9cAAAAASUVORK5CYII=", "contentType": "image/png;base64" }, { "name": "amazon_ads.js", "aliases": [ "amazon-adsystem.com/aax2/amzn_ads.js" ], "body": "(function(){\"use strict\";if(t)return;var e=window;var a=function(){}.bind();var t={appendScriptTag:a,appendTargetingToAdServerUrl:a,appendTargetingToQueryString:a,clearTargetingFromGPTAsync:a,doAllTasks:a,doGetAdsAsync:a,doTask:a,detectIframeAndGetURL:a,getAds:a,getAdsAsync:a,getAdForSlot:a,getAdsCallback:a,getDisplayAds:a,getDisplayAdsAsync:a,getDisplayAdsCallback:a,getKeys:a,getReferrerURL:a,getScriptSource:a,getTargeting:a,getTokens:a,getValidMilliseconds:a,getVideoAds:a,getVideoAdsAsync:a,getVideoAdsCallback:a,handleCallBack:a,hasAds:a,renderAd:a,saveAds:a,setTargeting:a,setTargetingForGPTAsync:a,setTargetingForGPTSync:a,tryGetAdsAsync:a,updateAds:a};e.amznads=t;e.amzn_ads=e.amzn_ads||a;e.aax_write=e.aax_write||a;e.aax_render_ad=e.aax_render_ad||a})();", "contentType": "application/javascript" }, { "name": "amazon_apstag.js", "aliases": [], "body": "(function(){\"use strict\";const t=window;const s=function(){}.bind();const n=t.apstag&&t.apstag._Q||[];const c={_Q:n,fetchBids:function(t,s){if(typeof s===\"function\")s([])},init:s,setDisplayBids:s,targetingKeys:s};t.apstag=c;n.push=function(t,s){try{switch(t){case\"f\":c.fetchBids(...s);break}}catch(t){console.trace(t)}};for(const t of n)n.push(t)})();", "contentType": "application/javascript" }, { "name": "ampproject_v0.js", "aliases": [ "ampproject.org/v0.js" ], "body": "(function(){\"use strict\";const t=document.head;if(!t)return;const n=document.createElement(\"style\");n.textContent=[\"body {\",\" animation: none !important;\",\" overflow: unset !important;\",\"}\"].join(\"\\n\");t.appendChild(n)})();", "contentType": "application/javascript" }, { "name": "adthrive_abd.js", "aliases": [], "body": "(()=>{const e=new Date(Date.now()+3e4);document.cookie=`__adblocker=false; expires=${e.toUTCString()}; path=/`})();", "contentType": "application/javascript" }, { "name": "chartbeat.js", "aliases": [ "static.chartbeat.com/chartbeat.js" ], "body": "(function(){\"use strict\";const t=function(){};window.pSUPERFLY={activity:t,virtualPage:t};for(const t of document.querySelectorAll(\"style[id^=chartbeat-flicker-control]\"))t.remove()})();", "contentType": "application/javascript" }, { "name": "click2load.html", "aliases": [], "body": "\n\n \n\n\nuBlock Origin Click-to-Load\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", "contentType": "text/html" }, { "name": "doubleclick_instream_ad_status.js", "aliases": [ "doubleclick.net/instream/ad_status.js" ], "body": "window.google_ad_status=1;", "contentType": "application/javascript" }, { "name": "empty", "aliases": [], "body": "", "contentType": "text/plain" }, { "name": "fingerprint2.js", "aliases": [], "body": "(function(){\"use strict\";const t=t=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16).slice(-t).padStart(t,\"0\");const n=`${t(8)}${t(8)}${t(8)}${t(8)}`;const e=function(){};e.get=function(t,n){if(!n)n=t;setTimeout((()=>{n([])}),1)};e.getPromise=function(){return Promise.resolve([])};e.getV18=function(){return n};e.x64hash128=function(){return n};e.prototype={get:function(t,e){if(!e)e=t;setTimeout((()=>{e(n,[])}),1)}};self.Fingerprint2=self.Fingerprint=e})();", "contentType": "application/javascript" }, { "name": "fingerprint3.js", "aliases": [], "body": "(function(){\"use strict\";const t=(()=>{let t=\"\";for(let r=0;r<8;r++)t+=(Math.random()*65536+4096|0).toString(16).slice(-4);return t})();const r=class{static hashComponents(){return t}static load(){return Promise.resolve(new r)}get(){return Promise.resolve({visitorId:t})}};window.FingerprintJS=r})();", "contentType": "application/javascript" }, { "name": "google-analytics_analytics.js", "aliases": [ "google-analytics.com/analytics.js", "googletagmanager_gtm.js", "googletagmanager.com/gtm.js" ], "body": "(function(){\"use strict\";const n=function(){};const t=function(){};const e=t.prototype;e.get=n;e.set=n;e.send=n;const c=window;const o=c.GoogleAnalyticsObject||\"ga\";const i=c[o];const f=function(){const n=arguments.length;if(n===0)return;const t=Array.from(arguments);let e;let c=t[n-1];if(c instanceof Object&&c.hitCallback instanceof Function)e=c.hitCallback;else if(c instanceof Function)e=()=>{c(f.create())};else{const n=t.indexOf(\"hitCallback\");if(n!==-1&&t[n+1]instanceof Function)e=t[n+1]}if(e instanceof Function===false)return;try{e()}catch(n){}};f.create=function(){return new t};f.getByName=function(){return new t};f.getAll=function(){return[new t]};f.remove=n;f.loaded=true;c[o]=f;const s=c.dataLayer;if(s instanceof Object){if(s.hide instanceof Object&&typeof s.hide.end===\"function\"){s.hide.end();s.hide.end=()=>{}}if(typeof s.push===\"function\"){const n=function(n){if(n instanceof Object===false)return;if(typeof n.eventCallback!==\"function\")return;setTimeout(n.eventCallback,1);n.eventCallback=()=>{}};s.push=new Proxy(s.push,{apply:function(t,e,c){n(c[0]);return Reflect.apply(t,e,c)}});if(Array.isArray(s)){const t=s.slice();for(const e of t)n(e)}}}if(i instanceof Function&&Array.isArray(i.q)){const n=i.q.slice();i.q.length=0;for(const t of n)f(...t)}})();", "contentType": "application/javascript" }, { "name": "google-analytics_cx_api.js", "aliases": [ "google-analytics.com/cx/api.js" ], "body": "(function(){\"use strict\";const o=function(){};window.cxApi={chooseVariation:function(){return 0},getChosenVariation:o,setAllowHash:o,setChosenVariation:o,setCookiePath:o,setDomainName:o}})();", "contentType": "application/javascript" }, { "name": "google-analytics_ga.js", "aliases": [ "google-analytics.com/ga.js" ], "body": "(function(){\"use strict\";const t=function(){};const e=function(){};e.prototype.Na=t;e.prototype.O=t;e.prototype.Sa=t;e.prototype.Ta=t;e.prototype.Va=t;e.prototype._createAsyncTracker=t;e.prototype._getAsyncTracker=t;e.prototype._getPlugin=t;e.prototype.push=function(t){if(typeof t===\"function\"){t();return}if(Array.isArray(t)===false)return;if(typeof t[0]===\"string\"&&/(^|\\.)_link$/.test(t[0])&&typeof t[1]===\"string\")try{window.location.assign(t[1])}catch(t){}if(t[0]===\"_set\"&&t[1]===\"hitCallback\"&&typeof t[2]===\"function\")t[2]()};const o=(function(){const e={};const o=[\"_addIgnoredOrganic _addIgnoredRef _addItem _addOrganic\",\"_addTrans _clearIgnoredOrganic _clearIgnoredRef _clearOrganic\",\"_cookiePathCopy _deleteCustomVar _getName _setAccount\",\"_getAccount _getClientInfo _getDetectFlash _getDetectTitle\",\"_getLinkerUrl _getLocalGifPath _getServiceMode _getVersion\",\"_getVisitorCustomVar _initData _linkByPost\",\"_setAllowAnchor _setAllowHash _setAllowLinker _setCampContentKey\",\"_setCampMediumKey _setCampNameKey _setCampNOKey _setCampSourceKey\",\"_setCampTermKey _setCampaignCookieTimeout _setCampaignTrack _setClientInfo\",\"_setCookiePath _setCookiePersistence _setCookieTimeout _setCustomVar\",\"_setDetectFlash _setDetectTitle _setDomainName _setLocalGifPath\",\"_setLocalRemoteServerMode _setLocalServerMode _setReferrerOverride _setRemoteServerMode\",\"_setSampleRate _setSessionTimeout _setSiteSpeedSampleRate _setSessionCookieTimeout\",\"_setVar _setVisitorCookieTimeout _trackEvent _trackPageLoadTime\",\"_trackPageview _trackSocial _trackTiming _trackTrans\",\"_visitCode\"].join(\" \").split(/\\s+/);for(const r of o)e[r]=t;e._getLinkerUrl=function(t){return t};e._link=function(t){if(typeof t!==\"string\")return;try{window.location.assign(t)}catch(t){}};return e})();const r=function(){};r.prototype._anonymizeIP=t;r.prototype._createTracker=t;r.prototype._forceSSL=t;r.prototype._getPlugin=t;r.prototype._getTracker=function(){return o};r.prototype._getTrackerByName=function(){return o};r.prototype._getTrackers=t;r.prototype.aa=t;r.prototype.ab=t;r.prototype.hb=t;r.prototype.la=t;r.prototype.oa=t;r.prototype.pa=t;r.prototype.u=t;const n=new r;window._gat=n;const a=new e;(function(){const t=window._gaq||[];if(Array.isArray(t))while(t[0])a.push(t.shift())})();window._gaq=a.qf=a})();", "contentType": "application/javascript" }, { "name": "google-analytics_inpage_linkid.js", "aliases": [ "google-analytics.com/inpage_linkid.js" ], "body": "(function(){\"use strict\";window._gaq=window._gaq||{push:function(){}}})();", "contentType": "application/javascript" }, { "name": "google-ima.js", "aliases": [ "google-ima3" ], "body": "\"use strict\";if(!window.google||!window.google.ima||!window.google.ima.VERSION){const e=\"3.517.2\";const t={};class r{constructor(e){const t=document.createElement(\"div\");t.style.setProperty(\"display\",\"none\",\"important\");t.style.setProperty(\"visibility\",\"collapse\",\"important\");e.appendChild(t)}destroy(){}initialize(){}}class s{constructor(){this.c=true;this.f={};this.i=false;this.l=\"\";this.p=\"\";this.r=0;this.t=\"\";this.v=\"\"}getCompanionBackfill(){}getDisableCustomPlaybackForIOS10Plus(){return this.i}getFeatureFlags(){return this.f}getLocale(){return this.l}getNumRedirects(){return this.r}getPlayerType(){return this.t}getPlayerVersion(){return this.v}getPpid(){return this.p}isCookiesEnabled(){return this.c}setAutoPlayAdBreaks(){}setCompanionBackfill(){}setCookiesEnabled(e){this.c=!!e}setDisableCustomPlaybackForIOS10Plus(e){this.i=!!e}setFeatureFlags(e){this.f=e}setLocale(e){this.l=e}setNumRedirects(e){this.r=e}setPlayerType(e){this.t=e}setPlayerVersion(e){this.v=e}setPpid(e){this.p=e}setSessionId(){}setVpaidAllowed(){}setVpaidMode(){}getDisableFlashAds(){}setDisableFlashAds(){}}s.CompanionBackfillMode={ALWAYS:\"always\",ON_MASTER_AD:\"on_master_ad\"};s.VpaidMode={DISABLED:0,ENABLED:1,INSECURE:2};class n{constructor(){this.listeners=new Map}_dispatch(e){let t=this.listeners.get(e.type);t=t?Array.from(t.values()):[];for(const r of t)try{r(e)}catch(e){console.error(e)}}addEventListener(e,t,r,s){if(!Array.isArray(e))e=[e];for(const r of e){if(!this.listeners.has(r))this.listeners.set(r,new Map);this.listeners.get(r).set(t,t.bind(s||this))}}removeEventListener(e,t){if(!Array.isArray(e))e=[e];for(const r of e){const e=this.listeners.get(r);if(e)e.delete(t)}}}class i extends n{constructor(){super();this.settings=new s}contentComplete(){}destroy(){}getSettings(){return this.settings}getVersion(){return e}requestAds(e,r){requestAnimationFrame((()=>{const{ADS_MANAGER_LOADED:s}=T.Type;const n=new t.AdsManagerLoadedEvent(s,e,r);this._dispatch(n)}));const s=new t.AdError(\"adPlayError\",1205,1205,\"The browser prevented playback initiated without user interaction.\",e,r);requestAnimationFrame((()=>{this._dispatch(new t.AdErrorEvent(s))}))}}class a extends n{constructor(){super();this.volume=1;this._enablePreloading=false}collapse(){}configureAdsManager(){}destroy(){}discardAdBreak(){}expand(){}focus(){}getAdSkippableState(){return false}getCuePoints(){return[0]}getCurrentAd(){return c}getCurrentAdCuePoints(){return[]}getRemainingTime(){return 0}getVolume(){return this.volume}init(){if(this._enablePreloading)this._dispatch(new t.AdEvent(p.Type.LOADED))}isCustomClickTrackingUsed(){return false}isCustomPlaybackUsed(){return false}pause(){}requestNextAdBreak(){}resize(){}resume(){}setVolume(e){this.volume=e}skip(){}start(){requestAnimationFrame((()=>{for(const e of[p.Type.LOADED,p.Type.STARTED,p.Type.CONTENT_PAUSE_REQUESTED,p.Type.AD_BUFFERING,p.Type.FIRST_QUARTILE,p.Type.MIDPOINT,p.Type.THIRD_QUARTILE,p.Type.COMPLETE,p.Type.ALL_ADS_COMPLETED,p.Type.CONTENT_RESUME_REQUESTED])try{this._dispatch(new t.AdEvent(e))}catch(e){console.error(e)}}))}stop(){}updateAdsRenderingSettings(){}}class o{}class d{setAdWillAutoPlay(){}setAdWillPlayMuted(){}setContinuousPlayback(){}}class u{getAdPosition(){return 1}getIsBumper(){return false}getMaxDuration(){return-1}getPodIndex(){return 1}getTimeOffset(){return 0}getTotalAds(){return 1}}class l{constructor(){this._pi=new u}getAdId(){return\"\"}getAdPodInfo(){return this._pi}getAdSystem(){return\"\"}getAdvertiserName(){return\"\"}getApiFramework(){return null}getCompanionAds(){return[]}getContentType(){return\"\"}getCreativeAdId(){return\"\"}getCreativeId(){return\"\"}getDealId(){return\"\"}getDescription(){return\"\"}getDuration(){return 8.5}getHeight(){return 0}getMediaUrl(){return null}getMinSuggestedDuration(){return-2}getSkipTimeOffset(){return-1}getSurveyUrl(){return null}getTitle(){return\"\"}getTraffickingParameters(){return{}}getTraffickingParametersString(){return\"\"}getUiElements(){return[\"\"]}getUniversalAdIdRegistry(){return\"unknown\"}getUniversalAdIds(){return[new R]}getUniversalAdIdValue(){return\"unknown\"}getVastMediaBitrate(){return 0}getVastMediaHeight(){return 0}getVastMediaWidth(){return 0}getWidth(){return 0}getWrapperAdIds(){return[\"\"]}getWrapperAdSystems(){return[\"\"]}getWrapperCreativeIds(){return[\"\"]}isLinear(){return true}isSkippable(){return true}}class g{getAdSlotId(){return\"\"}getContent(){return\"\"}getContentType(){return\"\"}getHeight(){return 1}getWidth(){return 1}}class A{constructor(e,t,r,s,n,i){this.errorCode=t;this.message=s;this.type=e;this.adsRequest=n;this.userRequestContext=i;this.vastErrorCode=r}getErrorCode(){return this.errorCode}getInnerError(){return null}getMessage(){return this.message}getType(){return this.type}getVastErrorCode(){return this.vastErrorCode}toString(){return`AdError ${this.errorCode}: ${this.message}`}}A.ErrorCode={};A.Type={};const E=()=>{try{for(const e of Object.values(window.vidible._getContexts())){const t=e.getPlayer();if(!t)continue;const r=t.div;if(!r)continue;if(r.innerHTML.includes(\"www.engadget.com\"))return true}}catch(e){}return false};const c=E()?void 0:new l;class p{constructor(e){this.type=e}getAd(){return c}getAdData(){return{}}}p.Type={AD_BREAK_READY:\"adBreakReady\",AD_BUFFERING:\"adBuffering\",AD_CAN_PLAY:\"adCanPlay\",AD_METADATA:\"adMetadata\",AD_PROGRESS:\"adProgress\",ALL_ADS_COMPLETED:\"allAdsCompleted\",CLICK:\"click\",COMPLETE:\"complete\",CONTENT_PAUSE_REQUESTED:\"contentPauseRequested\",CONTENT_RESUME_REQUESTED:\"contentResumeRequested\",DURATION_CHANGE:\"durationChange\",EXPANDED_CHANGED:\"expandedChanged\",FIRST_QUARTILE:\"firstQuartile\",IMPRESSION:\"impression\",INTERACTION:\"interaction\",LINEAR_CHANGE:\"linearChange\",LINEAR_CHANGED:\"linearChanged\",LOADED:\"loaded\",LOG:\"log\",MIDPOINT:\"midpoint\",PAUSED:\"pause\",RESUMED:\"resume\",SKIPPABLE_STATE_CHANGED:\"skippableStateChanged\",SKIPPED:\"skip\",STARTED:\"start\",THIRD_QUARTILE:\"thirdQuartile\",USER_CLOSE:\"userClose\",VIDEO_CLICKED:\"videoClicked\",VIDEO_ICON_CLICKED:\"videoIconClicked\",VIEWABLE_IMPRESSION:\"viewable_impression\",VOLUME_CHANGED:\"volumeChange\",VOLUME_MUTED:\"mute\"};class h{constructor(e){this.type=\"adError\";this.error=e}getError(){return this.error}getUserRequestContext(){return this.error?.userRequestContext||{}}}h.Type={AD_ERROR:\"adError\"};const C=new a;class T{constructor(e,t,r){this.type=e;this.adsRequest=t;this.userRequestContext=r}getAdsManager(e,t){if(t&&t.enablePreloading)C._enablePreloading=true;return C}getUserRequestContext(){return this.userRequestContext||{}}}T.Type={ADS_MANAGER_LOADED:\"adsManagerLoaded\"};class I{}I.Type={CUSTOM_CONTENT_LOADED:\"deprecated-event\"};class D{}D.CreativeType={ALL:\"All\",FLASH:\"Flash\",IMAGE:\"Image\"};D.ResourceType={ALL:\"All\",HTML:\"Html\",IFRAME:\"IFrame\",STATIC:\"Static\"};D.SizeCriteria={IGNORE:\"IgnoreSize\",SELECT_EXACT_MATCH:\"SelectExactMatch\",SELECT_NEAR_MATCH:\"SelectNearMatch\"};class m{getCuePoints(){return[]}}class y{}class R{getAdIdRegistry(){return\"\"}getAdIdValue(){return\"\"}}Object.assign(t,{AdCuePoints:m,AdDisplayContainer:r,AdError:A,AdErrorEvent:h,AdEvent:p,AdPodInfo:u,AdProgressData:y,AdsLoader:i,AdsManager:C,AdsManagerLoadedEvent:T,AdsRenderingSettings:o,AdsRequest:d,CompanionAd:g,CompanionAdSelectionSettings:D,CustomContentLoadedEvent:I,gptProxyInstance:{},ImaSdkSettings:s,OmidAccessMode:{DOMAIN:\"domain\",FULL:\"full\",LIMITED:\"limited\"},OmidVerificationVendor:{1:\"OTHER\",2:\"GOOGLE\",GOOGLE:2,OTHER:1},settings:new s,UiElements:{AD_ATTRIBUTION:\"adAttribution\",COUNTDOWN:\"countdown\"},UniversalAdIdInfo:R,VERSION:e,ViewMode:{FULLSCREEN:\"fullscreen\",NORMAL:\"normal\"}});if(!window.google)window.google={};window.google.ima=t}\n/*\nad.doubleclick.net bid.g.doubleclick.net ggpht.com google.co.uk google.com\ngoogleads.g.doubleclick.net googleads4.g.doubleclick.net googleadservices.com\ngooglesyndication.com googleusercontent.com gstatic.com gvt1.com prod.google.com\npubads.g.doubleclick.net s0.2mdn.net static.doubleclick.net\nsurveys.g.doubleclick.net youtube.com ytimg.com\n*/", "contentType": "application/javascript" }, { "name": "googlesyndication_adsbygoogle.js", "aliases": [ "googlesyndication.com/adsbygoogle.js", "googlesyndication-adsbygoogle" ], "body": "(function(){\"use strict\";const e=()=>{window.adsbygoogle={loaded:true,push:function(){}};const e=document.querySelectorAll(\".adsbygoogle\");const t=\"height:1px!important;max-height:1px!important;max-width:1px!important;width:1px!important;\";for(let o=0;o>4\",\"sessionStorage\",\"clientWidth\",\"localStorage\",\"Math\",\"random\"]];const t=function(t){for(let n=0;n=.8)return true}return false};window.eval=new Proxy(window.eval,{apply:function(e,n,o){const r=o[0];if(typeof r!==\"string\"||!t(r))return e.apply(n,o);if(document.body)document.body.style.removeProperty(\"visibility\");let i=document.getElementById(\"babasbmsgx\");if(i)i.parentNode.removeChild(i)}});window.setTimeout=new Proxy(window.setTimeout,{apply:function(e,t,n){const o=n[0];if(typeof o!==\"string\"||/\\.bab_elementid.$/.test(o)===false)return e.apply(t,n)}})})();", "contentType": "application/javascript" }, { "name": "nobab2.js", "aliases": [], "body": "(function(){\"use strict\";const t=document.currentScript;if(t===null)return;const n=t.src;if(typeof n!==\"string\")return;const e=new RegExp(\"^https?://[\\\\w-]+\\\\.(\"+[\"adclixx\\\\.net\",\"adnetasia\\\\.com\",\"adtrackers\\\\.net\",\"bannertrack\\\\.net\"].join(\"|\")+\")/.\");if(e.test(n)===false)return;window.nH7eXzOsG=858})();", "contentType": "application/javascript" }, { "name": "noeval.js", "aliases": [], "body": "(function(){\"use strict\";const n=console.log.bind(console);window.eval=new Proxy(window.eval,{apply:function(o,e,t){n(`Document tried to eval... ${t[0]}\\n`)}})})();", "contentType": "application/javascript" }, { "name": "noeval-silent.js", "aliases": [ "silent-noeval.js" ], "body": "(function(){\"use strict\";window.eval=new Proxy(window.eval,{apply:function(){}})})();", "contentType": "application/javascript" }, { "name": "nofab.js", "aliases": [ "fuckadblock.js-3.2.0" ], "body": "(function(){\"use strict\";const o=function(){};const t=function(){};t.prototype.check=o;t.prototype.clearEvent=o;t.prototype.emitEvent=o;t.prototype.on=function(o,t){if(!o)t();return this};t.prototype.onDetected=function(){return this};t.prototype.onNotDetected=function(o){o();return this};t.prototype.setOption=o;t.prototype.options={set:o,get:o};const e=new t;const n={get:function(){return t},set:function(){}};const c={get:function(){return e},set:function(){}};if(window.hasOwnProperty(\"FuckAdBlock\"))window.FuckAdBlock=t;else Object.defineProperty(window,\"FuckAdBlock\",n);if(window.hasOwnProperty(\"BlockAdBlock\"))window.BlockAdBlock=t;else Object.defineProperty(window,\"BlockAdBlock\",n);if(window.hasOwnProperty(\"SniffAdBlock\"))window.SniffAdBlock=t;else Object.defineProperty(window,\"SniffAdBlock\",n);if(window.hasOwnProperty(\"fuckAdBlock\"))window.fuckAdBlock=e;else Object.defineProperty(window,\"fuckAdBlock\",c);if(window.hasOwnProperty(\"blockAdBlock\"))window.blockAdBlock=e;else Object.defineProperty(window,\"blockAdBlock\",c);if(window.hasOwnProperty(\"sniffAdBlock\"))window.sniffAdBlock=e;else Object.defineProperty(window,\"sniffAdBlock\",c)})();", "contentType": "application/javascript" }, { "name": "noop-0.1s.mp3", "aliases": [ "noopmp3-0.1s", "abp-resource:blank-mp3" ], "body": "SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU2LjQwLjEwMQAAAAAAAAAAAAAA//tUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAAGAAADAABgYGBgYGBgYGBgYGBgYGBggICAgICAgICAgICAgICAgICgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4P////////////////////8AAAAATGF2YzU2LjYwAAAAAAAAAAAAAAAAJAAAAAAAAAAAAwDNZKlY//sUZAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZB4P8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZDwP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZFoP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZHgP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZJYP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", "contentType": "audio/mp3;base64" }, { "name": "noop-0.5s.mp3", "aliases": [], "body": "SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA//tUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAAWAAAJAAAgICAgKioqKio1NTU1QEBAQEBKSkpKVVVVVVVgYGBgampqamp1dXV1gICAgICKioqKlZWVlZWgoKCgoKqqqqq1tbW1tcDAwMDKysrKytXV1dXg4ODg4Orq6ur19fX19f////8AAAAATGF2YzU4LjU0AAAAAAAAAAAAAAAAJAMAAAAAAAAACQDI0dkC//sUZAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZB4P8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZDwP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZFoP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZHgP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZJYP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZLQP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZNIP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", "contentType": "audio/mp3;base64" }, { "name": "noop-1s.mp4", "aliases": [ "noopmp4-1s", "abp-resource:blank-mp4" ], "body": "AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAAGF21kYXTeBAAAbGliZmFhYyAxLjI4AABCAJMgBDIARwAAArEGBf//rdxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxNDIgcjIgOTU2YzhkOCAtIEguMjY0L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMTQgLSBodHRwOi8vd3d3LnZpZGVvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0wIHJlZj0zIGRlYmxvY2s9MTowOjAgYW5hbHlzZT0weDE6MHgxMTEgbWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC4wMCBtaXhlZF9yZWY9MSBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MSB0cmVsbGlzPTEgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LTIgdGhyZWFkcz02IGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTI1MCBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCB2YnZfbWF4cmF0ZT03NjggdmJ2X2J1ZnNpemU9MzAwMCBjcmZfbWF4PTAuMCBuYWxfaHJkPW5vbmUgZmlsbGVyPTAgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAAFZliIQL8mKAAKvMnJycnJycnJycnXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXiEASZACGQAjgCEASZACGQAjgAAAAAdBmjgX4GSAIQBJkAIZACOAAAAAB0GaVAX4GSAhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGagC/AySEASZACGQAjgAAAAAZBmqAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZrAL8DJIQBJkAIZACOAAAAABkGa4C/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmwAvwMkhAEmQAhkAI4AAAAAGQZsgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGbQC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm2AvwMkhAEmQAhkAI4AAAAAGQZuAL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGboC/AySEASZACGQAjgAAAAAZBm8AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZvgL8DJIQBJkAIZACOAAAAABkGaAC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmiAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpAL8DJIQBJkAIZACOAAAAABkGaYC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmoAvwMkhAEmQAhkAI4AAAAAGQZqgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGawC/AySEASZACGQAjgAAAAAZBmuAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZsAL8DJIQBJkAIZACOAAAAABkGbIC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm0AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZtgL8DJIQBJkAIZACOAAAAABkGbgCvAySEASZACGQAjgCEASZACGQAjgAAAAAZBm6AnwMkhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AAAAhubW9vdgAAAGxtdmhkAAAAAAAAAAAAAAAAAAAD6AAABDcAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAzB0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAABAAAAAAAAA+kAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAALAAAACQAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAPpAAAAAAABAAAAAAKobWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAB1MAAAdU5VxAAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAACU21pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAhNzdGJsAAAAr3N0c2QAAAAAAAAAAQAAAJ9hdmMxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAALAAkABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAALWF2Y0MBQsAN/+EAFWdCwA3ZAsTsBEAAAPpAADqYA8UKkgEABWjLg8sgAAAAHHV1aWRraEDyXyRPxbo5pRvPAyPzAAAAAAAAABhzdHRzAAAAAAAAAAEAAAAeAAAD6QAAABRzdHNzAAAAAAAAAAEAAAABAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAAIxzdHN6AAAAAAAAAAAAAAAeAAADDwAAAAsAAAALAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAAiHN0Y28AAAAAAAAAHgAAAEYAAANnAAADewAAA5gAAAO0AAADxwAAA+MAAAP2AAAEEgAABCUAAARBAAAEXQAABHAAAASMAAAEnwAABLsAAATOAAAE6gAABQYAAAUZAAAFNQAABUgAAAVkAAAFdwAABZMAAAWmAAAFwgAABd4AAAXxAAAGDQAABGh0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAACAAAAAAAABDcAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAQkAAADcAABAAAAAAPgbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAC7gAAAykBVxAAAAAAALWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABTb3VuZEhhbmRsZXIAAAADi21pbmYAAAAQc21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAADT3N0YmwAAABnc3RzZAAAAAAAAAABAAAAV21wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAAC7gAAAAAAAM2VzZHMAAAAAA4CAgCIAAgAEgICAFEAVBbjYAAu4AAAADcoFgICAAhGQBoCAgAECAAAAIHN0dHMAAAAAAAAAAgAAADIAAAQAAAAAAQAAAkAAAAFUc3RzYwAAAAAAAAAbAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAwAAAAEAAAABAAAABAAAAAIAAAABAAAABgAAAAEAAAABAAAABwAAAAIAAAABAAAACAAAAAEAAAABAAAACQAAAAIAAAABAAAACgAAAAEAAAABAAAACwAAAAIAAAABAAAADQAAAAEAAAABAAAADgAAAAIAAAABAAAADwAAAAEAAAABAAAAEAAAAAIAAAABAAAAEQAAAAEAAAABAAAAEgAAAAIAAAABAAAAFAAAAAEAAAABAAAAFQAAAAIAAAABAAAAFgAAAAEAAAABAAAAFwAAAAIAAAABAAAAGAAAAAEAAAABAAAAGQAAAAIAAAABAAAAGgAAAAEAAAABAAAAGwAAAAIAAAABAAAAHQAAAAEAAAABAAAAHgAAAAIAAAABAAAAHwAAAAQAAAABAAAA4HN0c3oAAAAAAAAAAAAAADMAAAAaAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAACMc3RjbwAAAAAAAAAfAAAALAAAA1UAAANyAAADhgAAA6IAAAO+AAAD0QAAA+0AAAQAAAAEHAAABC8AAARLAAAEZwAABHoAAASWAAAEqQAABMUAAATYAAAE9AAABRAAAAUjAAAFPwAABVIAAAVuAAAFgQAABZ0AAAWwAAAFzAAABegAAAX7AAAGFwAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTUuMzMuMTAw", "contentType": "video/mp4;base64" }, { "name": "noop.css", "aliases": [], "body": "/* */", "contentType": "text/plain" }, { "name": "noop.html", "aliases": [ "noopframe" ], "body": "\n\n \n \n", "contentType": "text/html" }, { "name": "noop.js", "aliases": [ "noopjs", "abp-resource:blank-js" ], "body": "(function(){\"use strict\"})();", "contentType": "application/javascript" }, { "name": "noop.json", "aliases": [ "noopjson" ], "body": "{}", "contentType": "text/plain" }, { "name": "noop.txt", "aliases": [ "nooptext" ], "body": "", "contentType": "text/plain" }, { "name": "noop-vast2.xml", "aliases": [ "noopvast-2.0" ], "body": "", "contentType": "text/plain" }, { "name": "noop-vast3.xml", "aliases": [ "noopvast-3.0" ], "body": "", "contentType": "text/plain" }, { "name": "noop-vast4.xml", "aliases": [ "noopvast-4.0" ], "body": "", "contentType": "text/plain" }, { "name": "noop-vmap1.xml", "aliases": [ "noop-vmap1.0.xml", "noopvmap-1.0" ], "body": "", "contentType": "text/plain" }, { "name": "outbrain-widget.js", "aliases": [ "widgets.outbrain.com/outbrain.js" ], "body": "(function(){\"use strict\";const e=function(){};const r={};const c=[\"callClick\",\"callLoadMore\",\"callRecs\",\"callUserZapping\",\"callWhatIs\",\"cancelRecommendation\",\"cancelRecs\",\"closeCard\",\"closeModal\",\"closeTbx\",\"errorInjectionHandler\",\"getCountOfRecs\",\"getStat\",\"imageError\",\"manualVideoClicked\",\"onOdbReturn\",\"onVideoClick\",\"pagerLoad\",\"recClicked\",\"refreshSpecificWidget\",\"renderSpaWidgets\",\"refreshWidget\",\"reloadWidget\",\"researchWidget\",\"returnedError\",\"returnedHtmlData\",\"returnedIrdData\",\"returnedJsonData\",\"scrollLoad\",\"showDescription\",\"showRecInIframe\",\"userZappingMessage\",\"zappingFormAction\"];r.extern={video:{getVideoRecs:e,videoClicked:e}};c.forEach((function(c){r.extern[c]=e}));window.OBR=window.OBR||r})();", "contentType": "application/javascript" }, { "name": "popads.js", "aliases": [ "popads.net.js", "prevent-popads-net.js" ], "body": "(function(){\"use strict\";const n=String.fromCharCode(Date.now()%26+97)+Math.floor(Math.random()*982451653+982451653).toString(36);const o=window.onerror;window.onerror=function(e,t,r,i,d){if(typeof e===\"string\"&&e.indexOf(n)!==-1)return true;if(o instanceof Function)return o(e,t,r,i,d)}.bind();const e=function(){throw new ReferenceError(n)};delete window.PopAds;delete window.popns;Object.defineProperties(window,{PopAds:{set:e},popns:{set:e}})})();", "contentType": "application/javascript" }, { "name": "popads-dummy.js", "aliases": [], "body": "(function(){\"use strict\";delete window.PopAds;delete window.popns;Object.defineProperties(window,{PopAds:{value:{}},popns:{value:{}}})})();", "contentType": "application/javascript" }, { "name": "prebid-ads.js", "aliases": [], "body": "(function(){\"use strict\";window.canRunAds=true;window.isAdBlockActive=false})();", "contentType": "application/javascript" }, { "name": "scorecardresearch_beacon.js", "aliases": [ "scorecardresearch.com/beacon.js" ], "body": "(function(){\"use strict\";window.COMSCORE={purge:function(){window._comscore=[]},beacon:function(){}}})();", "contentType": "application/javascript" }, { "name": "sensors-analytics.js", "aliases": [], "body": "(function(){\"use strict\";const t=function(){};window.sensorsDataAnalytic201505={init:t,quick:t,register:t,track:t}})();", "contentType": "application/javascript" }, { "name": "MIME_TYPE_STUB.flv", "aliases": [], "body": "RkxWAQEAAAAJAAAAABIAALgAAAAAAAAAAgAKb25NZXRhRGF0YQgAAAAIAAhkdXJhdGlvbgAAAAAAAAAAAAAFd2lkdGgAP/AAAAAAAAAABmhlaWdodAA/8AAAAAAAAAANdmlkZW9kYXRhcmF0ZQBAaGoAAAAAAAAJZnJhbWVyYXRlAEBZAAAAAAAAAAx2aWRlb2NvZGVjaWQAQAAAAAAAAAAAB2VuY29kZXICAA1MYXZmNTcuNDEuMTAwAAhmaWxlc2l6ZQBAaoAAAAAAAAAACQAAAMM=", "contentType": "video/flv;base64;base64" }, { "name": "MIME_TYPE_STUB.gif", "aliases": [], "body": "R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7", "contentType": "image/gif;base64;base64" }, { "name": "MIME_TYPE_STUB.html", "aliases": [], "body": "", "contentType": "text/html" }, { "name": "MIME_TYPE_STUB.ico", "aliases": [], "body": "AAABAAEAAQEAAAEAGAAwAAAAFgAAACgAAAABAAAAAgAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAA==", "contentType": "image/vnd.microsoft.icon;base64;base64" }, { "name": "MIME_TYPE_STUB.jpg", "aliases": [], "body": "/9j/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/yQALCAABAAEBAREA/8wABgAQEAX/2gAIAQEAAD8A0s8g/9k=", "contentType": "image/jpeg;base64;base64" }, { "name": "MIME_TYPE_STUB.js", "aliases": [], "body": "", "contentType": "application/javascript" }, { "name": "MIME_TYPE_STUB.json", "aliases": [], "body": "0", "contentType": "application/json" }, { "name": "MIME_TYPE_STUB.mp3", "aliases": [], "body": "/+MYxAAAAANIAAAAAExBTUUzLjk4LjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "contentType": "audio/mpeg;base64;base64" }, { "name": "MIME_TYPE_STUB.mp4", "aliases": [], "body": "AAAAHGZ0eXBpc29tAAACAGlzb21pc28ybXA0MQAAAAhmcmVlAAAC721kYXQhEAUgpBv/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3pwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcCEQBSCkG//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADengAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAsJtb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAALwABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAB7HRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAIAAAAAAAAALwAAAAAAAAAAAAAAAQEAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAAC8AAAAAAAEAAAAAAWRtZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAAKxEAAAIAFXEAAAAAAAtaGRscgAAAAAAAAAAc291bgAAAAAAAAAAAAAAAFNvdW5kSGFuZGxlcgAAAAEPbWluZgAAABBzbWhkAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAADTc3RibAAAAGdzdHNkAAAAAAAAAAEAAABXbXA0YQAAAAAAAAABAAAAAAAAAAAAAgAQAAAAAKxEAAAAAAAzZXNkcwAAAAADgICAIgACAASAgIAUQBUAAAAAAfQAAAHz+QWAgIACEhAGgICAAQIAAAAYc3R0cwAAAAAAAAABAAAAAgAABAAAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAIAAAABAAAAHHN0c3oAAAAAAAAAAAAAAAIAAAFzAAABdAAAABRzdGNvAAAAAAAAAAEAAAAsAAAAYnVkdGEAAABabWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAAtaWxzdAAAACWpdG9vAAAAHWRhdGEAAAABAAAAAExhdmY1Ni40MC4xMDE=", "contentType": "video/mp4;base64;base64" }, { "name": "MIME_TYPE_STUB.pdf", "aliases": [], "body": "JVBERi0xLgoxIDAgb2JqPDwvUGFnZXMgMiAwIFI+PmVuZG9iagoyIDAgb2JqPDwvS2lkc1szIDAgUl0vQ291bnQgMT4+ZW5kb2JqCjMgMCBvYmo8PC9QYXJlbnQgMiAwIFI+PmVuZG9iagp0cmFpbGVyIDw8L1Jvb3QgMSAwIFI+Pg==", "contentType": "application/pdf;base64;base64" }, { "name": "MIME_TYPE_STUB.png", "aliases": [], "body": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg==", "contentType": "image/png;base64;base64" }, { "name": "MIME_TYPE_STUB.svg", "aliases": [], "body": "https://raw.githubusercontent.com/mathiasbynens/small/master/svg.svg", "contentType": "image/svg+xml" }, { "name": "MIME_TYPE_STUB.txt", "aliases": [], "body": "", "contentType": "text/plain" }, { "name": "MIME_TYPE_STUB.wav", "aliases": [], "body": "UklGRiQAAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQAAAAA=", "contentType": "audio/wav;base64;base64" }, { "name": "MIME_TYPE_STUB.webm", "aliases": [], "body": "GkXfo0AgQoaBAUL3gQFC8oEEQvOBCEKCQAR3ZWJtQoeBAkKFgQIYU4BnQI0VSalmQCgq17FAAw9CQE2AQAZ3aGFtbXlXQUAGd2hhbW15RIlACECPQAAAAAAAFlSua0AxrkAu14EBY8WBAZyBACK1nEADdW5khkAFVl9WUDglhohAA1ZQOIOBAeBABrCBCLqBCB9DtnVAIueBAKNAHIEAAIAwAQCdASoIAAgAAUAmJaQAA3AA/vz0AAA=", "contentType": "video/webm;base64;base64" }, { "name": "MIME_TYPE_STUB.webp", "aliases": [], "body": "UklGRhIAAABXRUJQVlA4TAYAAAAvQWxvAGs=", "contentType": "image/webp;base64;base64" }, { "name": "MIME_TYPE_STUB.wmv", "aliases": [], "body": "MCaydY5mzxGm2QCqAGLObOUBAAAAAAAABQAAAAECodyrjEepzxGO5ADADCBTZWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcCAAAAAAAAAIA+1d6xnQEAAAAAAAAAAMAF2QEAAAAAAAAAAAAAAAAcDAAAAAAAAAIAAACADAAAgAwAAEANAwC1A79fLqnPEY7jAMAMIFNlLgAAAAAAAAAR0tOruqnPEY7mAMAMIFNlBgAAAAAAQKTQ0gfj0hGX8ACgyV6oUGQAAAAAAAAAAQAoAFcATQAvAEUAbgBjAG8AZABpAG4AZwBTAGUAdAB0AGkAbgBnAHMAAAAAABwATABhAHYAZgA1ADcALgA0ADEALgAxADAAMAAAAJEH3Le3qc8RjuYAwAwgU2WBAAAAAAAAAMDvGbxNW88RqP0AgF9cRCsAV/sgVVvPEaj9AIBfXEQrAAAAAAAAAAAzAAAAAAAAAAEAAAAAAAEAAAABAAAAAigAKAAAAAEAAAABAAAAAQAYAE1QNDMDAAAAAAAAAAAAAAAAAAAAAAAAAEBS0YYdMdARo6QAoMkDSPZMAAAAAAAAAEFS0YYdMdARo6QAoMkDSPYBAAAAAQAKAG0AcwBtAHAAZQBnADQAdgAzAAAAAAAEAE1QNDM2JrJ1jmbPEabZAKoAYs5sMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQ==", "contentType": "video/wmv;base64;base64" } ] }