(function () {          var pb_blacklist = [];          var pb_whitelist = ["pan.baidu.com","www.kxdao.com","asia.flow.microsoft.com","docs.qq.com","zh.savefrom.net","www.gebi1.com","www.sqgj.gov.cn","livewhutedu-my.sharepoint.com","livewhutedu-my.sharepoint.com","www.clipconverter.cc","settings.shuax.com","www.right.com.cn","192.168.1.10","pub.alimama.com","carrot.ctfile.com","youku.com","qq.com","www.y2mate.com","engage.wixapps.net","linkedin.com","google","www.gmail.com","www.pinterest.com","www.youtube.com","www.facebook.com","search.yahoo.com","chrome://newtab","www.food.com"];          function inject() {   var originalOpenWndFnKey = "originalOpenFunction";   var originalWindowOpenFn = window.open;   var originalCreateElementFn = document.createElement;   var originalAppendChildFn = HTMLElement.prototype.appendChild;   var originalCreateEventFn = document.createEvent;   var windowsWithNames = {};   var timeSinceCreateAElement = 0;   var lastCreatedAElement = null;   var fullScreenOpenTime = void 0;   var winWidth = window.innerWidth;   var winHeight = window.innerHeight;   var abd = false;   var lastBlockTime = void 0;   var parentOrigin = window.location != window.parent.location ? document.referrer || window.parent.location || '*' : document.location;   var parentRef = window.parent;   //window[originalOpenWndFnKey] = window.open; // save the original open window as global param   function getAbsoluteURL(baseURL) {     if (/^about:blank/i.test(baseURL)) {       return baseURL;     }     if (/^(https?:)?///.test(baseURL)) {       return baseURL;     }     baseURL = location.origin + (!/^//.test(baseURL) ? '/' : '') + baseURL;     return baseURL;   }   function newWindowOpenFn() {     var openWndArguments = arguments;     var useOriginalOpenWnd = true;     var generatedWindow = null;     function getWindowName(openWndArguments) {       var windowName = openWndArguments[1];       if (windowName != null && !["_blank", "_parent", "_self", "_top"].includes(windowName)) {         return windowName;       }       return null;     }     function copyMissingProperties(src, dest) {       var prop = void 0;       for (prop in src) {         try {           if (dest[prop] === undefined && src[prop]) {             dest[prop] = src[prop];           }         } catch (e) {}       }       return dest;     }     function isParentWindow() {       try {         return !!(parent.Window && capturingElement instanceof parent.Window);       } catch (e) {         return false;       }     }     function isOverlayish(el) {       var style = el && el.style;       if (style && /fixed|absolute/.test(style.position) && el.offsetWidth >= winWidth * 0.6 && el.offsetHeight >= winHeight * 0.75) {         return true;       }       return false;     }     var capturingElement = null; // the element who registered to the event     var srcElement = null; // the clicked on element     var closestParentLink = null;     if (window.event != null) {       capturingElement = window.event.currentTarget;       srcElement = window.event.srcElement;     }     if (srcElement != null && srcElement instanceof HTMLElement) {       closestParentLink = srcElement.closest('a');       if (closestParentLink && closestParentLink.href) {         openWndArguments[3] = closestParentLink.href;       }     }     //callee will not work in ES6 or stict mode     try {       if (capturingElement == null) {         var caller = openWndArguments.callee;         while (caller.arguments != null && caller.arguments.callee.caller != null) {           caller = caller.arguments.callee.caller;         }         if (caller.arguments != null && caller.arguments.length > 0 && caller.arguments[0].currentTarget != null) {           capturingElement = caller.arguments[0].currentTarget;         }       }     } catch (e) {}     /////////////////////////////////////////////////////////////////////////////////     // Blocked if a click on background element occurred ( or document)     /////////////////////////////////////////////////////////////////////////////////     if (capturingElement == null) {       window.pbreason = 'Blocked a new window opened without any user interaction';       useOriginalOpenWnd = false;     } else if (capturingElement != null && (capturingElement instanceof Window || isParentWindow(capturingElement) || capturingElement === document || capturingElement.URL != null && capturingElement.body != null || capturingElement.nodeName != null && (capturingElement.nodeName.toLowerCase() == "body" || capturingElement.nodeName.toLowerCase() == "document"))) {       window.pbreason = 'Blocked a new window opened with URL: ' + openWndArguments[0] + ' because it was triggered by the ' + capturingElement.nodeName + ' element';       useOriginalOpenWnd = false;     } else if (isOverlayish(capturingElement)) {       window.pbreason = 'Blocked a new window opened when clicking on an element that seems to be an overlay';       useOriginalOpenWnd = false;     } else {       useOriginalOpenWnd = true;     }     /////////////////////////////////////////////////////////////////////////////////     /////////////////////////////////////////////////////////////////////////////////     // Block if a full screen was just initiated while opening this url.     /////////////////////////////////////////////////////////////////////////////////     var fullScreenElement = document.webkitFullscreenElement || document.mozFullscreenElement || document.fullscreenElement;     if (new Date().getTime() - fullScreenOpenTime  elements with click dispatching event   //////////////////////////////////////////////////////////////////////////////////////////////////////////   HTMLElement.prototype.appendChild = function () {     var newElement = originalAppendChildFn.apply(this, arguments);     if (newElement.nodeName == 'IFRAME' && newElement.contentWindow) {       try {         var code = '(function () {          var pb_blacklist = ' + JSON.stringify(pb_blacklist) + ';          var pb_whitelist = ' + JSON.stringify(pb_whitelist) + ';          ' + inject.toString() + ';          inject();        })();';         var s = document.createElement('script');s.text = code;         newElement.contentWindow.document.body.appendChild(s);       } catch (e) {}     }     return newElement;   };   document.createElement = function () {     var newElement = originalCreateElementFn.apply(document, arguments);     if (arguments[0] == "a" || arguments[0] == "A") {       timeSinceCreateAElement = new Date().getTime();       var originalDispatchEventFn = newElement.dispatchEvent;       newElement.dispatchEvent = function (event) {         if (event.type != null && ('' + event.type).toLocaleLowerCase() == "click") {           if (!isInWhitelist(newElement.href)) {             window.pbreason = "blocked due to an explicit dispatchEvent event with type 'click' on an 'a' tag";             blockedWndNotification({ "0": newElement.href });             return true;           }         }         return originalDispatchEventFn.call(this, event);       };       lastCreatedAElement = newElement;     }     return newElement;   };   /////////////////////////////////////////////////////////////////////////////////   /////////////////////////////////////////////////////////////////////////////////   // Block artificial mouse click on frashly created  elements   /////////////////////////////////////////////////////////////////////////////////   document.createEvent = function () {     try {       if (arguments[0].toLowerCase().includes("mouse") && new Date().getTime() - timeSinceCreateAElement {   detectAdblock();   //}, false);   (function () {     window.pbExternalCommand = function (commandId, messageId) {       executeCommand(commandId, messageId);     };   })(); };          inject();        })();