! Homepage: https://github.com/AdguardTeam/AdGuardFilters ! License: https://github.com/AdguardTeam/AdguardFilters/blob/master/LICENSE ! !-------------------------------------------------------------------! !------------------ General JS API ---------------------------------! !-------------------------------------------------------------------! ! JS API START #%#var AG_onLoad=function(func){if(document.readyState==="complete"||document.readyState==="interactive")func();else if(document.addEventListener)document.addEventListener("DOMContentLoaded",func);else if(document.attachEvent)document.attachEvent("DOMContentLoaded",func)}; #%#var AG_removeElementById = function(id) { var element = document.getElementById(id); if (element && element.parentNode) { element.parentNode.removeChild(element); }}; #%#var AG_removeElementBySelector = function(selector) { if (!document.querySelectorAll) { return; } var nodes = document.querySelectorAll(selector); if (nodes) { for (var i = 0; i < nodes.length; i++) { if (nodes[i] && nodes[i].parentNode) { nodes[i].parentNode.removeChild(nodes[i]); } } } }; #%#var AG_each = function(selector, fn) { if (!document.querySelectorAll) return; var elements = document.querySelectorAll(selector); for (var i = 0; i < elements.length; i++) { fn(elements[i]); }; }; #%#var AG_removeParent = function(el, fn) { while (el && el.parentNode) { if (fn(el)) { el.parentNode.removeChild(el); return; } el = el.parentNode; } }; ! ! AG_removeCookie ! Examples: AG_removeCookie('/REGEX/') or AG_removeCookie('part of the cookie name') ! #%#var AG_removeCookie=function(a){var e=/./;/^\/.+\/$/.test(a)?e=new RegExp(a.slice(1,-1)):""!==a&&(e=new RegExp(a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")));a=function(){for(var a=document.cookie.split(";"),g=a.length;g--;){cookieStr=a[g];var d=cookieStr.indexOf("=");if(-1!==d&&(d=cookieStr.slice(0,d).trim(),e.test(d)))for(var h=document.location.hostname.split("."),f=0;f element matches specified regular expression. ! Based on AG_defineProperty (https://github.com/AdguardTeam/deep-override) ! ! Examples: ! AG_abortInlineScript(/zfgloadedpopup|zfgloadedpushopt/, 'String.fromCharCode'); ! ! @param regex regular expression that the inline script contents must match ! @param property property or properties chain ! @param debug optional, if true - we will print warning when script is aborted. ! #%#var AG_abortInlineScript=function(g,b,c){var d=function(){if("currentScript"in document)return document.currentScript;var a=document.getElementsByTagName("script");return a[a.length-1]},e=Math.random().toString(36).substr(2,8),h=d();AG_defineProperty(b,{beforeGet:function(){var a=d();if(a instanceof HTMLScriptElement&&a!==h&&""===a.src&&g.test(a.textContent))throw c&&console.warn("AdGuard aborted execution of an inline script"),new ReferenceError(e);}});var f=window.onerror;window.onerror=function(a){if("string"===typeof a&&-1!==a.indexOf(e))return c&&console.warn("AdGuard has caught window.onerror: "+b),!0;if(f instanceof Function)return f.apply(this,arguments)}}; ! ! AG_setConstant('property.chain', 'true') // defines boolean (true), same for false; ! AG_setConstant('property.chain', '123') // defines Number 123; ! AG_setConstant('property.chain', 'noopFunc') // defines function(){}; ! AG_setConstant('property.chain', 'trueFunc') // defines function(){return true}; ! AG_setConstant('property.chain', 'falseFunc') // defines function(){return false}; ! #%#var AG_setConstant=function(e,a){if("undefined"===a)a=void 0;else if("false"===a)a=!1;else if("true"===a)a=!0;else if("noopFunc"===a)a=function(){};else if("trueFunc"===a)a=function(){return!0};else if("falseFunc"===a)a=function(){return!1};else if(/^\d+$/.test(a)){if(a=parseFloat(a),isNaN(a)||32767 article[id][class][style*="z-index: 1;"] !#endif ! ! Filters for adguard without safari !#if (adguard && !adguard_ext_safari) ||chrome.test.filter.com^$third-party !#endif !-------------------------------------------------------------------! !------- Experimental rules for Mobile ads filter-------------------! !-------------------------------------------------------------------! ! ! Mobile advertising networks known rotator domains ! Used to show ads in mobile apps and websites ! reddit.com##.CommentsPage > article[id][class][style*="z-index: 1;"] !-------------------------------------------------------------------! !---------------------- Dangerous rules ----------------------------! !-------------------------------------------------------------------! !####################################################### !######### The list of dangerous rules ################# !####################################################### ! !################## For advertisement ################## ! ! https://github.com/AdguardTeam/AdguardFilters/issues/64754 ||video-weaver.*.hls.ttvnw.net/v*/playlist/*.m3u8$replace=/#EXT-X-DATERANGE:ID="stitched-ad[\s\S]*(#EXT-X-PROGRAM-DATE-TIME)(?![\s\S]*?#EXTINF:\d\.\d+\,live)[\s\S]*|(#EXT-X-DATERANGE:ID="stitched-ad[\s\S]*?(#EXT-X-PROGRAM-DATE-TIME)([\s\S]*?(#EXTINF:\d\.\d+\,live)))/\$5/ ! https://github.com/AdguardTeam/AdguardFilters/issues/63128 tumblr.com###base-container div[style="height:0;display:flex;flex-direction:column;overflow:hidden"] + div:not([class]):not([id]) > div[class]:not([data-id]):not([class*=" "]) ! !################## For tracking ################## ||uim.tifbs.net/js/2048.js