diff --git a/dist/build.txt b/dist/build.txt index 11b00a4d..29e6f7c7 100644 --- a/dist/build.txt +++ b/dist/build.txt @@ -1 +1 @@ -version=1.9.101 \ No newline at end of file +version=1.9.105 \ No newline at end of file diff --git a/dist/redirect-files/google-analytics.js b/dist/redirect-files/google-analytics.js index 41eb0883..17922f30 100644 --- a/dist/redirect-files/google-analytics.js +++ b/dist/redirect-files/google-analytics.js @@ -1,11 +1,13 @@ (function(source, args) { function GoogleAnalytics(source) { + var _window$googleAnalyti; var Tracker = function Tracker() {}; var proto = Tracker.prototype; proto.get = noopFunc; proto.set = noopFunc; proto.send = noopFunc; var googleAnalyticsName = window.GoogleAnalyticsObject || "ga"; + var queue = (_window$googleAnalyti = window[googleAnalyticsName]) === null || _window$googleAnalyti === void 0 ? void 0 : _window$googleAnalyti.q; function ga(a) { var len = arguments.length; if (len === 0) { @@ -36,6 +38,13 @@ ga.remove = noopFunc; ga.loaded = true; window[googleAnalyticsName] = ga; + if (Array.isArray(queue)) { + var push = function push(arg) { + ga(...arg); + }; + queue.push = push; + queue.forEach(push); + } var _window = window, dataLayer = _window.dataLayer, google_optimize = _window.google_optimize; if (dataLayer instanceof Object === false) { return; diff --git a/dist/redirect-files/google-ima3.js b/dist/redirect-files/google-ima3.js index 2aaa56e7..f7d146b1 100644 --- a/dist/redirect-files/google-ima3.js +++ b/dist/redirect-files/google-ima3.js @@ -3,7 +3,14 @@ var _window$google$ima; var VERSION = "3.453.0"; var ima = {}; - var AdDisplayContainer = function AdDisplayContainer() {}; + var AdDisplayContainer = function AdDisplayContainer(containerElement) { + var divElement = document.createElement("div"); + divElement.style.setProperty("display", "none", "important"); + divElement.style.setProperty("visibility", "collapse", "important"); + if (containerElement) { + containerElement.appendChild(divElement); + } + }; AdDisplayContainer.prototype.destroy = noopFunc; AdDisplayContainer.prototype.initialize = noopFunc; var ImaSdkSettings = function ImaSdkSettings() {}; @@ -113,7 +120,8 @@ var EventHandler = function EventHandler() { this.listeners = new Map; this._dispatch = function(e) { - var listeners = this.listeners.get(e.type) || []; + var listeners = this.listeners.get(e.type); + listeners = listeners ? listeners.values() : []; for (var _i = 0, _Array$from = Array.from(listeners); _i < _Array$from.length; _i++) { var listener = _Array$from[_i]; try { @@ -123,15 +131,27 @@ } } }; - this.addEventListener = function(t, c) { - if (!this.listeners.has(t)) { - this.listeners.set(t, new Set); + this.addEventListener = function(types, callback, options, context) { + if (!Array.isArray(types)) { + types = [ types ]; + } + for (var i = 0; i < types.length; i += 1) { + var type = types[i]; + if (!this.listeners.has(type)) { + this.listeners.set(type, new Map); + } + this.listeners.get(type).set(callback, callback.bind(context || this)); } - this.listeners.get(t).add(c); }; - this.removeEventListener = function(t, c) { - var _this$listeners$get; - (_this$listeners$get = this.listeners.get(t)) === null || _this$listeners$get === void 0 ? void 0 : _this$listeners$get.delete(c); + this.removeEventListener = function(types, callback) { + if (!Array.isArray(types)) { + types = [ types ]; + } + for (var i = 0; i < types.length; i += 1) { + var _this$listeners$get; + var type = types[i]; + (_this$listeners$get = this.listeners.get(type)) === null || _this$listeners$get === void 0 ? void 0 : _this$listeners$get.delete(callback); + } }; }; var AdsManager = new EventHandler; @@ -257,6 +277,13 @@ return 1; } }; + var UniversalAdIdInfo = function UniversalAdIdInfo() {}; + UniversalAdIdInfo.prototype.getAdIdRegistry = function() { + return ""; + }; + UniversalAdIdInfo.prototype.getAdIsValue = function() { + return ""; + }; var Ad = function Ad() {}; Ad.prototype = { pi: new AdPodInfo, @@ -321,7 +348,7 @@ return "unknown"; }, getUniversalAdIds: function getUniversalAdIds() { - return [ "" ]; + return [ new UniversalAdIdInfo ]; }, getUniversalAdIdValue: function getUniversalAdIdValue() { return "unknown"; @@ -381,7 +408,9 @@ this.getErrorCode = function() { return this.errorCode; }; - this.getInnerError = function() {}; + this.getInnerError = function() { + return null; + }; this.getMessage = function() { return this.message; }; @@ -499,12 +528,11 @@ getAdIdRegistry: function getAdIdRegistry() { return ""; }, - getAdIsValue: function getAdIsValue() { + getAdIdValue: function getAdIdValue() { return ""; } }; var AdProgressData = noopFunc; - var UniversalAdIdInfo = function UniversalAdIdInfo() {}; Object.assign(ima, { AdCuePoints: AdCuePoints, AdDisplayContainer: AdDisplayContainer, @@ -528,6 +556,26 @@ FULL: "full", LIMITED: "limited" }, + OmidVerificationVendor: { + 1: "OTHER", + 2: "MOAT", + 3: "DOUBLEVERIFY", + 4: "INTEGRAL_AD_SCIENCE", + 5: "PIXELATE", + 6: "NIELSEN", + 7: "COMSCORE", + 8: "MEETRICS", + 9: "GOOGLE", + OTHER: 1, + MOAT: 2, + DOUBLEVERIFY: 3, + INTEGRAL_AD_SCIENCE: 4, + PIXELATE: 5, + NIELSEN: 6, + COMSCORE: 7, + MEETRICS: 8, + GOOGLE: 9 + }, settings: new ImaSdkSettings, UiElements: { AD_ATTRIBUTION: "adAttribution", diff --git a/dist/redirects.json b/dist/redirects.json index 6610a671..cb6f8b3f 100644 --- a/dist/redirects.json +++ b/dist/redirects.json @@ -226,7 +226,7 @@ ], "isBlocking": false, "contentType": "application/javascript;base64", - "content": "IWZ1bmN0aW9uKHNvdXJjZSxhcmdzKXtmdW5jdGlvbiBub29wRnVuYygpe31jb25zdCB1cGRhdGVkQXJncz1hcmdzP1tdLmNvbmNhdChzb3VyY2UpLmNvbmNhdChhcmdzKTpbc291cmNlXTt0cnl7KGZ1bmN0aW9uKHNvdXJjZSl7dmFyIFRyYWNrZXI9ZnVuY3Rpb24oKXt9LHByb3RvPVRyYWNrZXIucHJvdG90eXBlO3Byb3RvLmdldD1ub29wRnVuYyxwcm90by5zZXQ9bm9vcEZ1bmMscHJvdG8uc2VuZD1ub29wRnVuYzt2YXIgZ29vZ2xlQW5hbHl0aWNzTmFtZT13aW5kb3cuR29vZ2xlQW5hbHl0aWNzT2JqZWN0fHwiZ2EiO2Z1bmN0aW9uIGdhKGEpe3ZhciBsZW49YXJndW1lbnRzLmxlbmd0aDtpZigwIT09bGVuKXt2YXIgcmVwbGFjZXIsbGFzdEFyZz1hcmd1bWVudHNbbGVuLTFdO2xhc3RBcmcgaW5zdGFuY2VvZiBPYmplY3QmJm51bGwhPT1sYXN0QXJnJiYiZnVuY3Rpb24iPT10eXBlb2YgbGFzdEFyZy5oaXRDYWxsYmFjaz9yZXBsYWNlcj1sYXN0QXJnLmhpdENhbGxiYWNrOiJmdW5jdGlvbiI9PXR5cGVvZiBsYXN0QXJnJiYocmVwbGFjZXI9ZnVuY3Rpb24oKXtsYXN0QXJnKGdhLmNyZWF0ZSgpKX0pO3RyeXtzZXRUaW1lb3V0KHJlcGxhY2VyLDEpfWNhdGNoKGV4KXt9fX1nYS5jcmVhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFRyYWNrZXJ9LGdhLmdldEJ5TmFtZT1mdW5jdGlvbigpe3JldHVybiBuZXcgVHJhY2tlcn0sZ2EuZ2V0QWxsPWZ1bmN0aW9uKCl7cmV0dXJuW25ldyBUcmFja2VyXX0sZ2EucmVtb3ZlPW5vb3BGdW5jLGdhLmxvYWRlZD0hMCx3aW5kb3dbZ29vZ2xlQW5hbHl0aWNzTmFtZV09Z2E7dmFyIF93aW5kb3c9d2luZG93LGRhdGFMYXllcj1fd2luZG93LmRhdGFMYXllcixnb29nbGVfb3B0aW1pemU9X3dpbmRvdy5nb29nbGVfb3B0aW1pemU7aWYoZGF0YUxheWVyIGluc3RhbmNlb2YgT2JqZWN0IT0wKXtkYXRhTGF5ZXIuaGlkZSBpbnN0YW5jZW9mIE9iamVjdCYmImZ1bmN0aW9uIj09dHlwZW9mIGRhdGFMYXllci5oaWRlLmVuZCYmZGF0YUxheWVyLmhpZGUuZW5kKCk7dmFyIGhhbmRsZUNhbGxiYWNrPWZ1bmN0aW9uKGRhdGFPYmosZnVuY05hbWUpe2RhdGFPYmomJiJmdW5jdGlvbiI9PXR5cGVvZiBkYXRhT2JqW2Z1bmNOYW1lXSYmc2V0VGltZW91dChkYXRhT2JqW2Z1bmNOYW1lXSl9O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBkYXRhTGF5ZXIucHVzaCYmKGRhdGFMYXllci5wdXNoPWZ1bmN0aW9uKGRhdGEpe2lmKGRhdGEgaW5zdGFuY2VvZiBPYmplY3Qpe2Zvcih2YXIga2V5IGluIGhhbmRsZUNhbGxiYWNrKGRhdGEsImV2ZW50Q2FsbGJhY2siKSxkYXRhKWhhbmRsZUNhbGxiYWNrKGRhdGFba2V5XSwiZXZlbnRfY2FsbGJhY2siKTtkYXRhLmhhc093blByb3BlcnR5KCJldmVudENhbGxiYWNrIil8fGRhdGEuaGFzT3duUHJvcGVydHkoImV2ZW50Q2FsbGJhY2siKXx8W10ucHVzaC5jYWxsKHdpbmRvdy5kYXRhTGF5ZXIsZGF0YSl9cmV0dXJuIEFycmF5LmlzQXJyYXkoZGF0YSkmJmRhdGEuZm9yRWFjaCgoZnVuY3Rpb24oYXJnKXtoYW5kbGVDYWxsYmFjayhhcmcsImNhbGxiYWNrIil9KSksbm9vcEZ1bmN9KSxnb29nbGVfb3B0aW1pemUgaW5zdGFuY2VvZiBPYmplY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBnb29nbGVfb3B0aW1pemUuZ2V0KXt2YXIgZ29vZ2xlT3B0aW1pemVXcmFwcGVyPXtnZXQ6bm9vcEZ1bmN9O3dpbmRvdy5nb29nbGVfb3B0aW1pemU9Z29vZ2xlT3B0aW1pemVXcmFwcGVyfSFmdW5jdGlvbihzb3VyY2Upe2lmKCEwPT09c291cmNlLnZlcmJvc2Upe3RyeXt2YXIgbG9nPWNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksdHJhY2U9Y29uc29sZS50cmFjZS5iaW5kKGNvbnNvbGUpLHByZWZpeD1zb3VyY2UucnVsZVRleHR8fCIiO2lmKHNvdXJjZS5kb21haW5OYW1lKXt2YXIgcnVsZVN0YXJ0SW5kZXgsQUdfU0NSSVBUTEVUX01BUktFUj0iIyUjLy8iLFVCT19TQ1JJUFRMRVRfTUFSS0VSPSIjIytqcyI7c291cmNlLnJ1bGVUZXh0LmluY2x1ZGVzKEFHX1NDUklQVExFVF9NQVJLRVIpP3J1bGVTdGFydEluZGV4PXNvdXJjZS5ydWxlVGV4dC5pbmRleE9mKEFHX1NDUklQVExFVF9NQVJLRVIpOnNvdXJjZS5ydWxlVGV4dC5pbmNsdWRlcyhVQk9fU0NSSVBUTEVUX01BUktFUikmJihydWxlU3RhcnRJbmRleD1zb3VyY2UucnVsZVRleHQuaW5kZXhPZihVQk9fU0NSSVBUTEVUX01BUktFUikpO3ZhciBydWxlUGFydD1zb3VyY2UucnVsZVRleHQuc2xpY2UocnVsZVN0YXJ0SW5kZXgpO3ByZWZpeD0iIi5jb25jYXQoc291cmNlLmRvbWFpbk5hbWUpLmNvbmNhdChydWxlUGFydCl9bG9nKCIiLmNvbmNhdChwcmVmaXgsIiB0cmFjZSBzdGFydCIpKSx0cmFjZSYmdHJhY2UoKSxsb2coIiIuY29uY2F0KHByZWZpeCwiIHRyYWNlIGVuZCIpKX1jYXRjaChlKXt9ImZ1bmN0aW9uIj09dHlwZW9mIHdpbmRvdy5fX2RlYnVnJiZ3aW5kb3cuX19kZWJ1Zyhzb3VyY2UpfX0oc291cmNlKX19KS5hcHBseSh0aGlzLHVwZGF0ZWRBcmdzKX1jYXRjaChlKXtjb25zb2xlLmxvZyhlKX19KHtuYW1lOiJnb29nbGUtYW5hbHl0aWNzIixhcmdzOltdfSxbXSk7" + "content": "IWZ1bmN0aW9uKHNvdXJjZSxhcmdzKXtmdW5jdGlvbiBub29wRnVuYygpe31jb25zdCB1cGRhdGVkQXJncz1hcmdzP1tdLmNvbmNhdChzb3VyY2UpLmNvbmNhdChhcmdzKTpbc291cmNlXTt0cnl7KGZ1bmN0aW9uKHNvdXJjZSl7dmFyIF93aW5kb3ckZ29vZ2xlQW5hbHl0aSxUcmFja2VyPWZ1bmN0aW9uKCl7fSxwcm90bz1UcmFja2VyLnByb3RvdHlwZTtwcm90by5nZXQ9bm9vcEZ1bmMscHJvdG8uc2V0PW5vb3BGdW5jLHByb3RvLnNlbmQ9bm9vcEZ1bmM7dmFyIGdvb2dsZUFuYWx5dGljc05hbWU9d2luZG93Lkdvb2dsZUFuYWx5dGljc09iamVjdHx8ImdhIixxdWV1ZT1udWxsPT09KF93aW5kb3ckZ29vZ2xlQW5hbHl0aT13aW5kb3dbZ29vZ2xlQW5hbHl0aWNzTmFtZV0pfHx2b2lkIDA9PT1fd2luZG93JGdvb2dsZUFuYWx5dGk/dm9pZCAwOl93aW5kb3ckZ29vZ2xlQW5hbHl0aS5xO2Z1bmN0aW9uIGdhKGEpe3ZhciBsZW49YXJndW1lbnRzLmxlbmd0aDtpZigwIT09bGVuKXt2YXIgcmVwbGFjZXIsbGFzdEFyZz1hcmd1bWVudHNbbGVuLTFdO2xhc3RBcmcgaW5zdGFuY2VvZiBPYmplY3QmJm51bGwhPT1sYXN0QXJnJiYiZnVuY3Rpb24iPT10eXBlb2YgbGFzdEFyZy5oaXRDYWxsYmFjaz9yZXBsYWNlcj1sYXN0QXJnLmhpdENhbGxiYWNrOiJmdW5jdGlvbiI9PXR5cGVvZiBsYXN0QXJnJiYocmVwbGFjZXI9ZnVuY3Rpb24oKXtsYXN0QXJnKGdhLmNyZWF0ZSgpKX0pO3RyeXtzZXRUaW1lb3V0KHJlcGxhY2VyLDEpfWNhdGNoKGV4KXt9fX1pZihnYS5jcmVhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFRyYWNrZXJ9LGdhLmdldEJ5TmFtZT1mdW5jdGlvbigpe3JldHVybiBuZXcgVHJhY2tlcn0sZ2EuZ2V0QWxsPWZ1bmN0aW9uKCl7cmV0dXJuW25ldyBUcmFja2VyXX0sZ2EucmVtb3ZlPW5vb3BGdW5jLGdhLmxvYWRlZD0hMCx3aW5kb3dbZ29vZ2xlQW5hbHl0aWNzTmFtZV09Z2EsQXJyYXkuaXNBcnJheShxdWV1ZSkpe3ZhciBwdXNoPWZ1bmN0aW9uKGFyZyl7Z2EoLi4uYXJnKX07cXVldWUucHVzaD1wdXNoLHF1ZXVlLmZvckVhY2gocHVzaCl9dmFyIF93aW5kb3c9d2luZG93LGRhdGFMYXllcj1fd2luZG93LmRhdGFMYXllcixnb29nbGVfb3B0aW1pemU9X3dpbmRvdy5nb29nbGVfb3B0aW1pemU7aWYoZGF0YUxheWVyIGluc3RhbmNlb2YgT2JqZWN0IT0wKXtkYXRhTGF5ZXIuaGlkZSBpbnN0YW5jZW9mIE9iamVjdCYmImZ1bmN0aW9uIj09dHlwZW9mIGRhdGFMYXllci5oaWRlLmVuZCYmZGF0YUxheWVyLmhpZGUuZW5kKCk7dmFyIGhhbmRsZUNhbGxiYWNrPWZ1bmN0aW9uKGRhdGFPYmosZnVuY05hbWUpe2RhdGFPYmomJiJmdW5jdGlvbiI9PXR5cGVvZiBkYXRhT2JqW2Z1bmNOYW1lXSYmc2V0VGltZW91dChkYXRhT2JqW2Z1bmNOYW1lXSl9O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBkYXRhTGF5ZXIucHVzaCYmKGRhdGFMYXllci5wdXNoPWZ1bmN0aW9uKGRhdGEpe2lmKGRhdGEgaW5zdGFuY2VvZiBPYmplY3Qpe2Zvcih2YXIga2V5IGluIGhhbmRsZUNhbGxiYWNrKGRhdGEsImV2ZW50Q2FsbGJhY2siKSxkYXRhKWhhbmRsZUNhbGxiYWNrKGRhdGFba2V5XSwiZXZlbnRfY2FsbGJhY2siKTtkYXRhLmhhc093blByb3BlcnR5KCJldmVudENhbGxiYWNrIil8fGRhdGEuaGFzT3duUHJvcGVydHkoImV2ZW50Q2FsbGJhY2siKXx8W10ucHVzaC5jYWxsKHdpbmRvdy5kYXRhTGF5ZXIsZGF0YSl9cmV0dXJuIEFycmF5LmlzQXJyYXkoZGF0YSkmJmRhdGEuZm9yRWFjaCgoZnVuY3Rpb24oYXJnKXtoYW5kbGVDYWxsYmFjayhhcmcsImNhbGxiYWNrIil9KSksbm9vcEZ1bmN9KSxnb29nbGVfb3B0aW1pemUgaW5zdGFuY2VvZiBPYmplY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBnb29nbGVfb3B0aW1pemUuZ2V0KXt2YXIgZ29vZ2xlT3B0aW1pemVXcmFwcGVyPXtnZXQ6bm9vcEZ1bmN9O3dpbmRvdy5nb29nbGVfb3B0aW1pemU9Z29vZ2xlT3B0aW1pemVXcmFwcGVyfSFmdW5jdGlvbihzb3VyY2Upe2lmKCEwPT09c291cmNlLnZlcmJvc2Upe3RyeXt2YXIgbG9nPWNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksdHJhY2U9Y29uc29sZS50cmFjZS5iaW5kKGNvbnNvbGUpLHByZWZpeD1zb3VyY2UucnVsZVRleHR8fCIiO2lmKHNvdXJjZS5kb21haW5OYW1lKXt2YXIgcnVsZVN0YXJ0SW5kZXgsQUdfU0NSSVBUTEVUX01BUktFUj0iIyUjLy8iLFVCT19TQ1JJUFRMRVRfTUFSS0VSPSIjIytqcyI7c291cmNlLnJ1bGVUZXh0LmluY2x1ZGVzKEFHX1NDUklQVExFVF9NQVJLRVIpP3J1bGVTdGFydEluZGV4PXNvdXJjZS5ydWxlVGV4dC5pbmRleE9mKEFHX1NDUklQVExFVF9NQVJLRVIpOnNvdXJjZS5ydWxlVGV4dC5pbmNsdWRlcyhVQk9fU0NSSVBUTEVUX01BUktFUikmJihydWxlU3RhcnRJbmRleD1zb3VyY2UucnVsZVRleHQuaW5kZXhPZihVQk9fU0NSSVBUTEVUX01BUktFUikpO3ZhciBydWxlUGFydD1zb3VyY2UucnVsZVRleHQuc2xpY2UocnVsZVN0YXJ0SW5kZXgpO3ByZWZpeD0iIi5jb25jYXQoc291cmNlLmRvbWFpbk5hbWUpLmNvbmNhdChydWxlUGFydCl9bG9nKCIiLmNvbmNhdChwcmVmaXgsIiB0cmFjZSBzdGFydCIpKSx0cmFjZSYmdHJhY2UoKSxsb2coIiIuY29uY2F0KHByZWZpeCwiIHRyYWNlIGVuZCIpKX1jYXRjaChlKXt9ImZ1bmN0aW9uIj09dHlwZW9mIHdpbmRvdy5fX2RlYnVnJiZ3aW5kb3cuX19kZWJ1Zyhzb3VyY2UpfX0oc291cmNlKX19KS5hcHBseSh0aGlzLHVwZGF0ZWRBcmdzKX1jYXRjaChlKXtjb25zb2xlLmxvZyhlKX19KHtuYW1lOiJnb29nbGUtYW5hbHl0aWNzIixhcmdzOltdfSxbXSk7" }, { "title": "google-ima3", @@ -236,7 +236,7 @@ ], "isBlocking": false, "contentType": "application/javascript;base64", - "content": "IWZ1bmN0aW9uKHNvdXJjZSxhcmdzKXtmdW5jdGlvbiBub29wRnVuYygpe31mdW5jdGlvbiBsb2dNZXNzYWdlKHNvdXJjZSxtZXNzYWdlKXt2YXIgZm9yY2VkPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0sY29udmVydE1lc3NhZ2VUb1N0cmluZz0hKGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdKXx8YXJndW1lbnRzWzNdLG5hbWU9c291cmNlLm5hbWUsdmVyYm9zZT1zb3VyY2UudmVyYm9zZTtpZihmb3JjZWR8fHZlcmJvc2Upe3ZhciBuYXRpdmVDb25zb2xlPWNvbnNvbGUubG9nO2NvbnZlcnRNZXNzYWdlVG9TdHJpbmc/bmF0aXZlQ29uc29sZSgiIi5jb25jYXQobmFtZSwiOiAiKS5jb25jYXQobWVzc2FnZSkpOm5hdGl2ZUNvbnNvbGUoIiIuY29uY2F0KG5hbWUsIjoiKSxtZXNzYWdlKX19Y29uc3QgdXBkYXRlZEFyZ3M9YXJncz9bXS5jb25jYXQoc291cmNlKS5jb25jYXQoYXJncyk6W3NvdXJjZV07dHJ5eyhmdW5jdGlvbihzb3VyY2Upe3ZhciBfd2luZG93JGdvb2dsZSRpbWEsaW1hPXt9LEFkRGlzcGxheUNvbnRhaW5lcj1mdW5jdGlvbigpe307QWREaXNwbGF5Q29udGFpbmVyLnByb3RvdHlwZS5kZXN0cm95PW5vb3BGdW5jLEFkRGlzcGxheUNvbnRhaW5lci5wcm90b3R5cGUuaW5pdGlhbGl6ZT1ub29wRnVuYzt2YXIgSW1hU2RrU2V0dGluZ3M9ZnVuY3Rpb24oKXt9O0ltYVNka1NldHRpbmdzLkNvbXBhbmlvbkJhY2tmaWxsTW9kZT17QUxXQVlTOiJhbHdheXMiLE9OX01BU1RFUl9BRDoib25fbWFzdGVyX2FkIn0sSW1hU2RrU2V0dGluZ3MuVnBhaWRNb2RlPXtESVNBQkxFRDowLEVOQUJMRUQ6MSxJTlNFQ1VSRToyfSxJbWFTZGtTZXR0aW5ncy5wcm90b3R5cGU9e2M6ITAsZjp7fSxpOiExLGw6IiIscDoiIixyOjAsdDoiIix2OiIiLGdldENvbXBhbmlvbkJhY2tmaWxsOm5vb3BGdW5jLGdldERpc2FibGVDdXN0b21QbGF5YmFja0ZvcklPUzEwUGx1cygpe3JldHVybiB0aGlzLml9LGdldERpc2FibGVkRmxhc2hBZHM6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZ2V0RmVhdHVyZUZsYWdzKCl7cmV0dXJuIHRoaXMuZn0sZ2V0TG9jYWxlKCl7cmV0dXJuIHRoaXMubH0sZ2V0TnVtUmVkaXJlY3RzKCl7cmV0dXJuIHRoaXMucn0sZ2V0UGxheWVyVHlwZSgpe3JldHVybiB0aGlzLnR9LGdldFBsYXllclZlcnNpb24oKXtyZXR1cm4gdGhpcy52fSxnZXRQcGlkKCl7cmV0dXJuIHRoaXMucH0sZ2V0VnBhaWRNb2RlKCl7cmV0dXJuIHRoaXMuQ30saXNDb29raWVzRW5hYmxlZCgpe3JldHVybiB0aGlzLmN9LGlzVnBhaWRBZGFwdGVyKCl7cmV0dXJuIHRoaXMuTX0sc2V0Q29tcGFuaW9uQmFja2ZpbGw6bm9vcEZ1bmMsc2V0QXV0b1BsYXlBZEJyZWFrcyhhKXt0aGlzLks9YX0sc2V0Q29va2llc0VuYWJsZWQoYyl7dGhpcy5jPSEhY30sc2V0RGlzYWJsZUN1c3RvbVBsYXliYWNrRm9ySU9TMTBQbHVzKGkpe3RoaXMuaT0hIWl9LHNldERpc2FibGVGbGFzaEFkczpub29wRnVuYyxzZXRGZWF0dXJlRmxhZ3MoZil7dGhpcy5mPSEhZn0sc2V0SXNWcGFpZEFkYXB0ZXIoYSl7dGhpcy5NPWF9LHNldExvY2FsZShsKXt0aGlzLmw9ISFsfSxzZXROdW1SZWRpcmVjdHMocil7dGhpcy5yPSEhcn0sc2V0UGFnZUNvcnJlbGF0b3IoYSl7dGhpcy5SPWF9LHNldFBsYXllclR5cGUodCl7dGhpcy50PSEhdH0sc2V0UGxheWVyVmVyc2lvbih2KXt0aGlzLnY9ISF2fSxzZXRQcGlkKHApe3RoaXMucD0hIXB9LHNldFZwYWlkTW9kZShhKXt0aGlzLkM9YX0sc2V0U2Vzc2lvbklkOm5vb3BGdW5jLHNldFN0cmVhbUNvcnJlbGF0b3I6bm9vcEZ1bmMsc2V0VnBhaWRBbGxvd2VkOm5vb3BGdW5jLENvbXBhbmlvbkJhY2tmaWxsTW9kZTp7QUxXQVlTOiJhbHdheXMiLE9OX01BU1RFUl9BRDoib25fbWFzdGVyX2FkIn0sVnBhaWRNb2RlOntESVNBQkxFRDowLEVOQUJMRUQ6MSxJTlNFQ1VSRToyfX07dmFyIEV2ZW50SGFuZGxlcj1mdW5jdGlvbigpe3RoaXMubGlzdGVuZXJzPW5ldyBNYXAsdGhpcy5fZGlzcGF0Y2g9ZnVuY3Rpb24oZSl7Zm9yKHZhciBsaXN0ZW5lcnM9dGhpcy5saXN0ZW5lcnMuZ2V0KGUudHlwZSl8fFtdLF9pPTAsX0FycmF5JGZyb209QXJyYXkuZnJvbShsaXN0ZW5lcnMpO19pPF9BcnJheSRmcm9tLmxlbmd0aDtfaSsrKXt2YXIgbGlzdGVuZXI9X0FycmF5JGZyb21bX2ldO3RyeXtsaXN0ZW5lcihlKX1jYXRjaChyKXtsb2dNZXNzYWdlKHNvdXJjZSxyKX19fSx0aGlzLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxjKXt0aGlzLmxpc3RlbmVycy5oYXModCl8fHRoaXMubGlzdGVuZXJzLnNldCh0LG5ldyBTZXQpLHRoaXMubGlzdGVuZXJzLmdldCh0KS5hZGQoYyl9LHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGMpe3ZhciBfdGhpcyRsaXN0ZW5lcnMkZ2V0O251bGw9PT0oX3RoaXMkbGlzdGVuZXJzJGdldD10aGlzLmxpc3RlbmVycy5nZXQodCkpfHx2b2lkIDA9PT1fdGhpcyRsaXN0ZW5lcnMkZ2V0fHxfdGhpcyRsaXN0ZW5lcnMkZ2V0LmRlbGV0ZShjKX19LEFkc01hbmFnZXI9bmV3IEV2ZW50SGFuZGxlcjtBZHNNYW5hZ2VyLnZvbHVtZT0xLEFkc01hbmFnZXIuY29sbGFwc2U9bm9vcEZ1bmMsQWRzTWFuYWdlci5jb25maWd1cmVBZHNNYW5hZ2VyPW5vb3BGdW5jLEFkc01hbmFnZXIuZGVzdHJveT1ub29wRnVuYyxBZHNNYW5hZ2VyLmRpc2NhcmRBZEJyZWFrPW5vb3BGdW5jLEFkc01hbmFnZXIuZXhwYW5kPW5vb3BGdW5jLEFkc01hbmFnZXIuZm9jdXM9bm9vcEZ1bmMsQWRzTWFuYWdlci5nZXRBZFNraXBwYWJsZVN0YXRlPWZ1bmN0aW9uKCl7cmV0dXJuITF9LEFkc01hbmFnZXIuZ2V0Q3VlUG9pbnRzPWZ1bmN0aW9uKCl7cmV0dXJuWzBdfSxBZHNNYW5hZ2VyLmdldEN1cnJlbnRBZD1mdW5jdGlvbigpe3JldHVybiBjdXJyZW50QWR9LEFkc01hbmFnZXIuZ2V0Q3VycmVudEFkQ3VlUG9pbnRzPWZ1bmN0aW9uKCl7cmV0dXJuW119LEFkc01hbmFnZXIuZ2V0UmVtYWluaW5nVGltZT1mdW5jdGlvbigpe3JldHVybiAwfSxBZHNNYW5hZ2VyLmdldFZvbHVtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZvbHVtZX0sQWRzTWFuYWdlci5pbml0PW5vb3BGdW5jLEFkc01hbmFnZXIuaXNDdXN0b21DbGlja1RyYWNraW5nVXNlZD1mdW5jdGlvbigpe3JldHVybiExfSxBZHNNYW5hZ2VyLmlzQ3VzdG9tUGxheWJhY2tVc2VkPWZ1bmN0aW9uKCl7cmV0dXJuITF9LEFkc01hbmFnZXIucGF1c2U9bm9vcEZ1bmMsQWRzTWFuYWdlci5yZXF1ZXN0TmV4dEFkQnJlYWs9bm9vcEZ1bmMsQWRzTWFuYWdlci5yZXNpemU9bm9vcEZ1bmMsQWRzTWFuYWdlci5yZXN1bWU9bm9vcEZ1bmMsQWRzTWFuYWdlci5zZXRWb2x1bWU9ZnVuY3Rpb24odil7dGhpcy52b2x1bWU9dn0sQWRzTWFuYWdlci5za2lwPW5vb3BGdW5jLEFkc01hbmFnZXIuc3RhcnQ9ZnVuY3Rpb24oKXtmb3IodmFyIF9pMj0wLF9hcnI9W0FkRXZlbnQuVHlwZS5BTExfQURTX0NPTVBMRVRFRCxBZEV2ZW50LlR5cGUuQ09OVEVOVF9SRVNVTUVfUkVRVUVTVEVEXTtfaTI8X2Fyci5sZW5ndGg7X2kyKyspe3ZhciB0eXBlPV9hcnJbX2kyXTt0cnl7dGhpcy5fZGlzcGF0Y2gobmV3IGltYS5BZEV2ZW50KHR5cGUpKX1jYXRjaChlKXtsb2dNZXNzYWdlKHNvdXJjZSxlKX19fSxBZHNNYW5hZ2VyLnN0b3A9bm9vcEZ1bmMsQWRzTWFuYWdlci51cGRhdGVBZHNSZW5kZXJpbmdTZXR0aW5ncz1ub29wRnVuYzt2YXIgbWFuYWdlcj1PYmplY3QuY3JlYXRlKEFkc01hbmFnZXIpLEFkc01hbmFnZXJMb2FkZWRFdmVudD1mdW5jdGlvbih0eXBlLGFkc1JlcXVlc3QsdXNlclJlcXVlc3RDb250ZXh0KXt0aGlzLnR5cGU9dHlwZSx0aGlzLmFkc1JlcXVlc3Q9YWRzUmVxdWVzdCx0aGlzLnVzZXJSZXF1ZXN0Q29udGV4dD11c2VyUmVxdWVzdENvbnRleHR9O0Fkc01hbmFnZXJMb2FkZWRFdmVudC5wcm90b3R5cGU9e2dldEFkc01hbmFnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gbWFuYWdlcn0sZ2V0VXNlclJlcXVlc3RDb250ZXh0KCl7cmV0dXJuIHRoaXMudXNlclJlcXVlc3RDb250ZXh0P3RoaXMudXNlclJlcXVlc3RDb250ZXh0Ont9fX0sQWRzTWFuYWdlckxvYWRlZEV2ZW50LlR5cGU9e0FEU19NQU5BR0VSX0xPQURFRDoiYWRzTWFuYWdlckxvYWRlZCJ9O3ZhciBBZHNMb2FkZXI9RXZlbnRIYW5kbGVyO0Fkc0xvYWRlci5wcm90b3R5cGUuc2V0dGluZ3M9bmV3IEltYVNka1NldHRpbmdzLEFkc0xvYWRlci5wcm90b3R5cGUuY29udGVudENvbXBsZXRlPW5vb3BGdW5jLEFkc0xvYWRlci5wcm90b3R5cGUuZGVzdHJveT1ub29wRnVuYyxBZHNMb2FkZXIucHJvdG90eXBlLmdldFNldHRpbmdzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0dGluZ3N9LEFkc0xvYWRlci5wcm90b3R5cGUuZ2V0VmVyc2lvbj1mdW5jdGlvbigpe3JldHVybiIzLjQ1My4wIn0sQWRzTG9hZGVyLnByb3RvdHlwZS5yZXF1ZXN0QWRzPWZ1bmN0aW9uKGFkc1JlcXVlc3QsdXNlclJlcXVlc3RDb250ZXh0KXt2YXIgX3RoaXM9dGhpcztyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7dmFyIEFEU19NQU5BR0VSX0xPQURFRD1BZHNNYW5hZ2VyTG9hZGVkRXZlbnQuVHlwZS5BRFNfTUFOQUdFUl9MT0FERUQsZXZlbnQ9bmV3IGltYS5BZHNNYW5hZ2VyTG9hZGVkRXZlbnQoQURTX01BTkFHRVJfTE9BREVELGFkc1JlcXVlc3QsdXNlclJlcXVlc3RDb250ZXh0KTtfdGhpcy5fZGlzcGF0Y2goZXZlbnQpfSkpO3ZhciBlPW5ldyBpbWEuQWRFcnJvcigiYWRQbGF5RXJyb3IiLDEyMDUsMTIwNSwiVGhlIGJyb3dzZXIgcHJldmVudGVkIHBsYXliYWNrIGluaXRpYXRlZCB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24uIixhZHNSZXF1ZXN0LHVzZXJSZXF1ZXN0Q29udGV4dCk7cmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe190aGlzLl9kaXNwYXRjaChuZXcgaW1hLkFkRXJyb3JFdmVudChlKSl9KSl9O3ZhciBBZHNSZW5kZXJpbmdTZXR0aW5ncz1ub29wRnVuYyxBZHNSZXF1ZXN0PWZ1bmN0aW9uKCl7fTtBZHNSZXF1ZXN0LnByb3RvdHlwZT17c2V0QWRXaWxsQXV0b1BsYXk6bm9vcEZ1bmMsc2V0QWRXaWxsUGxheU11dGVkOm5vb3BGdW5jLHNldENvbnRpbnVvdXNQbGF5YmFjazpub29wRnVuY307dmFyIEFkUG9kSW5mbz1mdW5jdGlvbigpe307QWRQb2RJbmZvLnByb3RvdHlwZT17Z2V0QWRQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiAxfSxnZXRJc0J1bXBlcjpmdW5jdGlvbigpe3JldHVybiExfSxnZXRNYXhEdXJhdGlvbjpmdW5jdGlvbigpe3JldHVybi0xfSxnZXRQb2RJbmRleDpmdW5jdGlvbigpe3JldHVybiAxfSxnZXRUaW1lT2Zmc2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDB9LGdldFRvdGFsQWRzOmZ1bmN0aW9uKCl7cmV0dXJuIDF9fTt2YXIgQWQ9ZnVuY3Rpb24oKXt9O0FkLnByb3RvdHlwZT17cGk6bmV3IEFkUG9kSW5mbyxnZXRBZElkOmZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGdldEFkUG9kSW5mbygpe3JldHVybiB0aGlzLnBpfSxnZXRBZFN5c3RlbTpmdW5jdGlvbigpe3JldHVybiIifSxnZXRBZHZlcnRpc2VyTmFtZTpmdW5jdGlvbigpe3JldHVybiIifSxnZXRBcGlGcmFtZXdvcms6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZ2V0Q29tcGFuaW9uQWRzOmZ1bmN0aW9uKCl7cmV0dXJuW119LGdldENvbnRlbnRUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGdldENyZWF0aXZlQWRJZDpmdW5jdGlvbigpe3JldHVybiIifSxnZXREZWFsSWQ6ZnVuY3Rpb24oKXtyZXR1cm4iIn0sZ2V0RGVzY3JpcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4iIn0sZ2V0RHVyYXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gOC41fSxnZXRIZWlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sZ2V0TWVkaWFVcmw6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZ2V0TWluU3VnZ2VzdGVkRHVyYXRpb246ZnVuY3Rpb24oKXtyZXR1cm4tMn0sZ2V0U2tpcFRpbWVPZmZzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4tMX0sZ2V0U3VydmV5VXJsOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGdldFRpdGxlOmZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGdldFRyYWZmaWNraW5nUGFyYW1ldGVyc1N0cmluZzpmdW5jdGlvbigpe3JldHVybiIifSxnZXRVaUVsZW1lbnRzOmZ1bmN0aW9uKCl7cmV0dXJuWyIiXX0sZ2V0VW5pdmVyc2FsQWRJZFJlZ2lzdHJ5OmZ1bmN0aW9uKCl7cmV0dXJuInVua25vd24ifSxnZXRVbml2ZXJzYWxBZElkczpmdW5jdGlvbigpe3JldHVyblsiIl19LGdldFVuaXZlcnNhbEFkSWRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiJ1bmtub3duIn0sZ2V0VmFzdE1lZGlhQml0cmF0ZTpmdW5jdGlvbigpe3JldHVybiAwfSxnZXRWYXN0TWVkaWFIZWlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sZ2V0VmFzdE1lZGlhV2lkdGg6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sZ2V0V2lkdGg6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sZ2V0V3JhcHBlckFkSWRzOmZ1bmN0aW9uKCl7cmV0dXJuWyIiXX0sZ2V0V3JhcHBlckFkU3lzdGVtczpmdW5jdGlvbigpe3JldHVyblsiIl19LGdldFdyYXBwZXJDcmVhdGl2ZUlkczpmdW5jdGlvbigpe3JldHVyblsiIl19LGlzTGluZWFyOmZ1bmN0aW9uKCl7cmV0dXJuITB9LGlzU2tpcHBhYmxlOigpPT4hMH07dmFyIENvbXBhbmlvbkFkPWZ1bmN0aW9uKCl7fTtDb21wYW5pb25BZC5wcm90b3R5cGU9e2dldEFkU2xvdElkOmZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGdldENvbnRlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4iIn0sZ2V0Q29udGVudFR5cGU6ZnVuY3Rpb24oKXtyZXR1cm4iIn0sZ2V0SGVpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIDF9LGdldFdpZHRoOmZ1bmN0aW9uKCl7cmV0dXJuIDF9fTt2YXIgQWRFcnJvcj1mdW5jdGlvbih0eXBlLGNvZGUsdmFzdCxtZXNzYWdlLGFkc1JlcXVlc3QsdXNlclJlcXVlc3RDb250ZXh0KXt0aGlzLmVycm9yQ29kZT1jb2RlLHRoaXMubWVzc2FnZT1tZXNzYWdlLHRoaXMudHlwZT10eXBlLHRoaXMuYWRzUmVxdWVzdD1hZHNSZXF1ZXN0LHRoaXMudXNlclJlcXVlc3RDb250ZXh0PXVzZXJSZXF1ZXN0Q29udGV4dCx0aGlzLmdldEVycm9yQ29kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVycm9yQ29kZX0sdGhpcy5nZXRJbm5lckVycm9yPWZ1bmN0aW9uKCl7fSx0aGlzLmdldE1lc3NhZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZXNzYWdlfSx0aGlzLmdldFR5cGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50eXBlfSx0aGlzLmdldFZhc3RFcnJvckNvZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YXN0RXJyb3JDb2RlfSx0aGlzLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkFkRXJyb3IgIi5jb25jYXQodGhpcy5lcnJvckNvZGUsIjogIikuY29uY2F0KHRoaXMubWVzc2FnZSl9fTtBZEVycm9yLkVycm9yQ29kZT17fSxBZEVycm9yLlR5cGU9e307dmFyIGN1cnJlbnRBZD1mdW5jdGlvbigpe3RyeXtmb3IodmFyIF9pMz0wLF9PYmplY3QkdmFsdWVzPU9iamVjdC52YWx1ZXMod2luZG93LnZpZGlibGUuX2dldENvbnRleHRzKCkpO19pMzxfT2JqZWN0JHZhbHVlcy5sZW5ndGg7X2kzKyspe3ZhciBfY3R4JGdldFBsYXllcixfY3R4JGdldFBsYXllciRkaXY7aWYobnVsbCE9PShfY3R4JGdldFBsYXllcj1fT2JqZWN0JHZhbHVlc1tfaTNdLmdldFBsYXllcigpKSYmdm9pZCAwIT09X2N0eCRnZXRQbGF5ZXImJm51bGwhPT0oX2N0eCRnZXRQbGF5ZXIkZGl2PV9jdHgkZ2V0UGxheWVyLmRpdikmJnZvaWQgMCE9PV9jdHgkZ2V0UGxheWVyJGRpdiYmX2N0eCRnZXRQbGF5ZXIkZGl2LmlubmVySFRNTC5pbmNsdWRlcygid3d3LmVuZ2FkZ2V0LmNvbSIpKXJldHVybiEwfX1jYXRjaChlKXt9cmV0dXJuITF9KCk/dm9pZCAwOm5ldyBBZCxBZEV2ZW50PWZ1bmN0aW9uKHR5cGUpe3RoaXMudHlwZT10eXBlfTtBZEV2ZW50LnByb3RvdHlwZT17Z2V0QWQ6ZnVuY3Rpb24oKXtyZXR1cm4gY3VycmVudEFkfSxnZXRBZERhdGE6ZnVuY3Rpb24oKXt9fSxBZEV2ZW50LlR5cGU9e0FEX0JSRUFLX1JFQURZOiJhZEJyZWFrUmVhZHkiLEFEX0JVRkZFUklORzoiYWRCdWZmZXJpbmciLEFEX0NBTl9QTEFZOiJhZENhblBsYXkiLEFEX01FVEFEQVRBOiJhZE1ldGFkYXRhIixBRF9QUk9HUkVTUzoiYWRQcm9ncmVzcyIsQUxMX0FEU19DT01QTEVURUQ6ImFsbEFkc0NvbXBsZXRlZCIsQ0xJQ0s6ImNsaWNrIixDT01QTEVURToiY29tcGxldGUiLENPTlRFTlRfUEFVU0VfUkVRVUVTVEVEOiJjb250ZW50UGF1c2VSZXF1ZXN0ZWQiLENPTlRFTlRfUkVTVU1FX1JFUVVFU1RFRDoiY29udGVudFJlc3VtZVJlcXVlc3RlZCIsRFVSQVRJT05fQ0hBTkdFOiJkdXJhdGlvbkNoYW5nZSIsRVhQQU5ERURfQ0hBTkdFRDoiZXhwYW5kZWRDaGFuZ2VkIixGSVJTVF9RVUFSVElMRToiZmlyc3RRdWFydGlsZSIsSU1QUkVTU0lPTjoiaW1wcmVzc2lvbiIsSU5URVJBQ1RJT046ImludGVyYWN0aW9uIixMSU5FQVJfQ0hBTkdFOiJsaW5lYXJDaGFuZ2UiLExJTkVBUl9DSEFOR0VEOiJsaW5lYXJDaGFuZ2VkIixMT0FERUQ6ImxvYWRlZCIsTE9HOiJsb2ciLE1JRFBPSU5UOiJtaWRwb2ludCIsUEFVU0VEOiJwYXVzZSIsUkVTVU1FRDoicmVzdW1lIixTS0lQUEFCTEVfU1RBVEVfQ0hBTkdFRDoic2tpcHBhYmxlU3RhdGVDaGFuZ2VkIixTS0lQUEVEOiJza2lwIixTVEFSVEVEOiJzdGFydCIsVEhJUkRfUVVBUlRJTEU6InRoaXJkUXVhcnRpbGUiLFVTRVJfQ0xPU0U6InVzZXJDbG9zZSIsVklERU9fQ0xJQ0tFRDoidmlkZW9DbGlja2VkIixWSURFT19JQ09OX0NMSUNLRUQ6InZpZGVvSWNvbkNsaWNrZWQiLFZJRVdBQkxFX0lNUFJFU1NJT046InZpZXdhYmxlX2ltcHJlc3Npb24iLFZPTFVNRV9DSEFOR0VEOiJ2b2x1bWVDaGFuZ2UiLFZPTFVNRV9NVVRFRDoibXV0ZSJ9O3ZhciBBZEVycm9yRXZlbnQ9ZnVuY3Rpb24oZXJyb3Ipe3RoaXMuZXJyb3I9ZXJyb3IsdGhpcy50eXBlPSJhZEVycm9yIix0aGlzLmdldEVycm9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXJyb3J9LHRoaXMuZ2V0VXNlclJlcXVlc3RDb250ZXh0PWZ1bmN0aW9uKCl7dmFyIF90aGlzJGVycm9yO3JldHVybiBudWxsIT09KF90aGlzJGVycm9yPXRoaXMuZXJyb3IpJiZ2b2lkIDAhPT1fdGhpcyRlcnJvciYmX3RoaXMkZXJyb3IudXNlclJlcXVlc3RDb250ZXh0P3RoaXMuZXJyb3IudXNlclJlcXVlc3RDb250ZXh0Ont9fX07QWRFcnJvckV2ZW50LlR5cGU9e0FEX0VSUk9SOiJhZEVycm9yIn07dmFyIEN1c3RvbUNvbnRlbnRMb2FkZWRFdmVudD1mdW5jdGlvbigpe307Q3VzdG9tQ29udGVudExvYWRlZEV2ZW50LlR5cGU9e0NVU1RPTV9DT05URU5UX0xPQURFRDoiZGVwcmVjYXRlZC1ldmVudCJ9O3ZhciBDb21wYW5pb25BZFNlbGVjdGlvblNldHRpbmdzPWZ1bmN0aW9uKCl7fTtDb21wYW5pb25BZFNlbGVjdGlvblNldHRpbmdzLkNyZWF0aXZlVHlwZT17QUxMOiJBbGwiLEZMQVNIOiJGbGFzaCIsSU1BR0U6IkltYWdlIn0sQ29tcGFuaW9uQWRTZWxlY3Rpb25TZXR0aW5ncy5SZXNvdXJjZVR5cGU9e0FMTDoiQWxsIixIVE1MOiJIdG1sIixJRlJBTUU6IklGcmFtZSIsU1RBVElDOiJTdGF0aWMifSxDb21wYW5pb25BZFNlbGVjdGlvblNldHRpbmdzLlNpemVDcml0ZXJpYT17SUdOT1JFOiJJZ25vcmVTaXplIixTRUxFQ1RfRVhBQ1RfTUFUQ0g6IlNlbGVjdEV4YWN0TWF0Y2giLFNFTEVDVF9ORUFSX01BVENIOiJTZWxlY3ROZWFyTWF0Y2gifTt2YXIgQWRDdWVQb2ludHM9ZnVuY3Rpb24oKXt9O0FkQ3VlUG9pbnRzLnByb3RvdHlwZT17Z2V0Q3VlUG9pbnRzOmZ1bmN0aW9uKCl7cmV0dXJuW119LGdldEFkSWRSZWdpc3RyeTpmdW5jdGlvbigpe3JldHVybiIifSxnZXRBZElzVmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4iIn19O3ZhciBBZFByb2dyZXNzRGF0YT1ub29wRnVuYztPYmplY3QuYXNzaWduKGltYSx7QWRDdWVQb2ludHM6QWRDdWVQb2ludHMsQWREaXNwbGF5Q29udGFpbmVyOkFkRGlzcGxheUNvbnRhaW5lcixBZEVycm9yOkFkRXJyb3IsQWRFcnJvckV2ZW50OkFkRXJyb3JFdmVudCxBZEV2ZW50OkFkRXZlbnQsQWRQb2RJbmZvOkFkUG9kSW5mbyxBZFByb2dyZXNzRGF0YTpBZFByb2dyZXNzRGF0YSxBZHNMb2FkZXI6QWRzTG9hZGVyLEFkc01hbmFnZXI6bWFuYWdlcixBZHNNYW5hZ2VyTG9hZGVkRXZlbnQ6QWRzTWFuYWdlckxvYWRlZEV2ZW50LEFkc1JlbmRlcmluZ1NldHRpbmdzOkFkc1JlbmRlcmluZ1NldHRpbmdzLEFkc1JlcXVlc3Q6QWRzUmVxdWVzdCxDb21wYW5pb25BZDpDb21wYW5pb25BZCxDb21wYW5pb25BZFNlbGVjdGlvblNldHRpbmdzOkNvbXBhbmlvbkFkU2VsZWN0aW9uU2V0dGluZ3MsQ3VzdG9tQ29udGVudExvYWRlZEV2ZW50OkN1c3RvbUNvbnRlbnRMb2FkZWRFdmVudCxncHRQcm94eUluc3RhbmNlOnt9LEltYVNka1NldHRpbmdzOkltYVNka1NldHRpbmdzLE9taWRBY2Nlc3NNb2RlOntET01BSU46ImRvbWFpbiIsRlVMTDoiZnVsbCIsTElNSVRFRDoibGltaXRlZCJ9LHNldHRpbmdzOm5ldyBJbWFTZGtTZXR0aW5ncyxVaUVsZW1lbnRzOntBRF9BVFRSSUJVVElPTjoiYWRBdHRyaWJ1dGlvbiIsQ09VTlRET1dOOiJjb3VudGRvd24ifSxVbml2ZXJzYWxBZElkSW5mbzpmdW5jdGlvbigpe30sVkVSU0lPTjoiMy40NTMuMCIsVmlld01vZGU6e0ZVTExTQ1JFRU46ImZ1bGxzY3JlZW4iLE5PUk1BTDoibm9ybWFsIn19KSx3aW5kb3cuZ29vZ2xlfHwod2luZG93Lmdvb2dsZT17fSksbnVsbCE9PShfd2luZG93JGdvb2dsZSRpbWE9d2luZG93Lmdvb2dsZS5pbWEpJiZ2b2lkIDAhPT1fd2luZG93JGdvb2dsZSRpbWEmJl93aW5kb3ckZ29vZ2xlJGltYS5kYWkmJihpbWEuZGFpPXdpbmRvdy5nb29nbGUuaW1hLmRhaSksd2luZG93Lmdvb2dsZS5pbWE9aW1hLGZ1bmN0aW9uKHNvdXJjZSl7aWYoITA9PT1zb3VyY2UudmVyYm9zZSl7dHJ5e3ZhciBsb2c9Y29uc29sZS5sb2cuYmluZChjb25zb2xlKSx0cmFjZT1jb25zb2xlLnRyYWNlLmJpbmQoY29uc29sZSkscHJlZml4PXNvdXJjZS5ydWxlVGV4dHx8IiI7aWYoc291cmNlLmRvbWFpbk5hbWUpe3ZhciBydWxlU3RhcnRJbmRleCxBR19TQ1JJUFRMRVRfTUFSS0VSPSIjJSMvLyIsVUJPX1NDUklQVExFVF9NQVJLRVI9IiMjK2pzIjtzb3VyY2UucnVsZVRleHQuaW5jbHVkZXMoQUdfU0NSSVBUTEVUX01BUktFUik/cnVsZVN0YXJ0SW5kZXg9c291cmNlLnJ1bGVUZXh0LmluZGV4T2YoQUdfU0NSSVBUTEVUX01BUktFUik6c291cmNlLnJ1bGVUZXh0LmluY2x1ZGVzKFVCT19TQ1JJUFRMRVRfTUFSS0VSKSYmKHJ1bGVTdGFydEluZGV4PXNvdXJjZS5ydWxlVGV4dC5pbmRleE9mKFVCT19TQ1JJUFRMRVRfTUFSS0VSKSk7dmFyIHJ1bGVQYXJ0PXNvdXJjZS5ydWxlVGV4dC5zbGljZShydWxlU3RhcnRJbmRleCk7cHJlZml4PSIiLmNvbmNhdChzb3VyY2UuZG9tYWluTmFtZSkuY29uY2F0KHJ1bGVQYXJ0KX1sb2coIiIuY29uY2F0KHByZWZpeCwiIHRyYWNlIHN0YXJ0IikpLHRyYWNlJiZ0cmFjZSgpLGxvZygiIi5jb25jYXQocHJlZml4LCIgdHJhY2UgZW5kIikpfWNhdGNoKGUpe30iZnVuY3Rpb24iPT10eXBlb2Ygd2luZG93Ll9fZGVidWcmJndpbmRvdy5fX2RlYnVnKHNvdXJjZSl9fShzb3VyY2UpfSkuYXBwbHkodGhpcyx1cGRhdGVkQXJncyl9Y2F0Y2goZSl7Y29uc29sZS5sb2coZSl9fSh7bmFtZToiZ29vZ2xlLWltYTMiLGFyZ3M6W119LFtdKTs=" + "content": "IWZ1bmN0aW9uKHNvdXJjZSxhcmdzKXtmdW5jdGlvbiBub29wRnVuYygpe31mdW5jdGlvbiBsb2dNZXNzYWdlKHNvdXJjZSxtZXNzYWdlKXt2YXIgZm9yY2VkPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0sY29udmVydE1lc3NhZ2VUb1N0cmluZz0hKGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdKXx8YXJndW1lbnRzWzNdLG5hbWU9c291cmNlLm5hbWUsdmVyYm9zZT1zb3VyY2UudmVyYm9zZTtpZihmb3JjZWR8fHZlcmJvc2Upe3ZhciBuYXRpdmVDb25zb2xlPWNvbnNvbGUubG9nO2NvbnZlcnRNZXNzYWdlVG9TdHJpbmc/bmF0aXZlQ29uc29sZSgiIi5jb25jYXQobmFtZSwiOiAiKS5jb25jYXQobWVzc2FnZSkpOm5hdGl2ZUNvbnNvbGUoIiIuY29uY2F0KG5hbWUsIjoiKSxtZXNzYWdlKX19Y29uc3QgdXBkYXRlZEFyZ3M9YXJncz9bXS5jb25jYXQoc291cmNlKS5jb25jYXQoYXJncyk6W3NvdXJjZV07dHJ5eyhmdW5jdGlvbihzb3VyY2Upe3ZhciBfd2luZG93JGdvb2dsZSRpbWEsaW1hPXt9LEFkRGlzcGxheUNvbnRhaW5lcj1mdW5jdGlvbihjb250YWluZXJFbGVtZW50KXt2YXIgZGl2RWxlbWVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtkaXZFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCJkaXNwbGF5Iiwibm9uZSIsImltcG9ydGFudCIpLGRpdkVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoInZpc2liaWxpdHkiLCJjb2xsYXBzZSIsImltcG9ydGFudCIpLGNvbnRhaW5lckVsZW1lbnQmJmNvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQoZGl2RWxlbWVudCl9O0FkRGlzcGxheUNvbnRhaW5lci5wcm90b3R5cGUuZGVzdHJveT1ub29wRnVuYyxBZERpc3BsYXlDb250YWluZXIucHJvdG90eXBlLmluaXRpYWxpemU9bm9vcEZ1bmM7dmFyIEltYVNka1NldHRpbmdzPWZ1bmN0aW9uKCl7fTtJbWFTZGtTZXR0aW5ncy5Db21wYW5pb25CYWNrZmlsbE1vZGU9e0FMV0FZUzoiYWx3YXlzIixPTl9NQVNURVJfQUQ6Im9uX21hc3Rlcl9hZCJ9LEltYVNka1NldHRpbmdzLlZwYWlkTW9kZT17RElTQUJMRUQ6MCxFTkFCTEVEOjEsSU5TRUNVUkU6Mn0sSW1hU2RrU2V0dGluZ3MucHJvdG90eXBlPXtjOiEwLGY6e30saTohMSxsOiIiLHA6IiIscjowLHQ6IiIsdjoiIixnZXRDb21wYW5pb25CYWNrZmlsbDpub29wRnVuYyxnZXREaXNhYmxlQ3VzdG9tUGxheWJhY2tGb3JJT1MxMFBsdXMoKXtyZXR1cm4gdGhpcy5pfSxnZXREaXNhYmxlZEZsYXNoQWRzOmZ1bmN0aW9uKCl7cmV0dXJuITB9LGdldEZlYXR1cmVGbGFncygpe3JldHVybiB0aGlzLmZ9LGdldExvY2FsZSgpe3JldHVybiB0aGlzLmx9LGdldE51bVJlZGlyZWN0cygpe3JldHVybiB0aGlzLnJ9LGdldFBsYXllclR5cGUoKXtyZXR1cm4gdGhpcy50fSxnZXRQbGF5ZXJWZXJzaW9uKCl7cmV0dXJuIHRoaXMudn0sZ2V0UHBpZCgpe3JldHVybiB0aGlzLnB9LGdldFZwYWlkTW9kZSgpe3JldHVybiB0aGlzLkN9LGlzQ29va2llc0VuYWJsZWQoKXtyZXR1cm4gdGhpcy5jfSxpc1ZwYWlkQWRhcHRlcigpe3JldHVybiB0aGlzLk19LHNldENvbXBhbmlvbkJhY2tmaWxsOm5vb3BGdW5jLHNldEF1dG9QbGF5QWRCcmVha3MoYSl7dGhpcy5LPWF9LHNldENvb2tpZXNFbmFibGVkKGMpe3RoaXMuYz0hIWN9LHNldERpc2FibGVDdXN0b21QbGF5YmFja0ZvcklPUzEwUGx1cyhpKXt0aGlzLmk9ISFpfSxzZXREaXNhYmxlRmxhc2hBZHM6bm9vcEZ1bmMsc2V0RmVhdHVyZUZsYWdzKGYpe3RoaXMuZj0hIWZ9LHNldElzVnBhaWRBZGFwdGVyKGEpe3RoaXMuTT1hfSxzZXRMb2NhbGUobCl7dGhpcy5sPSEhbH0sc2V0TnVtUmVkaXJlY3RzKHIpe3RoaXMucj0hIXJ9LHNldFBhZ2VDb3JyZWxhdG9yKGEpe3RoaXMuUj1hfSxzZXRQbGF5ZXJUeXBlKHQpe3RoaXMudD0hIXR9LHNldFBsYXllclZlcnNpb24odil7dGhpcy52PSEhdn0sc2V0UHBpZChwKXt0aGlzLnA9ISFwfSxzZXRWcGFpZE1vZGUoYSl7dGhpcy5DPWF9LHNldFNlc3Npb25JZDpub29wRnVuYyxzZXRTdHJlYW1Db3JyZWxhdG9yOm5vb3BGdW5jLHNldFZwYWlkQWxsb3dlZDpub29wRnVuYyxDb21wYW5pb25CYWNrZmlsbE1vZGU6e0FMV0FZUzoiYWx3YXlzIixPTl9NQVNURVJfQUQ6Im9uX21hc3Rlcl9hZCJ9LFZwYWlkTW9kZTp7RElTQUJMRUQ6MCxFTkFCTEVEOjEsSU5TRUNVUkU6Mn19O3ZhciBFdmVudEhhbmRsZXI9ZnVuY3Rpb24oKXt0aGlzLmxpc3RlbmVycz1uZXcgTWFwLHRoaXMuX2Rpc3BhdGNoPWZ1bmN0aW9uKGUpe3ZhciBsaXN0ZW5lcnM9dGhpcy5saXN0ZW5lcnMuZ2V0KGUudHlwZSk7bGlzdGVuZXJzPWxpc3RlbmVycz9saXN0ZW5lcnMudmFsdWVzKCk6W107Zm9yKHZhciBfaT0wLF9BcnJheSRmcm9tPUFycmF5LmZyb20obGlzdGVuZXJzKTtfaTxfQXJyYXkkZnJvbS5sZW5ndGg7X2krKyl7dmFyIGxpc3RlbmVyPV9BcnJheSRmcm9tW19pXTt0cnl7bGlzdGVuZXIoZSl9Y2F0Y2gocil7bG9nTWVzc2FnZShzb3VyY2Uscil9fX0sdGhpcy5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHR5cGVzLGNhbGxiYWNrLG9wdGlvbnMsY29udGV4dCl7QXJyYXkuaXNBcnJheSh0eXBlcyl8fCh0eXBlcz1bdHlwZXNdKTtmb3IodmFyIGk9MDtpPHR5cGVzLmxlbmd0aDtpKz0xKXt2YXIgdHlwZT10eXBlc1tpXTt0aGlzLmxpc3RlbmVycy5oYXModHlwZSl8fHRoaXMubGlzdGVuZXJzLnNldCh0eXBlLG5ldyBNYXApLHRoaXMubGlzdGVuZXJzLmdldCh0eXBlKS5zZXQoY2FsbGJhY2ssY2FsbGJhY2suYmluZChjb250ZXh0fHx0aGlzKSl9fSx0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odHlwZXMsY2FsbGJhY2spe0FycmF5LmlzQXJyYXkodHlwZXMpfHwodHlwZXM9W3R5cGVzXSk7Zm9yKHZhciBpPTA7aTx0eXBlcy5sZW5ndGg7aSs9MSl7dmFyIF90aGlzJGxpc3RlbmVycyRnZXQsdHlwZT10eXBlc1tpXTtudWxsPT09KF90aGlzJGxpc3RlbmVycyRnZXQ9dGhpcy5saXN0ZW5lcnMuZ2V0KHR5cGUpKXx8dm9pZCAwPT09X3RoaXMkbGlzdGVuZXJzJGdldHx8X3RoaXMkbGlzdGVuZXJzJGdldC5kZWxldGUoY2FsbGJhY2spfX19LEFkc01hbmFnZXI9bmV3IEV2ZW50SGFuZGxlcjtBZHNNYW5hZ2VyLnZvbHVtZT0xLEFkc01hbmFnZXIuY29sbGFwc2U9bm9vcEZ1bmMsQWRzTWFuYWdlci5jb25maWd1cmVBZHNNYW5hZ2VyPW5vb3BGdW5jLEFkc01hbmFnZXIuZGVzdHJveT1ub29wRnVuYyxBZHNNYW5hZ2VyLmRpc2NhcmRBZEJyZWFrPW5vb3BGdW5jLEFkc01hbmFnZXIuZXhwYW5kPW5vb3BGdW5jLEFkc01hbmFnZXIuZm9jdXM9bm9vcEZ1bmMsQWRzTWFuYWdlci5nZXRBZFNraXBwYWJsZVN0YXRlPWZ1bmN0aW9uKCl7cmV0dXJuITF9LEFkc01hbmFnZXIuZ2V0Q3VlUG9pbnRzPWZ1bmN0aW9uKCl7cmV0dXJuWzBdfSxBZHNNYW5hZ2VyLmdldEN1cnJlbnRBZD1mdW5jdGlvbigpe3JldHVybiBjdXJyZW50QWR9LEFkc01hbmFnZXIuZ2V0Q3VycmVudEFkQ3VlUG9pbnRzPWZ1bmN0aW9uKCl7cmV0dXJuW119LEFkc01hbmFnZXIuZ2V0UmVtYWluaW5nVGltZT1mdW5jdGlvbigpe3JldHVybiAwfSxBZHNNYW5hZ2VyLmdldFZvbHVtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZvbHVtZX0sQWRzTWFuYWdlci5pbml0PW5vb3BGdW5jLEFkc01hbmFnZXIuaXNDdXN0b21DbGlja1RyYWNraW5nVXNlZD1mdW5jdGlvbigpe3JldHVybiExfSxBZHNNYW5hZ2VyLmlzQ3VzdG9tUGxheWJhY2tVc2VkPWZ1bmN0aW9uKCl7cmV0dXJuITF9LEFkc01hbmFnZXIucGF1c2U9bm9vcEZ1bmMsQWRzTWFuYWdlci5yZXF1ZXN0TmV4dEFkQnJlYWs9bm9vcEZ1bmMsQWRzTWFuYWdlci5yZXNpemU9bm9vcEZ1bmMsQWRzTWFuYWdlci5yZXN1bWU9bm9vcEZ1bmMsQWRzTWFuYWdlci5zZXRWb2x1bWU9ZnVuY3Rpb24odil7dGhpcy52b2x1bWU9dn0sQWRzTWFuYWdlci5za2lwPW5vb3BGdW5jLEFkc01hbmFnZXIuc3RhcnQ9ZnVuY3Rpb24oKXtmb3IodmFyIF9pMj0wLF9hcnI9W0FkRXZlbnQuVHlwZS5BTExfQURTX0NPTVBMRVRFRCxBZEV2ZW50LlR5cGUuQ09OVEVOVF9SRVNVTUVfUkVRVUVTVEVEXTtfaTI8X2Fyci5sZW5ndGg7X2kyKyspe3ZhciB0eXBlPV9hcnJbX2kyXTt0cnl7dGhpcy5fZGlzcGF0Y2gobmV3IGltYS5BZEV2ZW50KHR5cGUpKX1jYXRjaChlKXtsb2dNZXNzYWdlKHNvdXJjZSxlKX19fSxBZHNNYW5hZ2VyLnN0b3A9bm9vcEZ1bmMsQWRzTWFuYWdlci51cGRhdGVBZHNSZW5kZXJpbmdTZXR0aW5ncz1ub29wRnVuYzt2YXIgbWFuYWdlcj1PYmplY3QuY3JlYXRlKEFkc01hbmFnZXIpLEFkc01hbmFnZXJMb2FkZWRFdmVudD1mdW5jdGlvbih0eXBlLGFkc1JlcXVlc3QsdXNlclJlcXVlc3RDb250ZXh0KXt0aGlzLnR5cGU9dHlwZSx0aGlzLmFkc1JlcXVlc3Q9YWRzUmVxdWVzdCx0aGlzLnVzZXJSZXF1ZXN0Q29udGV4dD11c2VyUmVxdWVzdENvbnRleHR9O0Fkc01hbmFnZXJMb2FkZWRFdmVudC5wcm90b3R5cGU9e2dldEFkc01hbmFnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gbWFuYWdlcn0sZ2V0VXNlclJlcXVlc3RDb250ZXh0KCl7cmV0dXJuIHRoaXMudXNlclJlcXVlc3RDb250ZXh0P3RoaXMudXNlclJlcXVlc3RDb250ZXh0Ont9fX0sQWRzTWFuYWdlckxvYWRlZEV2ZW50LlR5cGU9e0FEU19NQU5BR0VSX0xPQURFRDoiYWRzTWFuYWdlckxvYWRlZCJ9O3ZhciBBZHNMb2FkZXI9RXZlbnRIYW5kbGVyO0Fkc0xvYWRlci5wcm90b3R5cGUuc2V0dGluZ3M9bmV3IEltYVNka1NldHRpbmdzLEFkc0xvYWRlci5wcm90b3R5cGUuY29udGVudENvbXBsZXRlPW5vb3BGdW5jLEFkc0xvYWRlci5wcm90b3R5cGUuZGVzdHJveT1ub29wRnVuYyxBZHNMb2FkZXIucHJvdG90eXBlLmdldFNldHRpbmdzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0dGluZ3N9LEFkc0xvYWRlci5wcm90b3R5cGUuZ2V0VmVyc2lvbj1mdW5jdGlvbigpe3JldHVybiIzLjQ1My4wIn0sQWRzTG9hZGVyLnByb3RvdHlwZS5yZXF1ZXN0QWRzPWZ1bmN0aW9uKGFkc1JlcXVlc3QsdXNlclJlcXVlc3RDb250ZXh0KXt2YXIgX3RoaXM9dGhpcztyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7dmFyIEFEU19NQU5BR0VSX0xPQURFRD1BZHNNYW5hZ2VyTG9hZGVkRXZlbnQuVHlwZS5BRFNfTUFOQUdFUl9MT0FERUQsZXZlbnQ9bmV3IGltYS5BZHNNYW5hZ2VyTG9hZGVkRXZlbnQoQURTX01BTkFHRVJfTE9BREVELGFkc1JlcXVlc3QsdXNlclJlcXVlc3RDb250ZXh0KTtfdGhpcy5fZGlzcGF0Y2goZXZlbnQpfSkpO3ZhciBlPW5ldyBpbWEuQWRFcnJvcigiYWRQbGF5RXJyb3IiLDEyMDUsMTIwNSwiVGhlIGJyb3dzZXIgcHJldmVudGVkIHBsYXliYWNrIGluaXRpYXRlZCB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24uIixhZHNSZXF1ZXN0LHVzZXJSZXF1ZXN0Q29udGV4dCk7cmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe190aGlzLl9kaXNwYXRjaChuZXcgaW1hLkFkRXJyb3JFdmVudChlKSl9KSl9O3ZhciBBZHNSZW5kZXJpbmdTZXR0aW5ncz1ub29wRnVuYyxBZHNSZXF1ZXN0PWZ1bmN0aW9uKCl7fTtBZHNSZXF1ZXN0LnByb3RvdHlwZT17c2V0QWRXaWxsQXV0b1BsYXk6bm9vcEZ1bmMsc2V0QWRXaWxsUGxheU11dGVkOm5vb3BGdW5jLHNldENvbnRpbnVvdXNQbGF5YmFjazpub29wRnVuY307dmFyIEFkUG9kSW5mbz1mdW5jdGlvbigpe307QWRQb2RJbmZvLnByb3RvdHlwZT17Z2V0QWRQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiAxfSxnZXRJc0J1bXBlcjpmdW5jdGlvbigpe3JldHVybiExfSxnZXRNYXhEdXJhdGlvbjpmdW5jdGlvbigpe3JldHVybi0xfSxnZXRQb2RJbmRleDpmdW5jdGlvbigpe3JldHVybiAxfSxnZXRUaW1lT2Zmc2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDB9LGdldFRvdGFsQWRzOmZ1bmN0aW9uKCl7cmV0dXJuIDF9fTt2YXIgVW5pdmVyc2FsQWRJZEluZm89ZnVuY3Rpb24oKXt9O1VuaXZlcnNhbEFkSWRJbmZvLnByb3RvdHlwZS5nZXRBZElkUmVnaXN0cnk9ZnVuY3Rpb24oKXtyZXR1cm4iIn0sVW5pdmVyc2FsQWRJZEluZm8ucHJvdG90eXBlLmdldEFkSXNWYWx1ZT1mdW5jdGlvbigpe3JldHVybiIifTt2YXIgQWQ9ZnVuY3Rpb24oKXt9O0FkLnByb3RvdHlwZT17cGk6bmV3IEFkUG9kSW5mbyxnZXRBZElkOmZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGdldEFkUG9kSW5mbygpe3JldHVybiB0aGlzLnBpfSxnZXRBZFN5c3RlbTpmdW5jdGlvbigpe3JldHVybiIifSxnZXRBZHZlcnRpc2VyTmFtZTpmdW5jdGlvbigpe3JldHVybiIifSxnZXRBcGlGcmFtZXdvcms6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZ2V0Q29tcGFuaW9uQWRzOmZ1bmN0aW9uKCl7cmV0dXJuW119LGdldENvbnRlbnRUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGdldENyZWF0aXZlQWRJZDpmdW5jdGlvbigpe3JldHVybiIifSxnZXREZWFsSWQ6ZnVuY3Rpb24oKXtyZXR1cm4iIn0sZ2V0RGVzY3JpcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4iIn0sZ2V0RHVyYXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gOC41fSxnZXRIZWlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sZ2V0TWVkaWFVcmw6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZ2V0TWluU3VnZ2VzdGVkRHVyYXRpb246ZnVuY3Rpb24oKXtyZXR1cm4tMn0sZ2V0U2tpcFRpbWVPZmZzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4tMX0sZ2V0U3VydmV5VXJsOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGdldFRpdGxlOmZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGdldFRyYWZmaWNraW5nUGFyYW1ldGVyc1N0cmluZzpmdW5jdGlvbigpe3JldHVybiIifSxnZXRVaUVsZW1lbnRzOmZ1bmN0aW9uKCl7cmV0dXJuWyIiXX0sZ2V0VW5pdmVyc2FsQWRJZFJlZ2lzdHJ5OmZ1bmN0aW9uKCl7cmV0dXJuInVua25vd24ifSxnZXRVbml2ZXJzYWxBZElkczpmdW5jdGlvbigpe3JldHVybltuZXcgVW5pdmVyc2FsQWRJZEluZm9dfSxnZXRVbml2ZXJzYWxBZElkVmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4idW5rbm93biJ9LGdldFZhc3RNZWRpYUJpdHJhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sZ2V0VmFzdE1lZGlhSGVpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIDB9LGdldFZhc3RNZWRpYVdpZHRoOmZ1bmN0aW9uKCl7cmV0dXJuIDB9LGdldFdpZHRoOmZ1bmN0aW9uKCl7cmV0dXJuIDB9LGdldFdyYXBwZXJBZElkczpmdW5jdGlvbigpe3JldHVyblsiIl19LGdldFdyYXBwZXJBZFN5c3RlbXM6ZnVuY3Rpb24oKXtyZXR1cm5bIiJdfSxnZXRXcmFwcGVyQ3JlYXRpdmVJZHM6ZnVuY3Rpb24oKXtyZXR1cm5bIiJdfSxpc0xpbmVhcjpmdW5jdGlvbigpe3JldHVybiEwfSxpc1NraXBwYWJsZTooKT0+ITB9O3ZhciBDb21wYW5pb25BZD1mdW5jdGlvbigpe307Q29tcGFuaW9uQWQucHJvdG90eXBlPXtnZXRBZFNsb3RJZDpmdW5jdGlvbigpe3JldHVybiIifSxnZXRDb250ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGdldENvbnRlbnRUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGdldEhlaWdodDpmdW5jdGlvbigpe3JldHVybiAxfSxnZXRXaWR0aDpmdW5jdGlvbigpe3JldHVybiAxfX07dmFyIEFkRXJyb3I9ZnVuY3Rpb24odHlwZSxjb2RlLHZhc3QsbWVzc2FnZSxhZHNSZXF1ZXN0LHVzZXJSZXF1ZXN0Q29udGV4dCl7dGhpcy5lcnJvckNvZGU9Y29kZSx0aGlzLm1lc3NhZ2U9bWVzc2FnZSx0aGlzLnR5cGU9dHlwZSx0aGlzLmFkc1JlcXVlc3Q9YWRzUmVxdWVzdCx0aGlzLnVzZXJSZXF1ZXN0Q29udGV4dD11c2VyUmVxdWVzdENvbnRleHQsdGhpcy5nZXRFcnJvckNvZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcnJvckNvZGV9LHRoaXMuZ2V0SW5uZXJFcnJvcj1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0aGlzLmdldE1lc3NhZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZXNzYWdlfSx0aGlzLmdldFR5cGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50eXBlfSx0aGlzLmdldFZhc3RFcnJvckNvZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YXN0RXJyb3JDb2RlfSx0aGlzLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkFkRXJyb3IgIi5jb25jYXQodGhpcy5lcnJvckNvZGUsIjogIikuY29uY2F0KHRoaXMubWVzc2FnZSl9fTtBZEVycm9yLkVycm9yQ29kZT17fSxBZEVycm9yLlR5cGU9e307dmFyIGN1cnJlbnRBZD1mdW5jdGlvbigpe3RyeXtmb3IodmFyIF9pMz0wLF9PYmplY3QkdmFsdWVzPU9iamVjdC52YWx1ZXMod2luZG93LnZpZGlibGUuX2dldENvbnRleHRzKCkpO19pMzxfT2JqZWN0JHZhbHVlcy5sZW5ndGg7X2kzKyspe3ZhciBfY3R4JGdldFBsYXllcixfY3R4JGdldFBsYXllciRkaXY7aWYobnVsbCE9PShfY3R4JGdldFBsYXllcj1fT2JqZWN0JHZhbHVlc1tfaTNdLmdldFBsYXllcigpKSYmdm9pZCAwIT09X2N0eCRnZXRQbGF5ZXImJm51bGwhPT0oX2N0eCRnZXRQbGF5ZXIkZGl2PV9jdHgkZ2V0UGxheWVyLmRpdikmJnZvaWQgMCE9PV9jdHgkZ2V0UGxheWVyJGRpdiYmX2N0eCRnZXRQbGF5ZXIkZGl2LmlubmVySFRNTC5pbmNsdWRlcygid3d3LmVuZ2FkZ2V0LmNvbSIpKXJldHVybiEwfX1jYXRjaChlKXt9cmV0dXJuITF9KCk/dm9pZCAwOm5ldyBBZCxBZEV2ZW50PWZ1bmN0aW9uKHR5cGUpe3RoaXMudHlwZT10eXBlfTtBZEV2ZW50LnByb3RvdHlwZT17Z2V0QWQ6ZnVuY3Rpb24oKXtyZXR1cm4gY3VycmVudEFkfSxnZXRBZERhdGE6ZnVuY3Rpb24oKXt9fSxBZEV2ZW50LlR5cGU9e0FEX0JSRUFLX1JFQURZOiJhZEJyZWFrUmVhZHkiLEFEX0JVRkZFUklORzoiYWRCdWZmZXJpbmciLEFEX0NBTl9QTEFZOiJhZENhblBsYXkiLEFEX01FVEFEQVRBOiJhZE1ldGFkYXRhIixBRF9QUk9HUkVTUzoiYWRQcm9ncmVzcyIsQUxMX0FEU19DT01QTEVURUQ6ImFsbEFkc0NvbXBsZXRlZCIsQ0xJQ0s6ImNsaWNrIixDT01QTEVURToiY29tcGxldGUiLENPTlRFTlRfUEFVU0VfUkVRVUVTVEVEOiJjb250ZW50UGF1c2VSZXF1ZXN0ZWQiLENPTlRFTlRfUkVTVU1FX1JFUVVFU1RFRDoiY29udGVudFJlc3VtZVJlcXVlc3RlZCIsRFVSQVRJT05fQ0hBTkdFOiJkdXJhdGlvbkNoYW5nZSIsRVhQQU5ERURfQ0hBTkdFRDoiZXhwYW5kZWRDaGFuZ2VkIixGSVJTVF9RVUFSVElMRToiZmlyc3RRdWFydGlsZSIsSU1QUkVTU0lPTjoiaW1wcmVzc2lvbiIsSU5URVJBQ1RJT046ImludGVyYWN0aW9uIixMSU5FQVJfQ0hBTkdFOiJsaW5lYXJDaGFuZ2UiLExJTkVBUl9DSEFOR0VEOiJsaW5lYXJDaGFuZ2VkIixMT0FERUQ6ImxvYWRlZCIsTE9HOiJsb2ciLE1JRFBPSU5UOiJtaWRwb2ludCIsUEFVU0VEOiJwYXVzZSIsUkVTVU1FRDoicmVzdW1lIixTS0lQUEFCTEVfU1RBVEVfQ0hBTkdFRDoic2tpcHBhYmxlU3RhdGVDaGFuZ2VkIixTS0lQUEVEOiJza2lwIixTVEFSVEVEOiJzdGFydCIsVEhJUkRfUVVBUlRJTEU6InRoaXJkUXVhcnRpbGUiLFVTRVJfQ0xPU0U6InVzZXJDbG9zZSIsVklERU9fQ0xJQ0tFRDoidmlkZW9DbGlja2VkIixWSURFT19JQ09OX0NMSUNLRUQ6InZpZGVvSWNvbkNsaWNrZWQiLFZJRVdBQkxFX0lNUFJFU1NJT046InZpZXdhYmxlX2ltcHJlc3Npb24iLFZPTFVNRV9DSEFOR0VEOiJ2b2x1bWVDaGFuZ2UiLFZPTFVNRV9NVVRFRDoibXV0ZSJ9O3ZhciBBZEVycm9yRXZlbnQ9ZnVuY3Rpb24oZXJyb3Ipe3RoaXMuZXJyb3I9ZXJyb3IsdGhpcy50eXBlPSJhZEVycm9yIix0aGlzLmdldEVycm9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXJyb3J9LHRoaXMuZ2V0VXNlclJlcXVlc3RDb250ZXh0PWZ1bmN0aW9uKCl7dmFyIF90aGlzJGVycm9yO3JldHVybiBudWxsIT09KF90aGlzJGVycm9yPXRoaXMuZXJyb3IpJiZ2b2lkIDAhPT1fdGhpcyRlcnJvciYmX3RoaXMkZXJyb3IudXNlclJlcXVlc3RDb250ZXh0P3RoaXMuZXJyb3IudXNlclJlcXVlc3RDb250ZXh0Ont9fX07QWRFcnJvckV2ZW50LlR5cGU9e0FEX0VSUk9SOiJhZEVycm9yIn07dmFyIEN1c3RvbUNvbnRlbnRMb2FkZWRFdmVudD1mdW5jdGlvbigpe307Q3VzdG9tQ29udGVudExvYWRlZEV2ZW50LlR5cGU9e0NVU1RPTV9DT05URU5UX0xPQURFRDoiZGVwcmVjYXRlZC1ldmVudCJ9O3ZhciBDb21wYW5pb25BZFNlbGVjdGlvblNldHRpbmdzPWZ1bmN0aW9uKCl7fTtDb21wYW5pb25BZFNlbGVjdGlvblNldHRpbmdzLkNyZWF0aXZlVHlwZT17QUxMOiJBbGwiLEZMQVNIOiJGbGFzaCIsSU1BR0U6IkltYWdlIn0sQ29tcGFuaW9uQWRTZWxlY3Rpb25TZXR0aW5ncy5SZXNvdXJjZVR5cGU9e0FMTDoiQWxsIixIVE1MOiJIdG1sIixJRlJBTUU6IklGcmFtZSIsU1RBVElDOiJTdGF0aWMifSxDb21wYW5pb25BZFNlbGVjdGlvblNldHRpbmdzLlNpemVDcml0ZXJpYT17SUdOT1JFOiJJZ25vcmVTaXplIixTRUxFQ1RfRVhBQ1RfTUFUQ0g6IlNlbGVjdEV4YWN0TWF0Y2giLFNFTEVDVF9ORUFSX01BVENIOiJTZWxlY3ROZWFyTWF0Y2gifTt2YXIgQWRDdWVQb2ludHM9ZnVuY3Rpb24oKXt9O0FkQ3VlUG9pbnRzLnByb3RvdHlwZT17Z2V0Q3VlUG9pbnRzOmZ1bmN0aW9uKCl7cmV0dXJuW119LGdldEFkSWRSZWdpc3RyeTpmdW5jdGlvbigpe3JldHVybiIifSxnZXRBZElkVmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4iIn19O3ZhciBBZFByb2dyZXNzRGF0YT1ub29wRnVuYztPYmplY3QuYXNzaWduKGltYSx7QWRDdWVQb2ludHM6QWRDdWVQb2ludHMsQWREaXNwbGF5Q29udGFpbmVyOkFkRGlzcGxheUNvbnRhaW5lcixBZEVycm9yOkFkRXJyb3IsQWRFcnJvckV2ZW50OkFkRXJyb3JFdmVudCxBZEV2ZW50OkFkRXZlbnQsQWRQb2RJbmZvOkFkUG9kSW5mbyxBZFByb2dyZXNzRGF0YTpBZFByb2dyZXNzRGF0YSxBZHNMb2FkZXI6QWRzTG9hZGVyLEFkc01hbmFnZXI6bWFuYWdlcixBZHNNYW5hZ2VyTG9hZGVkRXZlbnQ6QWRzTWFuYWdlckxvYWRlZEV2ZW50LEFkc1JlbmRlcmluZ1NldHRpbmdzOkFkc1JlbmRlcmluZ1NldHRpbmdzLEFkc1JlcXVlc3Q6QWRzUmVxdWVzdCxDb21wYW5pb25BZDpDb21wYW5pb25BZCxDb21wYW5pb25BZFNlbGVjdGlvblNldHRpbmdzOkNvbXBhbmlvbkFkU2VsZWN0aW9uU2V0dGluZ3MsQ3VzdG9tQ29udGVudExvYWRlZEV2ZW50OkN1c3RvbUNvbnRlbnRMb2FkZWRFdmVudCxncHRQcm94eUluc3RhbmNlOnt9LEltYVNka1NldHRpbmdzOkltYVNka1NldHRpbmdzLE9taWRBY2Nlc3NNb2RlOntET01BSU46ImRvbWFpbiIsRlVMTDoiZnVsbCIsTElNSVRFRDoibGltaXRlZCJ9LE9taWRWZXJpZmljYXRpb25WZW5kb3I6ezE6Ik9USEVSIiwyOiJNT0FUIiwzOiJET1VCTEVWRVJJRlkiLDQ6IklOVEVHUkFMX0FEX1NDSUVOQ0UiLDU6IlBJWEVMQVRFIiw2OiJOSUVMU0VOIiw3OiJDT01TQ09SRSIsODoiTUVFVFJJQ1MiLDk6IkdPT0dMRSIsT1RIRVI6MSxNT0FUOjIsRE9VQkxFVkVSSUZZOjMsSU5URUdSQUxfQURfU0NJRU5DRTo0LFBJWEVMQVRFOjUsTklFTFNFTjo2LENPTVNDT1JFOjcsTUVFVFJJQ1M6OCxHT09HTEU6OX0sc2V0dGluZ3M6bmV3IEltYVNka1NldHRpbmdzLFVpRWxlbWVudHM6e0FEX0FUVFJJQlVUSU9OOiJhZEF0dHJpYnV0aW9uIixDT1VOVERPV046ImNvdW50ZG93biJ9LFVuaXZlcnNhbEFkSWRJbmZvOlVuaXZlcnNhbEFkSWRJbmZvLFZFUlNJT046IjMuNDUzLjAiLFZpZXdNb2RlOntGVUxMU0NSRUVOOiJmdWxsc2NyZWVuIixOT1JNQUw6Im5vcm1hbCJ9fSksd2luZG93Lmdvb2dsZXx8KHdpbmRvdy5nb29nbGU9e30pLG51bGwhPT0oX3dpbmRvdyRnb29nbGUkaW1hPXdpbmRvdy5nb29nbGUuaW1hKSYmdm9pZCAwIT09X3dpbmRvdyRnb29nbGUkaW1hJiZfd2luZG93JGdvb2dsZSRpbWEuZGFpJiYoaW1hLmRhaT13aW5kb3cuZ29vZ2xlLmltYS5kYWkpLHdpbmRvdy5nb29nbGUuaW1hPWltYSxmdW5jdGlvbihzb3VyY2Upe2lmKCEwPT09c291cmNlLnZlcmJvc2Upe3RyeXt2YXIgbG9nPWNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksdHJhY2U9Y29uc29sZS50cmFjZS5iaW5kKGNvbnNvbGUpLHByZWZpeD1zb3VyY2UucnVsZVRleHR8fCIiO2lmKHNvdXJjZS5kb21haW5OYW1lKXt2YXIgcnVsZVN0YXJ0SW5kZXgsQUdfU0NSSVBUTEVUX01BUktFUj0iIyUjLy8iLFVCT19TQ1JJUFRMRVRfTUFSS0VSPSIjIytqcyI7c291cmNlLnJ1bGVUZXh0LmluY2x1ZGVzKEFHX1NDUklQVExFVF9NQVJLRVIpP3J1bGVTdGFydEluZGV4PXNvdXJjZS5ydWxlVGV4dC5pbmRleE9mKEFHX1NDUklQVExFVF9NQVJLRVIpOnNvdXJjZS5ydWxlVGV4dC5pbmNsdWRlcyhVQk9fU0NSSVBUTEVUX01BUktFUikmJihydWxlU3RhcnRJbmRleD1zb3VyY2UucnVsZVRleHQuaW5kZXhPZihVQk9fU0NSSVBUTEVUX01BUktFUikpO3ZhciBydWxlUGFydD1zb3VyY2UucnVsZVRleHQuc2xpY2UocnVsZVN0YXJ0SW5kZXgpO3ByZWZpeD0iIi5jb25jYXQoc291cmNlLmRvbWFpbk5hbWUpLmNvbmNhdChydWxlUGFydCl9bG9nKCIiLmNvbmNhdChwcmVmaXgsIiB0cmFjZSBzdGFydCIpKSx0cmFjZSYmdHJhY2UoKSxsb2coIiIuY29uY2F0KHByZWZpeCwiIHRyYWNlIGVuZCIpKX1jYXRjaChlKXt9ImZ1bmN0aW9uIj09dHlwZW9mIHdpbmRvdy5fX2RlYnVnJiZ3aW5kb3cuX19kZWJ1Zyhzb3VyY2UpfX0oc291cmNlKX0pLmFwcGx5KHRoaXMsdXBkYXRlZEFyZ3MpfWNhdGNoKGUpe2NvbnNvbGUubG9nKGUpfX0oe25hbWU6Imdvb2dsZS1pbWEzIixhcmdzOltdfSxbXSk7" }, { "title": "googlesyndication-adsbygoogle", diff --git a/dist/redirects.yml b/dist/redirects.yml index 4e56f2db..eacc8271 100644 --- a/dist/redirects.yml +++ b/dist/redirects.yml @@ -1,6 +1,6 @@ # # AdGuard Scriptlets (Redirects Source) -# Version 1.9.101 +# Version 1.9.105 # - title: 1x1-transparent.gif added: v1.0.4 @@ -1345,12 +1345,14 @@ content: |- (function(source, args) { function GoogleAnalytics(source) { + var _window$googleAnalyti; var Tracker = function Tracker() {}; var proto = Tracker.prototype; proto.get = noopFunc; proto.set = noopFunc; proto.send = noopFunc; var googleAnalyticsName = window.GoogleAnalyticsObject || "ga"; + var queue = (_window$googleAnalyti = window[googleAnalyticsName]) === null || _window$googleAnalyti === void 0 ? void 0 : _window$googleAnalyti.q; function ga(a) { var len = arguments.length; if (len === 0) { @@ -1381,6 +1383,13 @@ ga.remove = noopFunc; ga.loaded = true; window[googleAnalyticsName] = ga; + if (Array.isArray(queue)) { + var push = function push(arg) { + ga(...arg); + }; + queue.push = push; + queue.forEach(push); + } var _window = window, dataLayer = _window.dataLayer, google_optimize = _window.google_optimize; if (dataLayer instanceof Object === false) { return; @@ -1481,7 +1490,14 @@ var _window$google$ima; var VERSION = "3.453.0"; var ima = {}; - var AdDisplayContainer = function AdDisplayContainer() {}; + var AdDisplayContainer = function AdDisplayContainer(containerElement) { + var divElement = document.createElement("div"); + divElement.style.setProperty("display", "none", "important"); + divElement.style.setProperty("visibility", "collapse", "important"); + if (containerElement) { + containerElement.appendChild(divElement); + } + }; AdDisplayContainer.prototype.destroy = noopFunc; AdDisplayContainer.prototype.initialize = noopFunc; var ImaSdkSettings = function ImaSdkSettings() {}; @@ -1591,7 +1607,8 @@ var EventHandler = function EventHandler() { this.listeners = new Map; this._dispatch = function(e) { - var listeners = this.listeners.get(e.type) || []; + var listeners = this.listeners.get(e.type); + listeners = listeners ? listeners.values() : []; for (var _i = 0, _Array$from = Array.from(listeners); _i < _Array$from.length; _i++) { var listener = _Array$from[_i]; try { @@ -1601,15 +1618,27 @@ } } }; - this.addEventListener = function(t, c) { - if (!this.listeners.has(t)) { - this.listeners.set(t, new Set); + this.addEventListener = function(types, callback, options, context) { + if (!Array.isArray(types)) { + types = [ types ]; + } + for (var i = 0; i < types.length; i += 1) { + var type = types[i]; + if (!this.listeners.has(type)) { + this.listeners.set(type, new Map); + } + this.listeners.get(type).set(callback, callback.bind(context || this)); } - this.listeners.get(t).add(c); }; - this.removeEventListener = function(t, c) { - var _this$listeners$get; - (_this$listeners$get = this.listeners.get(t)) === null || _this$listeners$get === void 0 ? void 0 : _this$listeners$get.delete(c); + this.removeEventListener = function(types, callback) { + if (!Array.isArray(types)) { + types = [ types ]; + } + for (var i = 0; i < types.length; i += 1) { + var _this$listeners$get; + var type = types[i]; + (_this$listeners$get = this.listeners.get(type)) === null || _this$listeners$get === void 0 ? void 0 : _this$listeners$get.delete(callback); + } }; }; var AdsManager = new EventHandler; @@ -1735,6 +1764,13 @@ return 1; } }; + var UniversalAdIdInfo = function UniversalAdIdInfo() {}; + UniversalAdIdInfo.prototype.getAdIdRegistry = function() { + return ""; + }; + UniversalAdIdInfo.prototype.getAdIsValue = function() { + return ""; + }; var Ad = function Ad() {}; Ad.prototype = { pi: new AdPodInfo, @@ -1799,7 +1835,7 @@ return "unknown"; }, getUniversalAdIds: function getUniversalAdIds() { - return [ "" ]; + return [ new UniversalAdIdInfo ]; }, getUniversalAdIdValue: function getUniversalAdIdValue() { return "unknown"; @@ -1859,7 +1895,9 @@ this.getErrorCode = function() { return this.errorCode; }; - this.getInnerError = function() {}; + this.getInnerError = function() { + return null; + }; this.getMessage = function() { return this.message; }; @@ -1977,12 +2015,11 @@ getAdIdRegistry: function getAdIdRegistry() { return ""; }, - getAdIsValue: function getAdIsValue() { + getAdIdValue: function getAdIdValue() { return ""; } }; var AdProgressData = noopFunc; - var UniversalAdIdInfo = function UniversalAdIdInfo() {}; Object.assign(ima, { AdCuePoints: AdCuePoints, AdDisplayContainer: AdDisplayContainer, @@ -2006,6 +2043,26 @@ FULL: "full", LIMITED: "limited" }, + OmidVerificationVendor: { + 1: "OTHER", + 2: "MOAT", + 3: "DOUBLEVERIFY", + 4: "INTEGRAL_AD_SCIENCE", + 5: "PIXELATE", + 6: "NIELSEN", + 7: "COMSCORE", + 8: "MEETRICS", + 9: "GOOGLE", + OTHER: 1, + MOAT: 2, + DOUBLEVERIFY: 3, + INTEGRAL_AD_SCIENCE: 4, + PIXELATE: 5, + NIELSEN: 6, + COMSCORE: 7, + MEETRICS: 8, + GOOGLE: 9 + }, settings: new ImaSdkSettings, UiElements: { AD_ATTRIBUTION: "adAttribution", diff --git a/dist/scriptlets.corelibs.json b/dist/scriptlets.corelibs.json index 8882ef77..f22633bb 100644 --- a/dist/scriptlets.corelibs.json +++ b/dist/scriptlets.corelibs.json @@ -1,5 +1,5 @@ { - "version": "1.9.101", + "version": "1.9.105", "scriptlets": [ { "names": [ diff --git a/dist/scriptlets.js b/dist/scriptlets.js index ee968cab..5df72b82 100644 --- a/dist/scriptlets.js +++ b/dist/scriptlets.js @@ -1,7 +1,7 @@ /** * AdGuard Scriptlets - * Version 1.9.101 + * Version 1.9.105 */ (function () { @@ -11384,6 +11384,7 @@ * @added v1.0.10. */ function GoogleAnalytics(source) { + var _window$googleAnalyti; // eslint-disable-next-line func-names var Tracker = function Tracker() {}; // constructor var proto = Tracker.prototype; @@ -11391,6 +11392,8 @@ proto.set = noopFunc; proto.send = noopFunc; var googleAnalyticsName = window.GoogleAnalyticsObject || 'ga'; + var queue = (_window$googleAnalyti = window[googleAnalyticsName]) === null || _window$googleAnalyti === void 0 ? void 0 : _window$googleAnalyti.q; + // a -- fake arg for 'ga.length < 1' antiadblock checking // eslint-disable-next-line no-unused-vars function ga(a) { @@ -11427,6 +11430,13 @@ ga.remove = noopFunc; ga.loaded = true; window[googleAnalyticsName] = ga; + if (Array.isArray(queue)) { + var push = function push(arg) { + ga(...arg); + }; + queue.push = push; + queue.forEach(push); + } var _window = window, dataLayer = _window.dataLayer, google_optimize = _window.google_optimize; // eslint-disable-line camelcase @@ -12774,7 +12784,14 @@ var _window$google$ima; var VERSION = '3.453.0'; var ima = {}; - var AdDisplayContainer = function AdDisplayContainer() {}; + var AdDisplayContainer = function AdDisplayContainer(containerElement) { + var divElement = document.createElement('div'); + divElement.style.setProperty('display', 'none', 'important'); + divElement.style.setProperty('visibility', 'collapse', 'important'); + if (containerElement) { + containerElement.appendChild(divElement); + } + }; AdDisplayContainer.prototype.destroy = noopFunc; AdDisplayContainer.prototype.initialize = noopFunc; var ImaSdkSettings = function ImaSdkSettings() {}; @@ -12884,8 +12901,8 @@ var EventHandler = function EventHandler() { this.listeners = new Map(); this._dispatch = function (e) { - var listeners = this.listeners.get(e.type) || []; - // eslint-disable-next-line no-restricted-syntax + var listeners = this.listeners.get(e.type); + listeners = listeners ? listeners.values() : []; for (var _i = 0, _Array$from = Array.from(listeners); _i < _Array$from.length; _i++) { var listener = _Array$from[_i]; try { @@ -12895,15 +12912,27 @@ } } }; - this.addEventListener = function (t, c) { - if (!this.listeners.has(t)) { - this.listeners.set(t, new Set()); + this.addEventListener = function (types, callback, options, context) { + if (!Array.isArray(types)) { + types = [types]; + } + for (var i = 0; i < types.length; i += 1) { + var type = types[i]; + if (!this.listeners.has(type)) { + this.listeners.set(type, new Map()); + } + this.listeners.get(type).set(callback, callback.bind(context || this)); } - this.listeners.get(t).add(c); }; - this.removeEventListener = function (t, c) { - var _this$listeners$get; - (_this$listeners$get = this.listeners.get(t)) === null || _this$listeners$get === void 0 ? void 0 : _this$listeners$get.delete(c); + this.removeEventListener = function (types, callback) { + if (!Array.isArray(types)) { + types = [types]; + } + for (var i = 0; i < types.length; i += 1) { + var _this$listeners$get; + var type = types[i]; + (_this$listeners$get = this.listeners.get(type)) === null || _this$listeners$get === void 0 ? void 0 : _this$listeners$get.delete(callback); + } }; }; var AdsManager = new EventHandler(); @@ -13033,6 +13062,13 @@ return 1; } }; + var UniversalAdIdInfo = function UniversalAdIdInfo() {}; + UniversalAdIdInfo.prototype.getAdIdRegistry = function () { + return ''; + }; + UniversalAdIdInfo.prototype.getAdIsValue = function () { + return ''; + }; var Ad = function Ad() {}; Ad.prototype = { pi: new AdPodInfo(), @@ -13097,7 +13133,7 @@ return 'unknown'; }, getUniversalAdIds: function getUniversalAdIds() { - return ['']; + return [new UniversalAdIdInfo()]; }, getUniversalAdIdValue: function getUniversalAdIdValue() { return 'unknown'; @@ -13157,7 +13193,9 @@ this.getErrorCode = function () { return this.errorCode; }; - this.getInnerError = function () {}; + this.getInnerError = function () { + return null; + }; this.getMessage = function () { return this.message; }; @@ -13277,12 +13315,11 @@ getAdIdRegistry: function getAdIdRegistry() { return ''; }, - getAdIsValue: function getAdIsValue() { + getAdIdValue: function getAdIdValue() { return ''; } }; var AdProgressData = noopFunc; - var UniversalAdIdInfo = function UniversalAdIdInfo() {}; Object.assign(ima, { AdCuePoints, AdDisplayContainer, @@ -13306,6 +13343,26 @@ FULL: 'full', LIMITED: 'limited' }, + OmidVerificationVendor: { + 1: 'OTHER', + 2: 'MOAT', + 3: 'DOUBLEVERIFY', + 4: 'INTEGRAL_AD_SCIENCE', + 5: 'PIXELATE', + 6: 'NIELSEN', + 7: 'COMSCORE', + 8: 'MEETRICS', + 9: 'GOOGLE', + OTHER: 1, + MOAT: 2, + DOUBLEVERIFY: 3, + INTEGRAL_AD_SCIENCE: 4, + PIXELATE: 5, + NIELSEN: 6, + COMSCORE: 7, + MEETRICS: 8, + GOOGLE: 9 + }, settings: new ImaSdkSettings(), UiElements: { AD_ATTRIBUTION: 'adAttribution', @@ -17067,7 +17124,7 @@ convertAdgRedirectToUbo }; - var version = "1.9.101"; + var version = "1.9.105"; function abortCurrentInlineScript(source, args) { function abortCurrentInlineScript(source, property, search) { diff --git a/dist/umd/scriptlets.umd.js b/dist/umd/scriptlets.umd.js index 2a3b6799..8124037e 100644 --- a/dist/umd/scriptlets.umd.js +++ b/dist/umd/scriptlets.umd.js @@ -1,7 +1,7 @@ /** * AdGuard Scriptlets - * Version 1.9.101 + * Version 1.9.105 */ (function (factory) { @@ -11386,6 +11386,7 @@ * @added v1.0.10. */ function GoogleAnalytics(source) { + var _window$googleAnalyti; // eslint-disable-next-line func-names var Tracker = function Tracker() {}; // constructor var proto = Tracker.prototype; @@ -11393,6 +11394,8 @@ proto.set = noopFunc; proto.send = noopFunc; var googleAnalyticsName = window.GoogleAnalyticsObject || 'ga'; + var queue = (_window$googleAnalyti = window[googleAnalyticsName]) === null || _window$googleAnalyti === void 0 ? void 0 : _window$googleAnalyti.q; + // a -- fake arg for 'ga.length < 1' antiadblock checking // eslint-disable-next-line no-unused-vars function ga(a) { @@ -11429,6 +11432,13 @@ ga.remove = noopFunc; ga.loaded = true; window[googleAnalyticsName] = ga; + if (Array.isArray(queue)) { + var push = function push(arg) { + ga(...arg); + }; + queue.push = push; + queue.forEach(push); + } var _window = window, dataLayer = _window.dataLayer, google_optimize = _window.google_optimize; // eslint-disable-line camelcase @@ -12776,7 +12786,14 @@ var _window$google$ima; var VERSION = '3.453.0'; var ima = {}; - var AdDisplayContainer = function AdDisplayContainer() {}; + var AdDisplayContainer = function AdDisplayContainer(containerElement) { + var divElement = document.createElement('div'); + divElement.style.setProperty('display', 'none', 'important'); + divElement.style.setProperty('visibility', 'collapse', 'important'); + if (containerElement) { + containerElement.appendChild(divElement); + } + }; AdDisplayContainer.prototype.destroy = noopFunc; AdDisplayContainer.prototype.initialize = noopFunc; var ImaSdkSettings = function ImaSdkSettings() {}; @@ -12886,8 +12903,8 @@ var EventHandler = function EventHandler() { this.listeners = new Map(); this._dispatch = function (e) { - var listeners = this.listeners.get(e.type) || []; - // eslint-disable-next-line no-restricted-syntax + var listeners = this.listeners.get(e.type); + listeners = listeners ? listeners.values() : []; for (var _i = 0, _Array$from = Array.from(listeners); _i < _Array$from.length; _i++) { var listener = _Array$from[_i]; try { @@ -12897,15 +12914,27 @@ } } }; - this.addEventListener = function (t, c) { - if (!this.listeners.has(t)) { - this.listeners.set(t, new Set()); + this.addEventListener = function (types, callback, options, context) { + if (!Array.isArray(types)) { + types = [types]; + } + for (var i = 0; i < types.length; i += 1) { + var type = types[i]; + if (!this.listeners.has(type)) { + this.listeners.set(type, new Map()); + } + this.listeners.get(type).set(callback, callback.bind(context || this)); } - this.listeners.get(t).add(c); }; - this.removeEventListener = function (t, c) { - var _this$listeners$get; - (_this$listeners$get = this.listeners.get(t)) === null || _this$listeners$get === void 0 ? void 0 : _this$listeners$get.delete(c); + this.removeEventListener = function (types, callback) { + if (!Array.isArray(types)) { + types = [types]; + } + for (var i = 0; i < types.length; i += 1) { + var _this$listeners$get; + var type = types[i]; + (_this$listeners$get = this.listeners.get(type)) === null || _this$listeners$get === void 0 ? void 0 : _this$listeners$get.delete(callback); + } }; }; var AdsManager = new EventHandler(); @@ -13035,6 +13064,13 @@ return 1; } }; + var UniversalAdIdInfo = function UniversalAdIdInfo() {}; + UniversalAdIdInfo.prototype.getAdIdRegistry = function () { + return ''; + }; + UniversalAdIdInfo.prototype.getAdIsValue = function () { + return ''; + }; var Ad = function Ad() {}; Ad.prototype = { pi: new AdPodInfo(), @@ -13099,7 +13135,7 @@ return 'unknown'; }, getUniversalAdIds: function getUniversalAdIds() { - return ['']; + return [new UniversalAdIdInfo()]; }, getUniversalAdIdValue: function getUniversalAdIdValue() { return 'unknown'; @@ -13159,7 +13195,9 @@ this.getErrorCode = function () { return this.errorCode; }; - this.getInnerError = function () {}; + this.getInnerError = function () { + return null; + }; this.getMessage = function () { return this.message; }; @@ -13279,12 +13317,11 @@ getAdIdRegistry: function getAdIdRegistry() { return ''; }, - getAdIsValue: function getAdIsValue() { + getAdIdValue: function getAdIdValue() { return ''; } }; var AdProgressData = noopFunc; - var UniversalAdIdInfo = function UniversalAdIdInfo() {}; Object.assign(ima, { AdCuePoints, AdDisplayContainer, @@ -13308,6 +13345,26 @@ FULL: 'full', LIMITED: 'limited' }, + OmidVerificationVendor: { + 1: 'OTHER', + 2: 'MOAT', + 3: 'DOUBLEVERIFY', + 4: 'INTEGRAL_AD_SCIENCE', + 5: 'PIXELATE', + 6: 'NIELSEN', + 7: 'COMSCORE', + 8: 'MEETRICS', + 9: 'GOOGLE', + OTHER: 1, + MOAT: 2, + DOUBLEVERIFY: 3, + INTEGRAL_AD_SCIENCE: 4, + PIXELATE: 5, + NIELSEN: 6, + COMSCORE: 7, + MEETRICS: 8, + GOOGLE: 9 + }, settings: new ImaSdkSettings(), UiElements: { AD_ATTRIBUTION: 'adAttribution', @@ -17069,7 +17126,7 @@ convertAdgRedirectToUbo }; - var version = "1.9.101"; + var version = "1.9.105"; function abortCurrentInlineScript(source, args) { function abortCurrentInlineScript(source, property, search) {