From 1675527f93a6a32344b45689142b4b7af524be60 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Wed, 8 Jul 2020 23:55:27 +0300 Subject: [PATCH 01/29] fix travis.yml --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7fa106366..06feb6109 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,8 @@ language: node_js node_js: - - "10" + - 10 script: - - bash -e ./build.sh + - bash ./build.sh notifications: slack: performix:yXTihlSzsLFSZiqbXMNzvTSX From 28dfc725f6b11be2dcff619b50ebe1c05c7622b6 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Wed, 8 Jul 2020 23:57:16 +0300 Subject: [PATCH 02/29] fix hooks --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 5cc8da189..4bc5c84b7 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,7 @@ }, "husky": { "hooks": { - "pre-commit": "yarn lint", - "pre-push": "yarn corelibs && yarn build" + "pre-commit": "yarn lint" } }, "author": "devteam@adguard.com", From f6c8a143a45cf5dfe8bf3e2eb0577e0c2e3c9bc1 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Thu, 9 Jul 2020 00:13:28 +0300 Subject: [PATCH 03/29] clean cache for travis --- build.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build.sh b/build.sh index 7f5f05491..9a347b558 100644 --- a/build.sh +++ b/build.sh @@ -7,6 +7,9 @@ yarn install yarn test +yarn cache clean +yarn + # we do not run browserstack if environment has $TRAVIS variable # or if it is pull request from fork $TRAVIS_PULL_REQUEST_SLUG != $TRAVIS_REPO_SLUG if [[ ! $TRAVIS || ($TRAVIS && ( $TRAVIS_PULL_REQUEST_SLUG == "$TRAVIS_REPO_SLUG" || $TRAVIS_PULL_REQUEST_SLUG == "" )) ]]; From 16fcb3c13f8688a5241a6097b4f9c8fe4aa5dbe2 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Thu, 9 Jul 2020 00:21:29 +0300 Subject: [PATCH 04/29] echo travis vars --- build.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/build.sh b/build.sh index 9a347b558..0aac199e3 100644 --- a/build.sh +++ b/build.sh @@ -8,6 +8,19 @@ yarn install yarn test yarn cache clean + +echo $TRAVIS + +echo ! $TRAVIS + +echo $TRAVIS_PULL_REQUEST_SLUG + +echo $TRAVIS_REPO_SLUG + +echo $TRAVIS_PULL_REQUEST_SLUG == "$TRAVIS_REPO_SLUG" + +echo $TRAVIS_PULL_REQUEST_SLUG == "" + yarn # we do not run browserstack if environment has $TRAVIS variable From 5ec6afd697289269dde21ed8f8f6277c2afda618 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Thu, 9 Jul 2020 00:30:32 +0300 Subject: [PATCH 05/29] up node to 12 --- .travis.yml | 2 +- build.sh | 12 ------------ 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index 06feb6109..c8e17653e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: node_js node_js: - - 10 + - 12 script: - bash ./build.sh diff --git a/build.sh b/build.sh index 0aac199e3..d7d46c2c3 100644 --- a/build.sh +++ b/build.sh @@ -9,18 +9,6 @@ yarn test yarn cache clean -echo $TRAVIS - -echo ! $TRAVIS - -echo $TRAVIS_PULL_REQUEST_SLUG - -echo $TRAVIS_REPO_SLUG - -echo $TRAVIS_PULL_REQUEST_SLUG == "$TRAVIS_REPO_SLUG" - -echo $TRAVIS_PULL_REQUEST_SLUG == "" - yarn # we do not run browserstack if environment has $TRAVIS variable From c0659533cc8b272cb006f7c660bacb48883a56c8 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Fri, 10 Jul 2020 00:17:09 +0300 Subject: [PATCH 06/29] back to node10 and build.sh trying --- .travis.yml | 5 +---- build.sh | 4 +--- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index c8e17653e..3161eb627 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,5 @@ language: node_js node_js: - - 12 + - 10 script: - bash ./build.sh - -notifications: - slack: performix:yXTihlSzsLFSZiqbXMNzvTSX diff --git a/build.sh b/build.sh index d7d46c2c3..5b655285d 100644 --- a/build.sh +++ b/build.sh @@ -7,9 +7,7 @@ yarn install yarn test -yarn cache clean - -yarn +echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p # we do not run browserstack if environment has $TRAVIS variable # or if it is pull request from fork $TRAVIS_PULL_REQUEST_SLUG != $TRAVIS_REPO_SLUG From c90e1536ad05211279d845819b5f22c1ee2827d2 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Fri, 10 Jul 2020 00:19:15 +0300 Subject: [PATCH 07/29] try node 14 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 3161eb627..915eecf60 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: node_js node_js: - - 10 + - 14 script: - bash ./build.sh From 444b76f0627d37435bb1959ea979f5e0830c148a Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Fri, 10 Jul 2020 01:24:14 +0300 Subject: [PATCH 08/29] get node 10 back --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 915eecf60..385c2b124 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,6 @@ language: node_js node_js: - - 14 + - 10 + script: - bash ./build.sh From 89a2494029938c6a02483d7851adeccb3d8f3c4d Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Fri, 10 Jul 2020 11:37:16 +0300 Subject: [PATCH 09/29] try to fix travis --- build.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/build.sh b/build.sh index 5b655285d..101b23fa8 100644 --- a/build.sh +++ b/build.sh @@ -7,12 +7,14 @@ yarn install yarn test -echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p - # we do not run browserstack if environment has $TRAVIS variable # or if it is pull request from fork $TRAVIS_PULL_REQUEST_SLUG != $TRAVIS_REPO_SLUG if [[ ! $TRAVIS || ($TRAVIS && ( $TRAVIS_PULL_REQUEST_SLUG == "$TRAVIS_REPO_SLUG" || $TRAVIS_PULL_REQUEST_SLUG == "" )) ]]; then + + # Kill browserstack processes + lsof -t -i:9961 || echo "no browserstack processes" + yarn browserstack fi From 6d300667a13e6e022a0f71768c32a31fc2a8c18b Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Fri, 10 Jul 2020 11:41:31 +0300 Subject: [PATCH 10/29] try to fix travis --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index 101b23fa8..41136d088 100644 --- a/build.sh +++ b/build.sh @@ -13,7 +13,7 @@ if [[ ! $TRAVIS || ($TRAVIS && ( $TRAVIS_PULL_REQUEST_SLUG == "$TRAVIS_REPO_SLUG then # Kill browserstack processes - lsof -t -i:9961 || echo "no browserstack processes" + lsof -t -i:8585 || echo "no server processes before browserstack tests" yarn browserstack fi From a9c154a524df410c21217b1c7952184bbb771536 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Fri, 10 Jul 2020 13:33:47 +0300 Subject: [PATCH 11/29] try to fix travis --- .travis.yml | 2 +- dist/cjs/scriptletsCjs.js | 2 - dist/cjs/scriptletsCjs.js.map | 2 +- dist/redirects.js | 2479 +++++++++++++++++---------------- dist/redirects.js.map | 2 +- dist/scriptlets.js | 2 - dist/scriptlets.js.map | 2 +- package.json | 10 +- rollup.config.js | 23 +- yarn.lock | 186 ++- 10 files changed, 1385 insertions(+), 1325 deletions(-) diff --git a/.travis.yml b/.travis.yml index 385c2b124..039cbb92b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,4 +3,4 @@ node_js: - 10 script: - - bash ./build.sh + - bash -e -x ./build.sh diff --git a/dist/cjs/scriptletsCjs.js b/dist/cjs/scriptletsCjs.js index 851db2c25..84cd00afb 100644 --- a/dist/cjs/scriptletsCjs.js +++ b/dist/cjs/scriptletsCjs.js @@ -4845,8 +4845,6 @@ function AmazonApstag(source) { AmazonApstag.names = ['amazon-apstag', 'ubo-amazon_apstag.js', 'amazon_apstag.js']; AmazonApstag.injections = [hit, noopFunc]; - - var redirectsList = /*#__PURE__*/Object.freeze({ __proto__: null, noeval: noeval, diff --git a/dist/cjs/scriptletsCjs.js.map b/dist/cjs/scriptletsCjs.js.map index e34941902..740c4e7a5 100644 --- a/dist/cjs/scriptletsCjs.js.map +++ b/dist/cjs/scriptletsCjs.js.map @@ -1 +1 @@ -{"version":3,"file":"scriptletsCjs.js","sources":["../../src/helpers/random-id.js","../../src/helpers/set-property-access.js","../../src/helpers/get-property-in-chain.js","../../src/helpers/string-utils.js","../../src/helpers/create-on-error-handler.js","../../src/helpers/noop.js","../../src/helpers/hit.js","../../src/helpers/observer.js","../../src/helpers/match-stack.js","../../src/helpers/index.js","../../src/helpers/injector.js","../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../node_modules/@babel/runtime/helpers/slicedToArray.js","../../node_modules/@babel/runtime/helpers/defineProperty.js","../../src/helpers/parse-rule.js","../../src/scriptlets/abort-on-property-read.js","../../src/scriptlets/abort-on-property-write.js","../../src/scriptlets/prevent-setTimeout.js","../../src/scriptlets/prevent-setInterval.js","../../src/scriptlets/prevent-window-open.js","../../src/scriptlets/abort-current-inline-script.js","../../src/scriptlets/set-constant.js","../../src/scriptlets/remove-cookie.js","../../src/scriptlets/prevent-addEventListener.js","../../src/scriptlets/prevent-bab.js","../../src/scriptlets/nowebrtc.js","../../src/scriptlets/log-addEventListener.js","../../src/scriptlets/log-eval.js","../../src/scriptlets/log.js","../../src/scriptlets/noeval.js","../../src/scriptlets/prevent-eval-if.js","../../src/scriptlets/prevent-fab-3.2.0.js","../../src/scriptlets/set-popads-dummy.js","../../src/scriptlets/prevent-popads-net.js","../../src/scriptlets/prevent-adfly.js","../../src/scriptlets/debug-on-property-read.js","../../src/scriptlets/debug-on-property-write.js","../../src/scriptlets/debug-current-inline-script.js","../../src/scriptlets/remove-attr.js","../../src/scriptlets/remove-class.js","../../src/scriptlets/disable-newtab-links.js","../../src/scriptlets/adjust-setInterval.js","../../src/scriptlets/adjust-setTimeout.js","../../src/scriptlets/dir-string.js","../../src/scriptlets/json-prune.js","../../src/scriptlets/prevent-requestAnimationFrame.js","../../src/scriptlets/set-cookie.js","../../src/scriptlets/scriptletsList.js","../../src/helpers/validator.js","../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../node_modules/@babel/runtime/helpers/toArray.js","../../src/helpers/converter.js","../../src/redirects/google-analytics.js","../../src/redirects/google-analytics-ga.js","../../src/redirects/googlesyndication-adsbygoogle.js","../../src/redirects/googletagmanager-gtm.js","../../src/redirects/googletagservices-gpt.js","../../src/redirects/scorecardresearch-beacon.js","../../src/redirects/metrika-yandex-tag.js","../../src/redirects/metrika-yandex-watch.js","../../src/redirects/amazon-apstag.js","../../src/redirects/index.js","../../src/scriptlets/index.js","../../src/scriptlets/scriptletsCjsWrapper.js"],"sourcesContent":["/**\n * Generate random six symbols id\n */\nexport function randomId() {\n return Math.random().toString(36).substr(2, 9);\n}\n","/**\n * Set getter and setter to property if it's configurable\n * @param {Object} object target object with property\n * @param {string} property property name\n * @param {Object} descriptor contains getter and setter functions\n * @returns {boolean} is operation successful\n */\nexport function setPropertyAccess(object, property, descriptor) {\n const currentDescriptor = Object.getOwnPropertyDescriptor(object, property);\n if (currentDescriptor && !currentDescriptor.configurable) {\n return false;\n }\n Object.defineProperty(object, property, descriptor);\n return true;\n}\n","/**\n * @typedef Chain\n * @property {Object} base\n * @property {string} prop\n * @property {string} [chain]\n */\n\n/**\n * Check is property exist in base object recursively\n *\n * If property doesn't exist in base object,\n * defines this property (for addProp = true)\n * and returns base, property name and remaining part of property chain\n *\n * @param {Object} base\n * @param {string} chain\n * @param {boolean} [addProp=true]\n * defines is nonexistent base property should be assigned as 'undefined'\n * @returns {Chain}\n */\nexport function getPropertyInChain(base, chain, addProp = true) {\n const pos = chain.indexOf('.');\n if (pos === -1) {\n return { base, prop: chain };\n }\n const prop = chain.slice(0, pos);\n const own = base[prop];\n chain = chain.slice(pos + 1);\n if (own !== undefined) {\n return getPropertyInChain(own, chain, addProp);\n }\n\n if (!addProp) {\n return false;\n }\n\n Object.defineProperty(base, prop, { configurable: true });\n return { base: own, prop, chain };\n}\n","/**\n * Escapes special chars in string\n * @param {string} str\n * @returns {string}\n */\nexport const escapeRegExp = (str) => str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n/**\n * Converts search string to the regexp\n * TODO think about nested dependencies, but be careful with dependency loops\n * @param {string} str search string\n * @returns {RegExp}\n */\nexport const toRegExp = (str) => {\n if (str[0] === '/' && str[str.length - 1] === '/') {\n return new RegExp(str.slice(1, -1));\n }\n const escaped = str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n return new RegExp(escaped);\n};\n\n/**\n * Get string before regexp first match\n * @param {string} str\n * @param {RegExp} rx\n */\nexport const getBeforeRegExp = (str, rx) => {\n const index = str.search(rx);\n return str.substring(0, index);\n};\n\nexport const startsWith = (str, prefix) => {\n return str && str.indexOf(prefix) === 0;\n};\n\nexport const endsWith = (str, prefix) => {\n return str && str.indexOf(prefix) === str.length - 1;\n};\n\nexport const substringAfter = (str, separator) => {\n if (!str) {\n return str;\n }\n const index = str.indexOf(separator);\n return index < 0 ? '' : str.substring(index + separator.length);\n};\n\nexport const substringBefore = (str, separator) => {\n if (!str || !separator) {\n return str;\n }\n const index = str.indexOf(separator);\n return index < 0 ? str : str.substring(0, index);\n};\n\n/**\n * Wrap str in single qoutes and replaces single quotes to doudle one\n * @param {string} str\n */\nexport const wrapInSingleQuotes = (str) => {\n if ((str[0] === '\\'' && str[str.length - 1] === '\\'')\n || (str[0] === '\"' && str[str.length - 1] === '\"')) {\n str = str.substring(1, str.length - 1);\n }\n // eslint-disable-next-line no-useless-escape\n str = str.replace(/\\'/g, '\"');\n\n return `'${str}'`;\n};\n\n/**\n * Returns substring enclosed in the widest braces\n * @param {string} str\n */\nexport const getStringInBraces = (str) => {\n const firstIndex = str.indexOf('(');\n const lastIndex = str.lastIndexOf(')');\n return str.substring(firstIndex + 1, lastIndex);\n};\n","/**\n * Generates function which silents global errors on page generated by scriptlet\n * If error doesn't belong to our error we transfer it to the native onError handler\n * @param {string} rid - unique identifier of scriptlet\n * @return {onError}\n */\nexport function createOnErrorHandler(rid) {\n // eslint-disable-next-line consistent-return\n const nativeOnError = window.onerror;\n return function onError(error, ...args) {\n if (typeof error === 'string' && error.indexOf(rid) !== -1) {\n return true;\n }\n if (nativeOnError instanceof Function) {\n return nativeOnError.apply(this, [error, ...args]);\n }\n return false;\n };\n}\n","/**\n * Noop function\n */\nexport const noopFunc = () => { };\n\n/**\n * Function returns null\n */\nexport const noopNull = () => null;\n\n/**\n * Function returns true\n */\nexport const trueFunc = () => true;\n\n/**\n * Function returns false\n */\nexport const falseFunc = () => false;\n\n/**\n * Function returns this\n */\nexport function noopThis() {\n return this;\n}\n\n/**\n * Function returns empty array\n */\nexport const noopArray = () => [];\n\n/**\n * Function returns empty string\n */\nexport const noopStr = () => '';\n","/* eslint-disable no-console, no-underscore-dangle */\n/**\n * Hit used only for debug purposes now\n * @param {Source} source\n * @param {string} [message] - optional message;\n * use LOG_MARKER = 'log: ' at the start of a message\n * for logging scriptlets\n */\nexport const hit = (source, message) => {\n if (source.verbose !== true) {\n return;\n }\n\n try {\n const log = console.log.bind(console);\n const trace = console.trace.bind(console);\n\n let prefix = source.ruleText || '';\n\n if (source.domainName) {\n const AG_SCRIPTLET_MARKER = '#%#//';\n const UBO_SCRIPTLET_MARKER = '##+js';\n let ruleStartIndex;\n if (source.ruleText.indexOf(AG_SCRIPTLET_MARKER) > -1) {\n ruleStartIndex = source.ruleText.indexOf(AG_SCRIPTLET_MARKER);\n } else if (source.ruleText.indexOf(UBO_SCRIPTLET_MARKER) > -1) {\n ruleStartIndex = source.ruleText.indexOf(UBO_SCRIPTLET_MARKER);\n }\n // delete all domains from ruleText and leave just rule part\n const rulePart = source.ruleText.slice(ruleStartIndex);\n // prepare applied scriptlet rule for specific domain\n prefix = `${source.domainName}${rulePart}`;\n }\n\n // Used to check if scriptlet uses 'hit' function for logging\n const LOG_MARKER = 'log: ';\n\n if (message) {\n if (message.indexOf(LOG_MARKER) === -1) {\n log(`${prefix} message:\\n${message}`);\n } else {\n log(message.slice(LOG_MARKER.length));\n }\n }\n\n log(`${prefix} trace start`);\n if (trace) {\n trace();\n }\n log(`${prefix} trace end`);\n } catch (e) {\n // try catch for Edge 15\n // In according to this issue https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/14495220/\n // console.log throws an error\n }\n\n // This is necessary for unit-tests only!\n if (typeof window.__debug === 'function') {\n window.__debug(source);\n }\n};\n","/**\n * DOM tree changes observer. Used for 'remove-attr' and 'remove-class' scriptlets\n * @param {Function} callback\n * @param {Boolean} observeAttrs - optional parameter - should observer check attibutes changes\n */\nexport const observeDOMChanges = (callback, observeAttrs = false, attrsToObserv = []) => {\n /**\n * Returns a wrapper, passing the call to 'method' at maximum once per 'delay' milliseconds.\n * Those calls that fall into the \"cooldown\" period, are ignored\n * @param {Function} method\n * @param {Number} delay - milliseconds\n */\n const throttle = (method, delay) => {\n let wait = false;\n let savedArgs;\n const wrapper = (...args) => {\n if (wait) {\n savedArgs = args;\n return;\n }\n method(...args);\n wait = true;\n setTimeout(() => {\n wait = false;\n if (savedArgs) {\n wrapper(savedArgs);\n savedArgs = null;\n }\n }, delay);\n };\n return wrapper;\n };\n\n /**\n * 'delay' in milliseconds for 'throttle' method\n */\n const THROTTLE_DELAY_MS = 20;\n /**\n * Used for remove-class\n */\n // eslint-disable-next-line no-use-before-define\n const observer = new MutationObserver(throttle(callbackWrapper, THROTTLE_DELAY_MS));\n\n const connect = () => {\n if (attrsToObserv.length > 0) {\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n attributes: observeAttrs,\n attributeFilter: attrsToObserv,\n });\n } else {\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n attributes: observeAttrs,\n });\n }\n };\n const disconnect = () => {\n observer.disconnect();\n };\n function callbackWrapper() {\n disconnect();\n callback();\n connect();\n }\n\n connect();\n};\n","/**\n * Checks if the stackTrace contains stackRegexp\n * // https://github.com/AdguardTeam/Scriptlets/issues/82\n * @param {string} stackRegexp - stack regexp\n * @param {string} stackTrace - script error stack trace\n * @returns {boolean}\n */\n\nexport const matchStackTrace = (stackRegexp, stackTrace) => {\n const refinedStackTrace = stackTrace\n .split('\\n')\n .slice(2) // get rid of our own functions in the stack trace\n .map((line) => line.trim()) // trim the lines\n .join('\\n');\n\n return stackRegexp.test(refinedStackTrace);\n};\n","/**\n * This file must export all used dependencies\n */\nexport * from './random-id';\nexport * from './set-property-access';\nexport * from './get-property-in-chain';\nexport * from './string-utils';\nexport * from './create-on-error-handler';\nexport * from './noop';\nexport * from './hit';\nexport * from './observer';\nexport * from './match-stack';\n","import * as dependencies from '.';\n\n/**\n * Concat dependencies to scriptlet code\n * @param {string} scriptlet string view of scriptlet\n */\nexport function attachDependencies(scriptlet) {\n const { injections = [] } = scriptlet;\n return injections.reduce((accum, dep) => `${accum}\\n${dependencies[dep.name]}`, scriptlet.toString());\n}\n\n/**\n * Add scriptlet call to existing code\n * @param {Function} scriptlet\n * @param {string} code\n */\nexport function addCall(scriptlet, code) {\n return `${code};\n const updatedArgs = args ? [].concat(source).concat(args) : [source];\n ${scriptlet.name}.apply(this, updatedArgs);\n `;\n}\n\n/**\n * Wrap function into IIFE (Immediately invoked function expression)\n *\n * @param {Source} source - object with scriptlet properties\n * @param {string} code - scriptlet source code with dependencies\n *\n * @returns {string} full scriptlet code\n *\n * @example\n * const source = {\n * args: [\"aaa\", \"bbb\"],\n * name: 'noeval',\n * };\n * const code = \"function noeval(source, args) { alert(source); } noeval.apply(this, args);\"\n * const result = wrapInIIFE(source, code);\n *\n * // result\n * `(function(source, args) {\n * function noeval(source) { alert(source); }\n * noeval.apply(this, args);\n * )({\"args\": [\"aaa\", \"bbb\"], \"name\":\"noeval\"}, [\"aaa\", \"bbb\"])`\n */\nexport function passSourceAndProps(source, code) {\n if (source.hit) {\n source.hit = source.hit.toString();\n }\n const sourceString = JSON.stringify(source);\n const argsString = source.args ? `[${source.args.map(JSON.stringify)}]` : undefined;\n const params = argsString ? `${sourceString}, ${argsString}` : sourceString;\n return `(function(source, args){\\n${code}\\n})(${params});`;\n}\n\n/**\n * Wrap code in no name function\n * @param {string} code which must be wrapped\n */\nexport function wrapInNonameFunc(code) {\n return `function(source, args){\\n${code}\\n}`;\n}\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","/**\n * Iterate over iterable argument and evaluate current state with transitions\n * @param {string} init first transition name\n * @param {Array|Collection|string} iterable\n * @param {Object} transitions transtion functions\n * @param {any} args arguments which should be passed to transition functions\n */\nfunction iterateWithTransitions(iterable, transitions, init, args) {\n let state = init || Object.keys(transitions)[0];\n for (let i = 0; i < iterable.length; i += 1) {\n state = transitions[state](iterable, i, args);\n }\n return state;\n}\n\n/**\n * AdGuard scriptlet rule mask\n */\nexport const ADG_SCRIPTLET_MASK = '#//scriptlet';\n\n/**\n * Helper to accumulate an array of strings char by char\n */\nconst wordSaver = () => {\n let str = '';\n const strs = [];\n const saveSymb = (s) => {\n str += s;\n return str;\n };\n const saveStr = () => {\n strs.push(str);\n str = '';\n };\n const getAll = () => [...strs];\n\n return { saveSymb, saveStr, getAll };\n};\n\nconst substringAfter = (str, separator) => {\n if (!str) {\n return str;\n }\n const index = str.indexOf(separator);\n return index < 0 ? '' : str.substring(index + separator.length);\n};\n\n/**\n * Parse and validate scriptlet rule\n * @param {*} ruleText\n * @returns {{name: string, args: Array}}\n */\nexport const parseRule = (ruleText) => {\n ruleText = substringAfter(ruleText, ADG_SCRIPTLET_MASK);\n /**\n * Transition names\n */\n const TRANSITION = {\n OPENED: 'opened',\n PARAM: 'param',\n CLOSED: 'closed',\n };\n\n /**\n * Transition function: the current index position in start, end or between params\n * @param {string} rule\n * @param {number} index\n * @param {Object} Object\n * @property {Object} Object.sep contains prop symb with current separator char\n */\n const opened = (rule, index, { sep }) => {\n const char = rule[index];\n let transition;\n switch (char) {\n case ' ':\n case '(':\n case ',': {\n transition = TRANSITION.OPENED;\n break;\n }\n case '\\'':\n case '\"': {\n sep.symb = char;\n transition = TRANSITION.PARAM;\n break;\n }\n case ')': {\n transition = index === rule.length - 1\n ? TRANSITION.CLOSED\n : TRANSITION.OPENED;\n break;\n }\n default: {\n throw new Error('The rule is not a scriptlet');\n }\n }\n\n return transition;\n };\n /**\n * Transition function: the current index position inside param\n * @param {string} rule\n * @param {number} index\n * @param {Object} Object\n * @property {Object} Object.sep contains prop `symb` with current separator char\n * @property {Object} Object.saver helper which allow to save strings by car by char\n */\n const param = (rule, index, { saver, sep }) => {\n const char = rule[index];\n switch (char) {\n case '\\'':\n case '\"': {\n const preIndex = index - 1;\n const before = rule[preIndex];\n if (char === sep.symb && before !== '\\\\') {\n sep.symb = null;\n saver.saveStr();\n return TRANSITION.OPENED;\n }\n }\n // eslint-disable-next-line no-fallthrough\n default: {\n saver.saveSymb(char);\n return TRANSITION.PARAM;\n }\n }\n };\n const transitions = {\n [TRANSITION.OPENED]: opened,\n [TRANSITION.PARAM]: param,\n [TRANSITION.CLOSED]: () => { },\n };\n const sep = { symb: null };\n const saver = wordSaver();\n const state = iterateWithTransitions(ruleText, transitions, TRANSITION.OPENED, { sep, saver });\n\n if (state !== 'closed') {\n throw new Error(`Invalid scriptlet rule ${ruleText}`);\n }\n\n const args = saver.getAll();\n return {\n name: args[0],\n args: args.slice(1),\n };\n};\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet abort-on-property-read\n *\n * @description\n * Aborts a script when it attempts to **read** the specified property.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#abort-on-property-readjs-\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/6b2a309054cc23432102b85d13f12559639ef495/lib/content/snippets.js#L864\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('abort-on-property-read', property[, stack])\n * ```\n *\n * - `property` - required, path to a property (joined with `.` if needed). The property must be attached to `window`\n * - `stack` - optional, string or regular expression that must match the current function call stack trace\n *\n * **Examples**\n * ```\n * ! Aborts script when it tries to access `window.alert`\n * example.org#%#//scriptlet('abort-on-property-read', 'alert')\n *\n * ! Aborts script when it tries to access `navigator.language`\n * example.org#%#//scriptlet('abort-on-property-read', 'navigator.language')\n *\n * ! Aborts script when it tries to access `window.adblock` and it's error stack trace contains `test.js`\n * example.org#%#//scriptlet('abort-on-property-read', 'adblock', 'test.js')\n * ```\n */\n/* eslint-enable max-len */\nexport function abortOnPropertyRead(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n\n const rid = randomId();\n const abort = () => {\n hit(source);\n throw new ReferenceError(rid);\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, {\n get: abort,\n set: () => {\n },\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\nabortOnPropertyRead.names = [\n 'abort-on-property-read',\n 'abort-on-property-read.js',\n 'ubo-abort-on-property-read.js',\n 'aopr.js',\n 'ubo-aopr.js',\n 'abp-abort-on-property-read',\n];\nabortOnPropertyRead.injections = [\n randomId,\n toRegExp,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n matchStackTrace,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet abort-on-property-write\n *\n * @description\n * Aborts a script when it attempts to **write** the specified property.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#abort-on-property-writejs-\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/6b2a309054cc23432102b85d13f12559639ef495/lib/content/snippets.js#L896\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('abort-on-property-write', property[, stack])\n * ```\n *\n * - `property` - required, path to a property (joined with `.` if needed). The property must be attached to `window`\n * - `stack` - optional, string or regular expression that must match the current function call stack trace\n *\n * **Examples**\n * ```\n * ! Aborts script when it tries to set `window.adblock` value\n * example.org#%#//scriptlet('abort-on-property-write', 'adblock')\n *\n * ! Aborts script when it tries to set `window.adblock` value and it's error stack trace contains `checking.js`\n * example.org#%#//scriptlet('abort-on-property-write', 'adblock', 'checking.js')\n * ```\n */\n/* eslint-enable max-len */\nexport function abortOnPropertyWrite(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n\n const rid = randomId();\n const abort = () => {\n hit(source);\n throw new ReferenceError(rid);\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, { set: abort });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid).bind();\n}\n\nabortOnPropertyWrite.names = [\n 'abort-on-property-write',\n 'abort-on-property-write.js',\n 'ubo-abort-on-property-write.js',\n 'aopw.js',\n 'ubo-aopw.js',\n 'abp-abort-on-property-write',\n];\n\nabortOnPropertyWrite.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n];\n","import {\n hit, noopFunc, toRegExp, startsWith,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-setTimeout\n *\n * @description\n * Prevents a `setTimeout` call if:\n * 1) the text of the callback is matching the specified search string/regexp which does not start with `!`;\n * otherwise mismatched calls should be defused;\n * 2) the timeout is matching the specified delay; otherwise mismatched calls should be defused.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#no-settimeout-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout'[, search[, delay]])\n * ```\n *\n * Call with no arguments will log calls to setTimeout while debugging (`log-setTimeout` superseding),\n * so production filter lists' rules definitely require at least one of the parameters:\n * - `search` - optional, string or regular expression.\n * If starts with `!`, scriptlet will not match the stringified callback but all other will be defused.\n * If do not start with `!`, the stringified callback will be matched.\n * If not set, prevents all `setTimeout` calls due to specified `delay`.\n * - `delay` - optional, must be an integer.\n * If starts with `!`, scriptlet will not match the delay but all other will be defused.\n * If do not start with `!`, the delay passed to the `setTimeout` call will be matched.\n *\n * **Examples**\n * 1. Prevents `setTimeout` calls if the callback matches `/\\.test/` regardless of the delay.\n * ```bash\n * example.org#%#//scriptlet('prevent-setTimeout', '/\\.test/')\n * ```\n *\n * For instance, the following call will be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"value\";\n * }, 100);\n * ```\n *\n * 2. Prevents `setTimeout` calls if the callback does not contain `value`.\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout', '!value')\n * ```\n *\n * For instance, only the first of the following calls will be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"test -- prevented\";\n * }, 300);\n * setTimeout(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setTimeout(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n *\n * 3. Prevents `setTimeout` calls if the callback contains `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout', 'value', '!300')\n * ```\n *\n * For instance, only the first of the following calls will not be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"value 1 -- executed\";\n * }, 300);\n * setTimeout(function () {\n * window.test = \"value 2 -- prevented\";\n * }, 400);\n * setTimeout(function () {\n * window.test = \"value 3 -- prevented\";\n * }, 500);\n * ```\n *\n * 4. Prevents `setTimeout` calls if the callback does not contain `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout', '!value', '!300')\n * ```\n *\n * For instance, only the second of the following calls will be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"test -- executed\";\n * }, 300);\n * setTimeout(function () {\n * window.test = \"test -- prevented\";\n * }, 400);\n * setTimeout(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setTimeout(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n */\n/* eslint-enable max-len */\nexport function preventSetTimeout(source, match, delay) {\n const nativeTimeout = window.setTimeout;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const log = console.log.bind(console); // eslint-disable-line no-console\n\n // logs setTimeouts to console if no arguments have been specified\n const shouldLog = ((typeof match === 'undefined') && (typeof delay === 'undefined'));\n\n const INVERT_MARKER = '!';\n\n const isNotMatch = startsWith(match, INVERT_MARKER);\n if (isNotMatch) {\n match = match.slice(1);\n }\n const isNotDelay = startsWith(delay, INVERT_MARKER);\n if (isNotDelay) {\n delay = delay.slice(1);\n }\n\n delay = parseInt(delay, 10);\n delay = nativeIsNaN(delay) ? null : delay;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n const timeoutWrapper = (callback, timeout, ...args) => {\n let shouldPrevent = false;\n if (shouldLog) {\n hit(source);\n log(`setTimeout(\"${callback.toString()}\", ${timeout})`);\n } else if (!delay) {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch;\n } else if (match === '/.?/') {\n shouldPrevent = (timeout === delay) !== isNotDelay;\n } else {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch\n && (timeout === delay) !== isNotDelay;\n }\n\n if (shouldPrevent) {\n hit(source);\n return nativeTimeout(noopFunc, timeout);\n }\n\n return nativeTimeout.apply(window, [callback, timeout, ...args]);\n };\n window.setTimeout = timeoutWrapper;\n}\n\npreventSetTimeout.names = [\n 'prevent-setTimeout',\n 'no-setTimeout-if.js', // new implementation of setTimeout-defuser.js\n 'ubo-no-setTimeout-if.js',\n 'setTimeout-defuser.js', // old name should be supported as well\n 'ubo-setTimeout-defuser.js',\n 'nostif.js', // new short name of no-setTimeout-if\n 'ubo-nostif.js',\n 'std.js', // old short scriptlet name\n 'ubo-std.js',\n];\n\npreventSetTimeout.injections = [toRegExp, startsWith, hit, noopFunc];\n","import {\n hit, noopFunc, toRegExp, startsWith,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-setInterval\n *\n * @description\n * Prevents a `setInterval` call if:\n * 1) the text of the callback is matching the specified `search` string/regexp which does not start with `!`;\n * otherwise mismatched calls should be defused;\n * 2) the interval is matching the specified `delay`; otherwise mismatched calls should be defused.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#no-setinterval-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-setInterval'[, search[, delay]])\n * ```\n *\n * Call with no arguments will log calls to setInterval while debugging (`log-setInterval` superseding),\n * so production filter lists' rules definitely require at least one of the parameters:\n * - `search` - optional, string or regular expression.\n * If starts with `!`, scriptlet will not match the stringified callback but all other will be defused.\n * If do not start with `!`, the stringified callback will be matched.\n * If not set, prevents all `setInterval` calls due to specified `delay`.\n * - `delay` - optional, must be an integer.\n * If starts with `!`, scriptlet will not match the delay but all other will be defused.\n * If do not start with `!`, the delay passed to the `setInterval` call will be matched.\n *\n * **Examples**\n * 1. Prevents `setInterval` calls if the callback matches `/\\.test/` regardless of the delay.\n * ```bash\n * example.org#%#//scriptlet('prevent-setInterval', '/\\.test/')\n * ```\n *\n * For instance, the following call will be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"value\";\n * }, 100);\n * ```\n *\n * 2. Prevents `setInterval` calls if the callback does not contain `value`.\n * ```\n * example.org#%#//scriptlet('prevent-setInterval', '!value')\n * ```\n *\n * For instance, only the first of the following calls will be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"test -- prevented\";\n * }, 300);\n * setInterval(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setInterval(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n *\n * 3. Prevents `setInterval` calls if the callback contains `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setInterval', 'value', '!300')\n * ```\n *\n * For instance, only the first of the following calls will not be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"value 1 -- executed\";\n * }, 300);\n * setInterval(function () {\n * window.test = \"value 2 -- prevented\";\n * }, 400);\n * setInterval(function () {\n * window.test = \"value 3 -- prevented\";\n * }, 500);\n * ```\n *\n * 4. Prevents `setInterval` calls if the callback does not contain `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setInterval', '!value', '!300')\n * ```\n *\n * For instance, only the second of the following calls will be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"test -- executed\";\n * }, 300);\n * setInterval(function () {\n * window.test = \"test -- prevented\";\n * }, 400);\n * setInterval(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setInterval(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n */\n/* eslint-enable max-len */\nexport function preventSetInterval(source, match, delay) {\n const nativeInterval = window.setInterval;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const log = console.log.bind(console); // eslint-disable-line no-console\n\n // logs setIntervals to console if no arguments have been specified\n const shouldLog = ((typeof match === 'undefined') && (typeof delay === 'undefined'));\n\n const INVERT_MARKER = '!';\n\n const isNotMatch = startsWith(match, INVERT_MARKER);\n if (isNotMatch) {\n match = match.slice(1);\n }\n const isNotDelay = startsWith(delay, INVERT_MARKER);\n if (isNotDelay) {\n delay = delay.slice(1);\n }\n\n delay = parseInt(delay, 10);\n delay = nativeIsNaN(delay) ? null : delay;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n const intervalWrapper = (callback, interval, ...args) => {\n let shouldPrevent = false;\n if (shouldLog) {\n hit(source);\n log(`setInterval(\"${callback.toString()}\", ${interval})`);\n } else if (!delay) {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch;\n } else if (match === '/.?/') {\n shouldPrevent = (interval === delay) !== isNotDelay;\n } else {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch\n && (interval === delay) !== isNotDelay;\n }\n\n if (shouldPrevent) {\n hit(source);\n return nativeInterval(noopFunc, interval);\n }\n\n return nativeInterval.apply(window, [callback, interval, ...args]);\n };\n window.setInterval = intervalWrapper;\n}\n\npreventSetInterval.names = [\n 'prevent-setInterval',\n 'no-setInterval-if.js', // new implementation of setInterval-defuser.js\n 'ubo-no-setInterval-if.js',\n 'setInterval-defuser.js', // old name should be supported as well\n 'ubo-setInterval-defuser.js',\n 'nosiif.js', // new short name of no-setInterval-if\n 'ubo-nosiif.js',\n 'sid.js', // old short scriptlet name\n 'ubo-sid.js',\n];\n\npreventSetInterval.injections = [toRegExp, startsWith, hit, noopFunc];\n","import {\n toRegExp,\n substringBefore,\n substringAfter,\n startsWith,\n endsWith,\n hit,\n noopFunc,\n trueFunc,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-window-open\n *\n * @description\n * Prevents `window.open` calls when URL either matches or not matches the specified string/regexp. Using it without parameters prevents all `window.open` calls.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#windowopen-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-window-open'[, match[, search[, replacement]]])\n * ```\n *\n * - `match` - optional, defaults to \"matching\", any positive number or nothing for \"matching\", 0 or empty string for \"not matching\"\n * - `search` - optional, string or regexp for matching the URL passed to `window.open` call; defaults to search all `window.open` call\n * - `replacement` - optional, string to return prop value or property instead of window.open; defaults to return noopFunc\n *\n * **Example**\n * 1. Prevent all `window.open` calls:\n * ```\n * example.org#%#//scriptlet('prevent-window-open')\n * ```\n *\n * 2. Prevent `window.open` for all URLs containing `example`:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '1', 'example')\n * ```\n *\n * 3. Prevent `window.open` for all URLs matching RegExp `/example\\./`:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '1', '/example\\./')\n * ```\n *\n * 4. Prevent `window.open` for all URLs **NOT** containing `example`:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '0', 'example')\n * ```\n * 5. Prevent all `window.open` calls and return 'trueFunc' instead of it if website checks it:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', , , 'trueFunc')\n * ```\n * 6. Prevent all `window.open` and returns callback\n * which returns object with property 'propName'=noopFunc\n * as a property of window.open if website checks it:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '1', , '{propName=noopFunc}')\n * ```\n */\n/* eslint-enable max-len */\nexport function preventWindowOpen(source, match = 1, search, replacement) {\n // Default value of 'match' is needed to prevent all `window.open` calls\n // if the scriptlet is used without parameters\n const nativeOpen = window.open;\n\n // unary plus converts 'match' to a number\n // e.g.: +'1' -> 1; +false -> 0\n match = +match > 0;\n\n search = search\n ? toRegExp(search)\n : toRegExp('/.?/');\n\n // eslint-disable-next-line consistent-return\n const openWrapper = (str, ...args) => {\n if (match !== search.test(str)) {\n return nativeOpen.apply(window, [str, ...args]);\n }\n\n hit(source);\n\n let result;\n\n // defaults to return noopFunc instead of window.open\n if (!replacement) {\n result = noopFunc;\n } else if (replacement === 'trueFunc') {\n result = trueFunc;\n } else if (replacement.indexOf('=') > -1) {\n // We should return noopFunc instead of window.open\n // but with some property if website checks it (examples 5, 6)\n // https://github.com/AdguardTeam/Scriptlets/issues/71\n const isProp = startsWith(replacement, '{') && endsWith(replacement, '}');\n if (isProp) {\n const propertyPart = replacement.slice(1, -1);\n const propertyName = substringBefore(propertyPart, '=');\n const propertyValue = substringAfter(propertyPart, '=');\n if (propertyValue === 'noopFunc') {\n result = () => {\n const resObj = { };\n resObj[propertyName] = noopFunc;\n return resObj;\n };\n }\n }\n }\n\n return result;\n };\n\n window.open = openWrapper;\n}\n\npreventWindowOpen.names = [\n 'prevent-window-open',\n 'window.open-defuser.js',\n 'ubo-window.open-defuser.js',\n];\n\npreventWindowOpen.injections = [\n toRegExp,\n startsWith,\n endsWith,\n substringBefore,\n substringAfter,\n hit,\n noopFunc,\n trueFunc,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet abort-current-inline-script\n *\n * @description\n * Aborts an inline script when it attempts to **read** the specified property\n * AND when the contents of the `\n * ```\n *\n * 3. Aborts inline scripts which are trying to access `window.alert` and match this regexp: `/Hello.+world/`.\n * ```\n * example.org#%#//scriptlet('abort-current-inline-script', 'alert', '/Hello.+world/')\n * ```\n *\n * For instance, the following scripts will be aborted:\n * ```html\n * \n * ```\n * ```html\n * \n * ```\n *\n * This script will not be aborted:\n * ```html\n * \n * ```\n */\n/* eslint-enable max-len */\nexport function abortCurrentInlineScript(source, property, search) {\n const searchRegexp = search ? toRegExp(search) : toRegExp('/.?/');\n const rid = randomId();\n\n const getCurrentScript = () => {\n if (!document.currentScript) { // eslint-disable-line compat/compat\n const scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n }\n return document.currentScript; // eslint-disable-line compat/compat\n };\n\n const ourScript = getCurrentScript();\n\n const abort = () => {\n const scriptEl = getCurrentScript();\n if (!scriptEl) {\n return;\n }\n let content = scriptEl.textContent;\n\n // We are using Node.prototype.textContent property descriptor\n // to get the real script content\n // even when document.currentScript.textContent is replaced.\n // https://github.com/AdguardTeam/Scriptlets/issues/57#issuecomment-593638991\n try {\n const textContentGetter = Object.getOwnPropertyDescriptor(Node.prototype, 'textContent').get;\n content = textContentGetter.call(scriptEl);\n } catch (e) { } // eslint-disable-line no-empty\n\n if (scriptEl instanceof HTMLScriptElement\n && content.length > 0\n && scriptEl !== ourScript\n && searchRegexp.test(content)) {\n hit(source);\n throw new ReferenceError(rid);\n }\n };\n\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n\n // The scriptlet might be executed before the chain property has been created\n // (for instance, document.body before the HTML body was loaded).\n // In this case we're checking whether the base element exists or not\n // and if not, we simply exit without overriding anything.\n // e.g. https://github.com/AdguardTeam/Scriptlets/issues/57#issuecomment-575841092\n if (base instanceof Object === false && base === null) {\n const props = property.split('.');\n const propIndex = props.indexOf(prop);\n const baseName = props[propIndex - 1];\n console.log(`The scriptlet had been executed before the ${baseName} was loaded.`); // eslint-disable-line no-console\n return;\n }\n\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n let currentValue = base[prop];\n setPropertyAccess(base, prop, {\n set: (value) => {\n abort();\n currentValue = value;\n },\n get: () => {\n abort();\n return currentValue;\n },\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\nabortCurrentInlineScript.names = [\n 'abort-current-inline-script',\n 'abort-current-inline-script.js',\n 'ubo-abort-current-inline-script.js',\n 'acis.js',\n 'ubo-acis.js',\n 'abp-abort-current-inline-script',\n];\n\nabortCurrentInlineScript.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n];\n","import {\n hit,\n noopFunc,\n trueFunc,\n falseFunc,\n getPropertyInChain,\n setPropertyAccess,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet set-constant\n *\n * @description\n * Creates a constant property and assigns it one of the values from the predefined list.\n *\n * > Actually, it's not a constant. Please note, that it can be rewritten with a value of a different type.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#set-constantjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('set-constant', property, value)\n * ```\n *\n * - `property` - required, path to a property (joined with `.` if needed). The property must be attached to `window`.\n * - `value` - required. Possible values:\n * - positive decimal integer `<= 32767`\n * - one of the predefined constants:\n * - `undefined`\n * - `false`\n * - `true`\n * - `null`\n * - `noopFunc` - function with empty body\n * - `trueFunc` - function returning true\n * - `falseFunc` - function returning false\n * - `''` - empty string\n * - `-1` - number value `-1`\n *\n * **Examples**\n * ```\n * ! window.firstConst === false // this comparision will return true\n * example.org#%#//scriptlet('set-constant', 'firstConst', 'false')\n *\n * ! window.secondConst() === true // call to the secondConst will return true\n * example.org#%#//scriptlet('set-constant', 'secondConst', 'trueFunc')\n * ```\n */\n/* eslint-enable max-len */\nexport function setConstant(source, property, value) {\n if (!property) {\n return;\n }\n\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n\n let constantValue;\n if (value === 'undefined') {\n constantValue = undefined;\n } else if (value === 'false') {\n constantValue = false;\n } else if (value === 'true') {\n constantValue = true;\n } else if (value === 'null') {\n constantValue = null;\n } else if (value === 'noopFunc') {\n constantValue = noopFunc;\n } else if (value === 'trueFunc') {\n constantValue = trueFunc;\n } else if (value === 'falseFunc') {\n constantValue = falseFunc;\n } else if (/^\\d+$/.test(value)) {\n constantValue = parseFloat(value);\n if (nativeIsNaN(constantValue)) {\n return;\n }\n if (Math.abs(constantValue) > 0x7FFF) {\n return;\n }\n } else if (value === '-1') {\n constantValue = -1;\n } else if (value === '') {\n constantValue = '';\n } else {\n return;\n }\n\n let canceled = false;\n const mustCancel = (value) => {\n if (canceled) {\n return canceled;\n }\n canceled = value !== undefined\n && constantValue !== undefined\n && typeof value !== typeof constantValue;\n return canceled;\n };\n\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n if (mustCancel(base[prop])) { return; }\n\n hit(source);\n setPropertyAccess(base, prop, {\n get: () => constantValue,\n set: (a) => {\n if (mustCancel(a)) {\n constantValue = a;\n }\n },\n });\n };\n\n setChainPropAccess(window, property);\n}\n\nsetConstant.names = [\n 'set-constant',\n 'set-constant.js',\n 'ubo-set-constant.js',\n 'set.js',\n 'ubo-set.js',\n];\nsetConstant.injections = [\n getPropertyInChain,\n setPropertyAccess,\n hit,\n noopFunc,\n trueFunc,\n falseFunc,\n];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet remove-cookie\n *\n * @description\n * Removes current page cookies by passed string matching with name. For current domain and subdomains. Runs on load and before unload.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#cookie-removerjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('remove-cookie'[, match])\n * ```\n *\n * - `match` - optional, string or regex matching the cookie name. If not specified all accessible cookies will be removed.\n *\n * **Examples**\n * 1. Removes all cookies:\n * ```\n * example.org#%#//scriptlet('remove-cookie')\n * ```\n *\n * 2. Removes cookies which name contains `example` string.\n * ```\n * example.org#%#//scriptlet('remove-cookie', 'example')\n * ```\n *\n * For instance this cookie will be removed\n * ```javascript\n * document.cookie = '__example=randomValue';\n * ```\n */\n/* eslint-enable max-len */\nexport function removeCookie(source, match) {\n const regex = match ? toRegExp(match) : toRegExp('/.?/');\n\n const removeCookieFromHost = (cookieName, hostName) => {\n const cookieSpec = `${cookieName}=`;\n const domain1 = `; domain=${hostName}`;\n const domain2 = `; domain=.${hostName}`;\n const path = '; path=/';\n const expiration = '; expires=Thu, 01 Jan 1970 00:00:00 GMT';\n document.cookie = cookieSpec + expiration;\n document.cookie = cookieSpec + domain1 + expiration;\n document.cookie = cookieSpec + domain2 + expiration;\n document.cookie = cookieSpec + path + expiration;\n document.cookie = cookieSpec + domain1 + path + expiration;\n document.cookie = cookieSpec + domain2 + path + expiration;\n hit(source);\n };\n\n const rmCookie = () => {\n document.cookie.split(';').forEach((cookieStr) => {\n const pos = cookieStr.indexOf('=');\n if (pos === -1) {\n return;\n }\n\n const cookieName = cookieStr.slice(0, pos).trim();\n if (!regex.test(cookieName)) {\n return;\n }\n\n const hostParts = document.location.hostname.split('.');\n for (let i = 0; i <= hostParts.length - 1; i += 1) {\n const hostName = hostParts.slice(i).join('.');\n if (hostName) {\n removeCookieFromHost(cookieName, hostName);\n }\n }\n });\n };\n rmCookie();\n window.addEventListener('beforeunload', rmCookie);\n}\n\nremoveCookie.names = [\n 'remove-cookie',\n 'cookie-remover.js',\n 'ubo-cookie-remover.js',\n];\n\nremoveCookie.injections = [toRegExp, hit];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-addEventListener\n *\n * @description\n * Prevents adding event listeners for the specified events and callbacks.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#addeventlistener-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-addEventListener'[, eventSearch[, functionSearch]])\n * ```\n *\n * - `eventSearch` - optional, string or regex matching the event name. If not specified, the scriptlets prevents all event listeners\n * - `functionSearch` - optional, string or regex matching the event listener function body. If not set, the scriptlet prevents all event listeners with event name matching `eventSearch`\n *\n * **Examples**\n * 1. Prevent all `click` listeners:\n * ```\n * example.org#%#//scriptlet('prevent-addEventListener', 'click')\n * ```\n\n2. Prevent 'click' listeners with the callback body containing `searchString`.\n * ```\n * example.org#%#//scriptlet('prevent-addEventListener', 'click', 'searchString')\n * ```\n *\n * For instance, this listener will not be called:\n * ```javascript\n * el.addEventListener('click', () => {\n * window.test = 'searchString';\n * });\n * ```\n */\n/* eslint-enable max-len */\nexport function preventAddEventListener(source, eventSearch, funcSearch) {\n const eventSearchRegexp = eventSearch ? toRegExp(eventSearch) : toRegExp('/.?/');\n const funcSearchRegexp = funcSearch ? toRegExp(funcSearch) : toRegExp('/.?/');\n\n const nativeAddEventListener = window.EventTarget.prototype.addEventListener;\n function addEventListenerWrapper(eventName, callback, ...args) {\n // The scriptlet might cause a website broke\n // if the website uses test addEventListener with callback = null\n // https://github.com/AdguardTeam/Scriptlets/issues/76\n let funcToCheck = callback;\n if (callback && typeof callback === 'function') {\n funcToCheck = callback.toString();\n }\n\n if (eventSearchRegexp.test(eventName.toString()) && funcSearchRegexp.test(funcToCheck)) {\n hit(source);\n return undefined;\n }\n return nativeAddEventListener.apply(this, [eventName, callback, ...args]);\n }\n\n window.EventTarget.prototype.addEventListener = addEventListenerWrapper;\n}\n\npreventAddEventListener.names = [\n 'prevent-addEventListener',\n 'addEventListener-defuser.js',\n 'ubo-addEventListener-defuser.js',\n 'aeld.js',\n 'ubo-aeld.js',\n];\n\npreventAddEventListener.injections = [toRegExp, hit];\n","/* eslint-disable consistent-return, no-eval */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet prevent-bab\n *\n * @description\n * Prevents BlockAdblock script from detecting an ad blocker.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#bab-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-bab')\n * ```\n */\nexport function preventBab(source) {\n const nativeSetTimeout = window.setTimeout;\n const babRegex = /\\.bab_elementid.$/;\n\n window.setTimeout = (callback, ...args) => {\n if (typeof callback !== 'string' || !babRegex.test(callback)) {\n return nativeSetTimeout.call(this, callback, ...args);\n }\n hit(source);\n };\n\n const signatures = [\n ['blockadblock'],\n ['babasbm'],\n [/getItem\\('babn'\\)/],\n ['getElementById', 'String.fromCharCode', 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 'charAt', 'DOMContentLoaded', 'AdBlock', 'addEventListener', 'doScroll', 'fromCharCode', '<<2|r>>4', 'sessionStorage', 'clientWidth', 'localStorage', 'Math', 'random'],\n ];\n const check = (str) => {\n for (let i = 0; i < signatures.length; i += 1) {\n const tokens = signatures[i];\n let match = 0;\n for (let j = 0; j < tokens.length; j += 1) {\n const token = tokens[j];\n const found = token instanceof RegExp ? token.test(str) : str.indexOf(token) > -1;\n if (found) {\n match += 1;\n }\n }\n if (match / tokens.length >= 0.8) {\n return true;\n }\n }\n return false;\n };\n\n const nativeEval = window.eval;\n window.eval = (str) => {\n if (!check(str)) {\n return nativeEval(str);\n }\n hit(source);\n const bodyEl = document.body;\n if (bodyEl) {\n bodyEl.style.removeProperty('visibility');\n }\n const el = document.getElementById('babasbmsgx');\n if (el) {\n el.parentNode.removeChild(el);\n }\n };\n}\n\npreventBab.names = [\n 'prevent-bab',\n 'nobab.js',\n 'ubo-nobab.js',\n 'bab-defuser.js',\n 'ubo-bab-defuser.js',\n];\n\npreventBab.injections = [hit];\n","/* eslint-disable no-unused-vars, no-extra-bind, func-names */\nimport { hit, noopFunc } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet nowebrtc\n *\n * @description\n * Disables WebRTC by overriding `RTCPeerConnection`. The overriden function will log every attempt to create a new connection.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#nowebrtcjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('nowebrtc')\n * ```\n */\n/* eslint-enable max-len */\nexport function nowebrtc(source) {\n let propertyName = '';\n if (window.RTCPeerConnection) {\n propertyName = 'RTCPeerConnection';\n } else if (window.webkitRTCPeerConnection) {\n propertyName = 'webkitRTCPeerConnection';\n }\n\n if (propertyName === '') {\n return;\n }\n\n const rtcReplacement = (config) => {\n hit(source, `Document tried to create an RTCPeerConnection: ${config}`);\n };\n rtcReplacement.prototype = {\n close: noopFunc,\n createDataChannel: noopFunc,\n createOffer: noopFunc,\n setRemoteDescription: noopFunc,\n };\n const rtc = window[propertyName];\n window[propertyName] = rtcReplacement;\n if (rtc.prototype) {\n rtc.prototype.createDataChannel = function (a, b) {\n return {\n close: noopFunc,\n send: noopFunc,\n };\n }.bind(null);\n }\n}\n\nnowebrtc.names = [\n 'nowebrtc',\n 'nowebrtc.js',\n 'ubo-nowebrtc.js',\n];\n\nnowebrtc.injections = [hit, noopFunc];\n","/* eslint-disable no-console */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet log-addEventListener\n *\n * @description\n * Logs all addEventListener calls to the console.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#addeventlistener-loggerjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('log-addEventListener')\n * ```\n */\nexport function logAddEventListener(source) {\n const log = console.log.bind(console);\n const nativeAddEventListener = window.EventTarget.prototype.addEventListener;\n function addEventListenerWrapper(eventName, callback, ...args) {\n hit(source);\n // The scriptlet might cause a website broke\n // if the website uses test addEventListener with callback = null\n // https://github.com/AdguardTeam/Scriptlets/issues/76\n let callbackToLog = callback;\n if (callback && typeof callback === 'function') {\n callbackToLog = callback.toString();\n }\n log(`addEventListener(\"${eventName}\", ${callbackToLog})`);\n return nativeAddEventListener.apply(this, [eventName, callback, ...args]);\n }\n window.EventTarget.prototype.addEventListener = addEventListenerWrapper;\n}\n\nlogAddEventListener.names = [\n 'log-addEventListener',\n 'addEventListener-logger.js',\n 'ubo-addEventListener-logger.js',\n 'aell.js',\n 'ubo-aell.js',\n];\n\nlogAddEventListener.injections = [hit];\n","/* eslint-disable no-console, no-eval */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet log-eval\n *\n * @description\n * Logs all `eval()` or `new Function()` calls to the console.\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('log-eval')\n * ```\n */\nexport function logEval(source) {\n const log = console.log.bind(console);\n // wrap eval function\n const nativeEval = window.eval;\n function evalWrapper(str) {\n hit(source);\n log(`eval(\"${str}\")`);\n return nativeEval(str);\n }\n window.eval = evalWrapper;\n\n // wrap new Function\n const nativeFunction = window.Function;\n\n function FunctionWrapper(...args) {\n hit(source);\n log(`new Function(${args.join(', ')})`);\n return nativeFunction.apply(this, [...args]);\n }\n\n FunctionWrapper.prototype = Object.create(nativeFunction.prototype);\n FunctionWrapper.prototype.constructor = FunctionWrapper;\n\n window.Function = FunctionWrapper;\n}\n\nlogEval.names = [\n 'log-eval',\n];\n\nlogEval.injections = [hit];\n","/**\n * @scriptlet log\n *\n * @description\n * A simple scriptlet which only purpose is to print arguments to console.\n * This scriptlet can be helpful for debugging and troubleshooting other scriptlets.\n *\n * **Example**\n * ```\n * example.org#%#//scriptlet('log', 'arg1', 'arg2')\n * ```\n */\nexport function log(...args) {\n console.log(args); // eslint-disable-line no-console\n}\nlog.names = ['log'];\n","/* eslint-disable no-eval, no-extra-bind */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet noeval\n *\n * @description\n * Prevents page to use eval.\n * Notifies about attempts in the console\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#noevaljs-\n *\n * It also can be used as `$redirect` rules sometimes.\n * See [redirect description](../wiki/about-redirects.md#noeval).\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('noeval')\n * ```\n */\nexport function noeval(source) {\n window.eval = function evalWrapper(s) {\n hit(source, `AdGuard has prevented eval:\\n${s}`);\n }.bind();\n}\n\nnoeval.names = [\n 'noeval',\n 'noeval.js',\n 'silent-noeval.js',\n 'ubo-noeval.js',\n 'ubo-silent-noeval.js',\n];\n\nnoeval.injections = [hit];\n","/* eslint-disable no-eval, no-extra-bind, func-names */\n\nimport { toRegExp, hit } from '../helpers';\n\n/**\n * @scriptlet prevent-eval-if\n *\n * @description\n * Prevents page to use eval matching payload.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#noeval-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-eval-if'[, search])\n * ```\n *\n * - `search` - optional, string or regexp for matching stringified eval payload.\n * If 'search is not specified — all stringified eval payload will be matched\n *\n * **Examples**\n * ```\n * ! Prevents eval if it matches 'test'\n * example.org#%#//scriptlet('prevent-eval-if', 'test')\n * ```\n *\n * @param {string|RegExp} [search] string or regexp matching stringified eval payload\n */\nexport function preventEvalIf(source, search) {\n search = search ? toRegExp(search) : toRegExp('/.?/');\n\n const nativeEval = window.eval;\n window.eval = function (payload) {\n if (!search.test(payload.toString())) {\n return nativeEval.call(window, payload);\n }\n hit(source, payload);\n return undefined;\n }.bind(window);\n}\n\npreventEvalIf.names = [\n 'prevent-eval-if',\n 'noeval-if.js',\n 'ubo-noeval-if.js',\n];\n\npreventEvalIf.injections = [toRegExp, hit];\n","/* eslint-disable no-console, func-names, no-multi-assign */\nimport { hit, noopFunc, noopThis } from '../helpers';\n\n/**\n * @scriptlet prevent-fab-3.2.0\n *\n * @description\n * Prevents execution of the FAB script v3.2.0.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#fuckadblockjs-320-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-fab-3.2.0')\n * ```\n */\nexport function preventFab(source) {\n hit(source);\n\n // redefines Fab function for adblock detection\n const Fab = function () {};\n Fab.prototype.check = noopFunc;\n Fab.prototype.clearEvent = noopFunc;\n Fab.prototype.emitEvent = noopFunc;\n Fab.prototype.on = function (a, b) {\n if (!a) {\n b();\n }\n return this;\n };\n Fab.prototype.onDetected = noopThis;\n Fab.prototype.onNotDetected = function (a) {\n a();\n return this;\n };\n Fab.prototype.setOption = noopFunc;\n\n const fab = new Fab();\n const getSetFab = {\n get() { return Fab; },\n set() {},\n };\n const getsetfab = {\n get() { return fab; },\n set() {},\n };\n\n // redefined Fab data properties which if 'FuckAdBlock' variable exists\n if (Object.prototype.hasOwnProperty.call(window, 'FuckAdBlock')) {\n window.FuckAdBlock = Fab;\n } else {\n // or redefined Fab accessor properties\n Object.defineProperty(window, 'FuckAdBlock', getSetFab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'BlockAdBlock')) {\n window.BlockAdBlock = Fab;\n } else {\n Object.defineProperty(window, 'BlockAdBlock', getSetFab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'SniffAdBlock')) {\n window.SniffAdBlock = Fab;\n } else {\n Object.defineProperty(window, 'SniffAdBlock', getSetFab);\n }\n\n if (Object.prototype.hasOwnProperty.call(window, 'fuckAdBlock')) {\n window.fuckAdBlock = fab;\n } else {\n Object.defineProperty(window, 'fuckAdBlock', getsetfab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'blockAdBlock')) {\n window.blockAdBlock = fab;\n } else {\n Object.defineProperty(window, 'blockAdBlock', getsetfab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'sniffAdBlock')) {\n window.sniffAdBlock = fab;\n } else {\n Object.defineProperty(window, 'sniffAdBlock', getsetfab);\n }\n}\n\npreventFab.names = [\n 'prevent-fab-3.2.0',\n 'nofab.js',\n 'ubo-nofab.js',\n 'fuckadblock.js-3.2.0',\n 'ubo-fuckadblock.js-3.2.0',\n];\n\npreventFab.injections = [hit, noopFunc, noopThis];\n","/* eslint-disable no-console, func-names, no-multi-assign */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet set-popads-dummy\n *\n * @description\n * Sets static properties PopAds and popns.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#popads-dummyjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('set-popads-dummy')\n * ```\n */\nexport function setPopadsDummy(source) {\n delete window.PopAds;\n delete window.popns;\n Object.defineProperties(window, {\n PopAds: {\n get: () => {\n hit(source);\n return {};\n },\n },\n popns: {\n get: () => {\n hit(source);\n return {};\n },\n },\n });\n}\n\nsetPopadsDummy.names = [\n 'set-popads-dummy',\n 'popads-dummy.js',\n 'ubo-popads-dummy.js',\n];\n\nsetPopadsDummy.injections = [hit];\n","import {\n hit, createOnErrorHandler, randomId,\n} from '../helpers';\n\n/**\n * @scriptlet prevent-popads-net\n *\n * @description\n * Aborts on property write (PopAds, popns), throws reference error with random id.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#popadsnetjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-popads-net')\n * ```\n */\nexport function preventPopadsNet(source) {\n const rid = randomId();\n\n const throwError = () => {\n throw new ReferenceError(rid);\n };\n\n delete window.PopAds;\n delete window.popns;\n Object.defineProperties(window, {\n PopAds: { set: throwError },\n popns: { set: throwError },\n });\n\n window.onerror = createOnErrorHandler(rid).bind();\n hit(source);\n}\n\npreventPopadsNet.names = [\n 'prevent-popads-net',\n 'popads.net.js',\n 'ubo-popads.net.js',\n];\n\npreventPopadsNet.injections = [createOnErrorHandler, randomId, hit];\n","/* eslint-disable func-names */\nimport { hit, setPropertyAccess } from '../helpers';\n\n/**\n * @scriptlet prevent-adfly\n *\n * @description\n * Prevents anti-adblock scripts on adfly short links.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#adfly-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-adfly')\n * ```\n */\nexport function preventAdfly(source) {\n const isDigit = (data) => /^\\d$/.test(data);\n const handler = function (encodedURL) {\n let evenChars = '';\n let oddChars = '';\n for (let i = 0; i < encodedURL.length; i += 1) {\n if (i % 2 === 0) {\n evenChars += encodedURL.charAt(i);\n } else {\n oddChars = encodedURL.charAt(i) + oddChars;\n }\n }\n\n let data = (evenChars + oddChars).split('');\n\n for (let i = 0; i < data.length; i += 1) {\n if (isDigit(data[i])) {\n for (let ii = i + 1; ii < data.length; ii += 1) {\n if (isDigit(data[ii])) {\n // eslint-disable-next-line no-bitwise\n const temp = parseInt(data[i], 10) ^ parseInt(data[ii], 10);\n if (temp < 10) {\n data[i] = temp.toString();\n }\n i = ii;\n break;\n }\n }\n }\n }\n data = data.join('');\n const decodedURL = window.atob(data).slice(16, -16);\n /* eslint-disable compat/compat */\n if (window.stop) {\n window.stop();\n }\n /* eslint-enable compat/compat */\n window.onbeforeunload = null;\n window.location.href = decodedURL;\n };\n\n let val;\n // Do not apply handler more than one time\n let applyHandler = true;\n\n const result = setPropertyAccess(window, 'ysmm', {\n configurable: false,\n set: (value) => {\n if (applyHandler) {\n applyHandler = false;\n try {\n if (typeof value === 'string') {\n handler(value);\n }\n } catch (err) { } // eslint-disable-line no-empty\n }\n val = value;\n },\n get: () => val,\n });\n\n if (result) {\n hit(source);\n } else {\n window.console.error('Failed to set up prevent-adfly scriptlet');\n }\n}\n\npreventAdfly.names = [\n 'prevent-adfly',\n 'adfly-defuser.js',\n 'ubo-adfly-defuser.js',\n];\n\npreventAdfly.injections = [setPropertyAccess, hit];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n noopFunc,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet debug-on-property-read\n *\n * @description\n * This scriptlet is basically the same as [abort-on-property-read](#abort-on-property-read), but instead of aborting it starts the debugger.\n *\n * **It is not supposed to be used in production filter lists!**\n *\n * **Syntax**\n * ```\n * ! Aborts script when it tries to access `window.alert`\n * example.org#%#//scriptlet('debug-on-property-read', 'alert')\n * ```\n */\n/* eslint-enable max-len */\nexport function debugOnPropertyRead(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n const rid = randomId();\n const abort = () => {\n hit(source);\n debugger; // eslint-disable-line no-debugger\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, {\n get: abort,\n set: noopFunc,\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\ndebugOnPropertyRead.names = [\n 'debug-on-property-read',\n];\ndebugOnPropertyRead.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n noopFunc,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet debug-on-property-write\n *\n * @description\n * This scriptlet is basically the same as [abort-on-property-write](#abort-on-property-write), but instead of aborting it starts the debugger.\n *\n * **It is not supposed to be used in production filter lists!**\n *\n * **Syntax**\n * ```\n * ! Aborts script when it tries to write in property `window.test`\n * example.org#%#//scriptlet('debug-on-property-write', 'test')\n * ```\n */\n/* eslint-enable max-len */\nexport function debugOnPropertyWrite(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n const rid = randomId();\n const abort = () => {\n hit(source);\n debugger; // eslint-disable-line no-debugger\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, { set: abort });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid).bind();\n}\n\ndebugOnPropertyWrite.names = [\n 'debug-on-property-write',\n];\n\ndebugOnPropertyWrite.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet debug-current-inline-script\n *\n * @description\n * This scriptlet is basically the same as [abort-current-inline-script](#abort-current-inline-script), but instead of aborting it starts the debugger.\n *\n * **It is not supposed to be used in production filter lists!**\n *\n * **Syntax**\n *```\n * ! Aborts script when it tries to access `window.alert`\n * example.org#%#//scriptlet('debug-current-inline-script', 'alert')\n * ```\n */\n/* eslint-enable max-len */\nexport function debugCurrentInlineScript(source, property, search = null) {\n const regex = search ? toRegExp(search) : null;\n const rid = randomId();\n\n const getCurrentScript = () => {\n if (!document.currentScript) { // eslint-disable-line compat/compat\n const scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n }\n return document.currentScript; // eslint-disable-line compat/compat\n };\n\n const ourScript = getCurrentScript();\n\n const abort = () => {\n const scriptEl = getCurrentScript();\n if (scriptEl instanceof HTMLScriptElement\n && scriptEl.textContent.length > 0\n && scriptEl !== ourScript\n && (!regex || regex.test(scriptEl.textContent))) {\n hit(source);\n debugger; // eslint-disable-line no-debugger\n }\n };\n\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n let currentValue = base[prop];\n setPropertyAccess(base, prop, {\n set: (value) => {\n abort();\n currentValue = value;\n },\n get: () => {\n abort();\n return currentValue;\n },\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\ndebugCurrentInlineScript.names = [\n 'debug-current-inline-script',\n];\n\ndebugCurrentInlineScript.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n];\n","import { hit, observeDOMChanges } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet remove-attr\n *\n * @description\n * Removes the specified attributes from DOM nodes. This scriptlet runs once when the page loads\n * and after that periodically in order to DOM tree changes.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#remove-attrjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('remove-attr', attrs[, selector])\n * ```\n *\n * - `attrs` — required, attribute or list of attributes joined by '|'\n * - `selector` — optional, CSS selector, specifies DOM nodes from which the attributes will be removed\n *\n * **Examples**\n * 1. Removes by attribute\n * ```\n * example.org#%#//scriptlet('remove-attr', 'example|test')\n * ```\n *\n * ```html\n * \n *
Some text
\n *\n * \n *
Some text
\n * ```\n *\n * 2. Removes with specified selector\n * ```\n * example.org#%#//scriptlet('remove-attr', 'example', 'div[class=\"inner\"]')\n * ```\n *\n * ```html\n * \n *
\n *
Some text
\n *
\n *\n * \n *
\n *
Some text
\n *
\n * ```\n */\n/* eslint-enable max-len */\nexport function removeAttr(source, attrs, selector) {\n if (!attrs) { return; }\n attrs = attrs.split(/\\s*\\|\\s*/);\n if (!selector) {\n selector = `[${attrs.join('],[')}]`;\n }\n\n const rmattr = () => {\n const nodes = [].slice.call(document.querySelectorAll(selector));\n let removed = false;\n nodes.forEach((node) => {\n attrs.forEach((attr) => {\n node.removeAttribute(attr);\n removed = true;\n });\n });\n if (removed) {\n hit(source);\n }\n };\n\n rmattr();\n\n // 'true' for observing attributes\n observeDOMChanges(rmattr, true);\n}\n\nremoveAttr.names = [\n 'remove-attr',\n 'remove-attr.js',\n 'ubo-remove-attr.js',\n 'ra.js',\n 'ubo-ra.js',\n];\n\nremoveAttr.injections = [hit, observeDOMChanges];\n","import { hit, observeDOMChanges } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet remove-class\n *\n * @description\n * Removes the specified classes from DOM nodes. This scriptlet runs once after the page loads\n * and after that periodically in order to DOM tree changes.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#remove-classjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('remove-class', classes[, selector])\n * ```\n *\n * - `classes` — required, class or list of classes separated by '|'\n * - `selector` — optional, CSS selector, specifies DOM nodes from which the classes will be removed.\n * If there is no `selector`, each class of `classes` independently will be removed from all nodes which has one\n *\n * **Examples**\n * 1. Removes by classes\n * ```\n * example.org#%#//scriptlet('remove-class', 'example|test')\n * ```\n *\n * ```html\n * \n *
Some text
\n *
Some text
\n *
Some text
\n *\n * \n *
Some text
\n *
Some text
\n *
Some text
\n * ```\n *\n * 2. Removes with specified selector\n * ```\n * example.org#%#//scriptlet('remove-class', 'branding', 'div[class^=\"inner\"]')\n * ```\n *\n * ```html\n * \n *
\n *
Some text
\n *
\n *\n * \n *
\n *
Some text
\n *
\n * ```\n */\n/* eslint-enable max-len */\n\nexport function removeClass(source, classNames, selector) {\n if (!classNames) { return; }\n classNames = classNames.split(/\\s*\\|\\s*/);\n let selectors = [];\n if (!selector) {\n selectors = classNames.map((className) => {\n return `.${className}`;\n });\n }\n\n const removeClassHandler = () => {\n const nodes = new Set();\n if (selector) {\n const foundedNodes = [].slice.call(document.querySelectorAll(selector));\n foundedNodes.forEach((n) => nodes.add(n));\n } else if (selectors.length > 0) {\n selectors.forEach((s) => {\n const elements = document.querySelectorAll(s);\n for (let i = 0; i < elements.length; i += 1) {\n const element = elements[i];\n nodes.add(element);\n }\n });\n }\n\n let removed = false;\n\n nodes.forEach((node) => {\n classNames.forEach((className) => {\n if (node.classList.contains(className)) {\n node.classList.remove(className);\n removed = true;\n }\n });\n });\n\n if (removed) {\n hit(source);\n }\n };\n\n removeClassHandler();\n\n const CLASS_ATTR_NAME = ['class'];\n // 'true' for observing attributes\n // 'class' for observing only classes\n observeDOMChanges(removeClassHandler, true, CLASS_ATTR_NAME);\n}\n\nremoveClass.names = [\n 'remove-class',\n 'remove-class.js',\n 'ubo-remove-class.js',\n 'rc.js',\n 'ubo-rc.js',\n];\n\nremoveClass.injections = [hit, observeDOMChanges];\n","import { hit } from '../helpers';\n\n/**\n * @scriptlet disable-newtab-links\n *\n * @description\n * Prevents opening new tabs and windows if there is `target` attribute in element.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#disable-newtab-linksjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('disable-newtab-links')\n * ```\n */\nexport function disableNewtabLinks(source) {\n document.addEventListener('click', (ev) => {\n let { target } = ev;\n while (target !== null) {\n if (target.localName === 'a' && target.hasAttribute('target')) {\n ev.stopPropagation();\n ev.preventDefault();\n hit(source);\n break;\n }\n target = target.parentNode;\n }\n });\n}\n\ndisableNewtabLinks.names = [\n 'disable-newtab-links',\n 'disable-newtab-links.js',\n 'ubo-disable-newtab-links.js',\n];\n\ndisableNewtabLinks.injections = [\n hit,\n];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet adjust-setInterval\n *\n * @description\n * Adjusts interval for specified setInterval() callbacks.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#nano-setinterval-boosterjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('adjust-setInterval'[, match [, interval[, boost]]])\n * ```\n *\n * - `match` - optional, string/regular expression, matching in stringified callback function\n * - `interval` - optional, defaults to 1000, decimal integer, matching setInterval delay\n * - `boost` - optional, default to 0.05, float, capped at 50 times for up and down (0.02...50), interval multiplier\n *\n * **Examples**\n * 1. Adjust all setInterval() x20 times where interval equal 1000ms:\n * ```\n * example.org#%#//scriptlet('adjust-setInterval')\n * ```\n *\n * 2. Adjust all setInterval() x20 times where callback mathed with `example` and interval equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', 'example')\n * ```\n *\n * 3. Adjust all setInterval() x20 times where callback mathed with `example` and interval equal 400ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', 'example', '400')\n * ```\n *\n * 4. Slow down setInterval() x2 times where callback matched with `example` and interval equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', 'example', '', '2')\n * ```\n * 5. Adjust all setInterval() x50 times where interval equal 2000ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', '', '2000', '0.02')\n * ```\n */\n/* eslint-enable max-len */\nexport function adjustSetInterval(source, match, interval, boost) {\n const nativeInterval = window.setInterval;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const nativeIsFinite = Number.isFinite || window.isFinite; // eslint-disable-line compat/compat\n\n interval = parseInt(interval, 10);\n interval = nativeIsNaN(interval) ? 1000 : interval;\n\n boost = parseFloat(boost);\n boost = nativeIsNaN(boost) || !nativeIsFinite(boost) ? 0.05 : boost;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n if (boost < 0.02) {\n boost = 0.02;\n }\n if (boost > 50) {\n boost = 50;\n }\n\n const intervalWrapper = (cb, d, ...args) => {\n if (d === interval && match.test(cb.toString())) {\n d *= boost;\n hit(source);\n }\n return nativeInterval.apply(window, [cb, d, ...args]);\n };\n window.setInterval = intervalWrapper;\n}\n\nadjustSetInterval.names = [\n 'adjust-setInterval',\n 'nano-setInterval-booster.js',\n 'ubo-nano-setInterval-booster.js',\n 'nano-sib.js',\n 'ubo-nano-sib.js',\n];\n\nadjustSetInterval.injections = [toRegExp, hit];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet adjust-setTimeout\n *\n * @description\n * Adjusts timeout for specified setTimout() callbacks.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#nano-settimeout-boosterjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout'[, match [, timeout[, boost]]])\n * ```\n *\n * - `match` - optional, string/regular expression, matching in stringified callback function\n * - `timeout` - optional, defaults to 1000, decimal integer, matching setTimout delay\n * - `boost` - optional, default to 0.05, float, capped at 50 times for up and down (0.02...50), timeout multiplier\n *\n * **Examples**\n * 1. Adjust all setTimeout() x20 times where timeout equal 1000ms:\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout')\n * ```\n *\n * 2. Adjust all setTimeout() x20 times where callback mathed with `example` and timeout equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', 'example')\n * ```\n *\n * 3. Adjust all setTimeout() x20 times where callback mathed with `example` and timeout equal 400ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', 'example', '400')\n * ```\n *\n * 4. Slow down setTimeout() x2 times where callback matched with `example` and timeout equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', 'example', '', '2')\n * ```\n * 5. Adjust all setTimeout() x50 times where timeout equal 2000ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', '', '2000', '0.02')\n * ```\n */\n/* eslint-enable max-len */\nexport function adjustSetTimeout(source, match, timeout, boost) {\n const nativeTimeout = window.setTimeout;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const nativeIsFinite = Number.isFinite || window.isFinite; // eslint-disable-line compat/compat\n\n timeout = parseInt(timeout, 10);\n timeout = nativeIsNaN(timeout) ? 1000 : timeout;\n\n boost = parseFloat(boost);\n boost = nativeIsNaN(boost) || !nativeIsFinite(boost) ? 0.05 : boost;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n if (boost < 0.02) {\n boost = 0.02;\n }\n if (boost > 50) {\n boost = 50;\n }\n\n const timeoutWrapper = (cb, d, ...args) => {\n if (d === timeout && match.test(cb.toString())) {\n d *= boost;\n hit(source);\n }\n return nativeTimeout.apply(window, [cb, d, ...args]);\n };\n window.setTimeout = timeoutWrapper;\n}\n\nadjustSetTimeout.names = [\n 'adjust-setTimeout',\n 'nano-setTimeout-booster.js',\n 'ubo-nano-setTimeout-booster.js',\n 'nano-stb.js',\n 'ubo-nano-stb.js',\n];\n\nadjustSetTimeout.injections = [toRegExp, hit];\n","import { hit } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet dir-string\n *\n * @description\n * Wraps the `console.dir` API to call the `toString` method of the argument.\n * There are several adblock circumvention systems that detect browser devtools\n * and hide themselves. Therefore, if we force them to think\n * that devtools are open (using this scrciptlet),\n * it will automatically disable the adblock circumvention script.\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/6b2a309054cc23432102b85d13f12559639ef495/lib/content/snippets.js#L766\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('dir-string'[, times])\n * ```\n * - `times` - optional, the number of times to call the `toString` method of the argument to `console.dir`\n *\n * **Example**\n * ```\n * ! Run 2 times\n * example.org#%#//scriptlet('dir-string', '2')\n * ```\n */\n/* eslint-enable max-len */\nexport function dirString(source, times) {\n const { dir } = console;\n times = parseInt(times, 10);\n\n function dirWrapper(object) {\n // eslint-disable-next-line no-unused-vars\n let temp;\n for (let i = 0; i < times; i += 1) {\n // eslint-disable-next-line no-unused-expressions\n temp = `${object}`;\n }\n if (typeof dir === 'function') {\n dir.call(this, object);\n }\n hit(source, temp);\n }\n // eslint-disable-next-line no-console\n console.dir = dirWrapper;\n}\n\ndirString.names = [\n 'dir-string',\n 'abp-dir-string',\n];\n\ndirString.injections = [hit];\n","import { hit, getPropertyInChain } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet json-prune\n *\n * @description\n * Removes specified properties from the result of calling JSON.parse and returns the caller\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#json-prunejs-\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/master/lib/content/snippets.js#L1285\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('json-prune'[, propsToRemove [, obligatoryProps]])\n * ```\n *\n * - `propsToRemove` - optional, string of space-separated properties to remove\n * - `obligatoryProps` - optional, string of space-separated properties which must be all present for the pruning to occur\n *\n * **Examples**\n * 1. Removes property `example` from the results of JSON.parse call\n * ```\n * example.org#%#//scriptlet('json-prune', 'example')\n * ```\n *\n * For instance, the following call will return `{ one: 1}`\n *\n * ```html\n * JSON.parse('{\"one\":1,\"example\":true}')\n * ```\n *\n * 2. If there are no specified properties in the result of JSON.parse call, pruning will NOT occur\n * ```\n * example.org#%#//scriptlet('json-prune', 'one', 'obligatoryProp')\n * ```\n *\n * For instance, the following call will return `{ one: 1, two: 2}`\n *\n * ```html\n * JSON.parse('{\"one\":1,\"two\":2}')\n * ```\n *\n * 3. A property in a list of properties can be a chain of properties\n *\n * ```\n * example.org#%#//scriptlet('json-prune', 'a.b', 'adpath.url.first')\n * ```\n *\n * 4. Call with no arguments will log the current hostname and json payload at the console\n * ```\n * example.org#%#//scriptlet('json-prune')\n * ```\n */\n/* eslint-enable max-len */\nexport function jsonPrune(source, propsToRemove, requiredInitialProps) {\n // eslint-disable-next-line no-console\n const log = console.log.bind(console);\n const prunePaths = propsToRemove !== undefined && propsToRemove !== ''\n ? propsToRemove.split(/ +/)\n : [];\n const needlePaths = requiredInitialProps !== undefined && requiredInitialProps !== ''\n ? requiredInitialProps.split(/ +/)\n : [];\n\n function isPruningNeeded(root) {\n if (!root) {\n return false;\n }\n\n for (let i = 0; i < needlePaths.length; i += 1) {\n const needlePath = needlePaths[i];\n const details = getPropertyInChain(root, needlePath, false);\n const nestedPropName = needlePath.split('.').pop();\n if (details && details.base[nestedPropName] === undefined) {\n return false;\n }\n }\n return true;\n }\n\n const nativeParse = JSON.parse;\n\n const parseWrapper = (...args) => {\n const r = nativeParse.apply(window, args);\n if (prunePaths.length === 0) {\n log(window.location.hostname, r);\n return r;\n }\n if (isPruningNeeded(r) === false) {\n return r;\n }\n prunePaths.forEach((path) => {\n const ownerObj = getPropertyInChain(r, path, false);\n if (ownerObj !== undefined && ownerObj.base) {\n delete ownerObj.base[ownerObj.prop];\n }\n });\n hit(source);\n return r;\n };\n\n JSON.parse = parseWrapper;\n}\n\njsonPrune.names = [\n 'json-prune',\n 'json-prune.js',\n 'ubo-json-prune.js',\n];\n\njsonPrune.injections = [hit, getPropertyInChain];\n","import {\n hit, startsWith, toRegExp, noopFunc,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-requestAnimationFrame\n *\n * @description\n * Prevents a `requestAnimationFrame` call\n * if the text of the callback is matching the specified search string which does not start with `!`;\n * otherwise mismatched calls should be defused.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#no-requestanimationframe-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-requestAnimationFrame'[, search])\n * ```\n *\n * - `search` - optional, string or regular expression.\n * If starts with `!`, scriptlet will not match the stringified callback but all other will be defused.\n * If do not start with `!`, the stringified callback will be matched.\n *\n * Call with no argument will log all requestAnimationFrame calls while debugging.\n * So do not use the scriptlet without any parameter in production filter lists.\n *\n * **Examples**\n * 1. Prevents `requestAnimationFrame` calls if the callback matches `/\\.test/`.\n * ```bash\n * example.org#%#//scriptlet('prevent-requestAnimationFrame', '/\\.test/')\n * ```\n *\n * For instance, the following call will be prevented:\n * ```javascript\n * var times = 0;\n * requestAnimationFrame(function change() {\n * window.test = 'new value';\n * if (times < 2) {\n * times += 1;\n * requestAnimationFrame(change);\n * }\n * });\n * ```\n * 2. Prevents `requestAnimationFrame` calls if **does not match** 'check'.\n * ```bash\n * example.org#%#//scriptlet('prevent-requestAnimationFrame', '!check')\n * ```\n *\n * For instance, only the first call will be prevented:\n *\n * ```javascript\n * var timesFirst = 0;\n * requestAnimationFrame(function changeFirst() {\n * window.check = 'should not be prevented';\n * if (timesFirst < 2) {\n * timesFirst += 1;\n * requestAnimationFrame(changeFirst);\n * }\n * });\n *\n * var timesSecond = 0;\n * requestAnimationFrame(function changeSecond() {\n * window.second = 'should be prevented';\n * if (timesSecond < 2) {\n * timesSecond += 1;\n * requestAnimationFrame(changeSecond);\n * }\n * });\n * ```\n */\n/* eslint-enable max-len */\n\nexport function preventRequestAnimationFrame(source, match) {\n const nativeRequestAnimationFrame = window.requestAnimationFrame;\n\n // logs requestAnimationFrame to console if no arguments have been specified\n const shouldLog = typeof match === 'undefined';\n\n const INVERT_MARKER = '!';\n\n const doNotMatch = startsWith(match, INVERT_MARKER);\n if (doNotMatch) {\n match = match.slice(1);\n }\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n const rafWrapper = (callback, ...args) => {\n let shouldPrevent = false;\n if (shouldLog) {\n const logMessage = `log: requestAnimationFrame(\"${callback.toString()}\")`;\n hit(source, logMessage);\n } else {\n shouldPrevent = match.test(callback.toString()) !== doNotMatch;\n }\n\n if (shouldPrevent) {\n hit(source);\n return nativeRequestAnimationFrame(noopFunc);\n }\n\n return nativeRequestAnimationFrame.apply(window, [callback, ...args]);\n };\n\n window.requestAnimationFrame = rafWrapper;\n}\n\npreventRequestAnimationFrame.names = [\n 'prevent-requestAnimationFrame',\n 'no-requestAnimationFrame-if.js',\n 'ubo-no-requestAnimationFrame-if.js',\n 'norafif.js',\n 'ubo-norafif.js',\n 'ubo-no-requestAnimationFrame-if',\n 'ubo-norafif',\n];\n\npreventRequestAnimationFrame.injections = [hit, startsWith, toRegExp, noopFunc];\n","import { hit } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet set-cookie\n *\n * @description\n * Sets a cookie with the specified name and value. Cookie path defaults to root.\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('set-cookie', name, value)\n * ```\n *\n * - `name` - required, cookie name to be set\n * - `value` - required, cookie value; possible values:\n * - number `>= 0 && <= 15`\n * - one of the predefined constants:\n * - `true` / `True`\n * - `false` / `False`\n * - `yes` / `Yes` / `Y`\n * - `no`\n * - `ok` / `OK`\n *\n * **Examples**\n * ```\n * example.org#%#//scriptlet('set-cookie', 'checking', 'ok')\n *\n * example.org#%#//scriptlet('set-cookie', 'gdpr-settings-cookie', '1')\n * ```\n */\n/* eslint-enable max-len */\nexport function setCookie(source, name, value) {\n if (!name || !value) {\n return;\n }\n\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n let valueToSet;\n if (value === 'true') {\n valueToSet = 'true';\n } else if (value === 'True') {\n valueToSet = 'True';\n } else if (value === 'false') {\n valueToSet = 'false';\n } else if (value === 'False') {\n valueToSet = 'False';\n } else if (value === 'yes') {\n valueToSet = 'yes';\n } else if (value === 'Yes') {\n valueToSet = 'Yes';\n } else if (value === 'Y') {\n valueToSet = 'Y';\n } else if (value === 'no') {\n valueToSet = 'no';\n } else if (value === 'ok') {\n valueToSet = 'ok';\n } else if (value === 'OK') {\n valueToSet = 'OK';\n } else if (/^\\d+$/.test(value)) {\n valueToSet = parseFloat(value);\n if (nativeIsNaN(valueToSet)) {\n return;\n }\n if (Math.abs(valueToSet) < 0 || Math.abs(valueToSet) > 15) {\n return;\n }\n } else {\n return;\n }\n\n const pathToSet = 'path=/;';\n\n const cookieData = `${encodeURIComponent(name)}=${encodeURIComponent(valueToSet)}; ${pathToSet}`;\n\n hit(source);\n document.cookie = cookieData;\n}\n\nsetCookie.names = [\n 'set-cookie',\n];\n\nsetCookie.injections = [hit];\n","/**\n * This file must export all scriptlets which should be accessible\n */\nexport * from './abort-on-property-read';\nexport * from './abort-on-property-write';\nexport * from './prevent-setTimeout';\nexport * from './prevent-setInterval';\nexport * from './prevent-window-open';\nexport * from './abort-current-inline-script';\nexport * from './set-constant';\nexport * from './remove-cookie';\nexport * from './prevent-addEventListener';\nexport * from './prevent-bab';\nexport * from './nowebrtc';\nexport * from './log-addEventListener';\nexport * from './log-eval';\nexport * from './log';\nexport * from './noeval';\nexport * from './prevent-eval-if';\nexport * from './prevent-fab-3.2.0';\nexport * from './set-popads-dummy';\nexport * from './prevent-popads-net';\nexport * from './prevent-adfly';\nexport * from './debug-on-property-read';\nexport * from './debug-on-property-write';\nexport * from './debug-current-inline-script';\nexport * from './remove-attr';\nexport * from './remove-class';\nexport * from './disable-newtab-links';\nexport * from './adjust-setInterval';\nexport * from './adjust-setTimeout';\nexport * from './dir-string';\nexport * from './json-prune';\nexport * from './prevent-requestAnimationFrame';\nexport * from './set-cookie';\n","import {\n startsWith,\n endsWith,\n substringAfter,\n toRegExp,\n} from './string-utils';\n\nimport { ADG_SCRIPTLET_MASK } from './parse-rule';\n\nimport * as scriptletsList from '../scriptlets/scriptletsList';\n\nimport { redirects } from '../../scripts/compatibility-table.json';\n\nconst JS_RULE_MARKER = '#%#';\nconst COMMENT_MARKER = '!';\n\n/**\n * Checks if rule text is comment e.g. !!example.org##+js(set-constant.js, test, false)\n * @param {string} rule\n * @return {boolean}\n */\nconst isComment = (rule) => startsWith(rule, COMMENT_MARKER);\n\n/* ************************************************************************\n *\n * Scriptlets\n *\n ************************************************************************** */\n\n/**\n * uBlock scriptlet rule mask\n */\nconst UBO_SCRIPTLET_MASK_REG = /#@?#script:inject|#@?#\\s*\\+js/;\nconst UBO_SCRIPTLET_MASK_1 = '##+js';\nconst UBO_SCRIPTLET_MASK_2 = '##script:inject';\nconst UBO_SCRIPTLET_EXCEPTION_MASK_1 = '#@#+js';\nconst UBO_SCRIPTLET_EXCEPTION_MASK_2 = '#@#script:inject';\n\n/**\n * AdBlock Plus snippet rule mask\n */\nconst ABP_SCRIPTLET_MASK = '#$#';\nconst ABP_SCRIPTLET_EXCEPTION_MASK = '#@$#';\n\n/**\n * AdGuard CSS rule mask\n */\nconst ADG_CSS_MASK_REG = /#@?\\$#.+?\\s*\\{.*\\}\\s*$/g;\n\n/**\n * Checks if the `rule` is AdGuard scriptlet rule\n * @param {string} rule - rule text\n */\nconst isAdgScriptletRule = (rule) => {\n return (\n !isComment(rule)\n && rule.indexOf(ADG_SCRIPTLET_MASK) > -1\n );\n};\n\n/**\n * Checks if the `rule` is uBO scriptlet rule\n * @param {string} rule rule text\n */\nconst isUboScriptletRule = (rule) => {\n return (\n rule.indexOf(UBO_SCRIPTLET_MASK_1) > -1\n || rule.indexOf(UBO_SCRIPTLET_MASK_2) > -1\n || rule.indexOf(UBO_SCRIPTLET_EXCEPTION_MASK_1) > -1\n || rule.indexOf(UBO_SCRIPTLET_EXCEPTION_MASK_2) > -1\n )\n && UBO_SCRIPTLET_MASK_REG.test(rule)\n && !isComment(rule);\n};\n\n/**\n * Checks if the `rule` is AdBlock Plus snippet\n * @param {string} rule rule text\n */\nconst isAbpSnippetRule = (rule) => {\n return (\n rule.indexOf(ABP_SCRIPTLET_MASK) > -1\n || rule.indexOf(ABP_SCRIPTLET_EXCEPTION_MASK) > -1\n )\n && rule.search(ADG_CSS_MASK_REG) === -1\n && !isComment(rule);\n};\n\n/**\n * Finds scriptlet by it's name\n * @param {string} name - scriptlet name\n */\nconst getScriptletByName = (name) => {\n const scriptlets = Object.keys(scriptletsList).map((key) => scriptletsList[key]);\n return scriptlets\n .find((s) => {\n return s.names\n // full match name checking\n && (s.names.indexOf(name) > -1\n // or check ubo alias name without '.js' at the end\n || (!endsWith(name, '.js') && s.names.indexOf(`${name}.js`) > -1)\n );\n });\n};\n\n/**\n * Checks if the scriptlet name is valid\n * @param {string} name - Scriptlet name\n */\nconst isValidScriptletName = (name) => {\n if (!name) {\n return false;\n }\n const scriptlet = getScriptletByName(name);\n if (!scriptlet) {\n return false;\n }\n return true;\n};\n\n/* ************************************************************************\n *\n * Redirects\n *\n ************************************************************************** */\n\n/**\n * Redirect resources markers\n */\nconst ADG_UBO_REDIRECT_MARKER = 'redirect=';\nconst ABP_REDIRECT_MARKER = 'rewrite=abp-resource:';\n\nconst VALID_SOURCE_TYPES = [\n 'image',\n 'subdocument',\n 'stylesheet',\n 'script',\n 'xmlhttprequest',\n 'media',\n];\n\nconst validAdgRedirects = redirects.filter((el) => el.adg);\n\n/**\n * Converts array of pairs to object.\n * Sort of Object.fromEntries() polyfill.\n * @param {Array} pairs - array of pairs\n * @returns {Object}\n */\nconst objFromEntries = (pairs) => {\n const output = pairs\n .reduce((acc, el) => {\n const [key, value] = el;\n acc[key] = value;\n return acc;\n }, {});\n return output;\n};\n\n/**\n * Compatibility object where KEYS = UBO redirect names and VALUES = ADG redirect names\n * It's used for UBO -> ADG converting\n */\nconst uboToAdgCompatibility = objFromEntries(\n validAdgRedirects\n .filter((el) => el.ubo)\n .map((el) => {\n return [el.ubo, el.adg];\n }),\n);\n\n/**\n * Compatibility object where KEYS = ABP redirect names and VALUES = ADG redirect names\n * It's used for ABP -> ADG converting\n */\nconst abpToAdgCompatibility = objFromEntries(\n validAdgRedirects\n .filter((el) => el.abp)\n .map((el) => {\n return [el.abp, el.adg];\n }),\n);\n\n/**\n * Compatibility object where KEYS = UBO redirect names and VALUES = ADG redirect names\n * It's used for ADG -> UBO converting\n */\nconst adgToUboCompatibility = objFromEntries(\n validAdgRedirects\n .filter((el) => el.ubo)\n .map((el) => {\n return [el.adg, el.ubo];\n }),\n);\n\n/**\n * Needed for AdGuard redirect names validation where KEYS = **valid** AdGuard redirect names\n * 'adgToUboCompatibility' is still needed for ADG -> UBO converting\n */\nconst validAdgCompatibility = objFromEntries(\n validAdgRedirects\n .map((el) => {\n return [el.adg, 'valid adg redirect'];\n }),\n);\n\nconst REDIRECT_RULE_TYPES = {\n VALID_ADG: {\n marker: ADG_UBO_REDIRECT_MARKER,\n compatibility: validAdgCompatibility,\n },\n ADG: {\n marker: ADG_UBO_REDIRECT_MARKER,\n compatibility: adgToUboCompatibility,\n },\n UBO: {\n marker: ADG_UBO_REDIRECT_MARKER,\n compatibility: uboToAdgCompatibility,\n },\n ABP: {\n marker: ABP_REDIRECT_MARKER,\n compatibility: abpToAdgCompatibility,\n },\n};\n\n/**\n * Parses redirect rule modifiers\n * @param {string} rule\n * @returns {Array}\n */\nconst parseModifiers = (rule) => substringAfter(rule, '$').split(',');\n\n/**\n * Gets redirect resource name\n * @param {string} rule\n * @param {string} marker - specific Adg/Ubo or Abp redirect resources marker\n * @returns {string} - redirect resource name\n */\nconst getRedirectName = (rule, marker) => {\n const ruleModifiers = parseModifiers(rule);\n const redirectNamePart = ruleModifiers\n .find((el) => el.indexOf(marker) > -1);\n return substringAfter(redirectNamePart, marker);\n};\n\n/**\n * Checks if the `rule` is AdGuard redirect rule.\n * Discards comments and JS rules and checks if the `rule` has 'redirect' modifier.\n * @param {string} rule - rule text\n */\nconst isAdgRedirectRule = (rule) => {\n const MARKER_IN_BASE_PART_MASK = '/((?!\\\\$|\\\\,).{1})redirect=(.{0,}?)\\\\$(popup)?/';\n return (\n !isComment(rule)\n && rule.indexOf(REDIRECT_RULE_TYPES.ADG.marker) > -1\n // some js rules may have 'redirect=' in it, so we should get rid of them\n && rule.indexOf(JS_RULE_MARKER) === -1\n // get rid of rules like '_redirect=*://look.$popup'\n && !(toRegExp(MARKER_IN_BASE_PART_MASK).test(rule))\n );\n};\n\n/**\n * Checks if the `rule` satisfies the `type`\n * @param {string} rule - rule text\n * @param {'VALID_ADG'|'ADG'|'UBO'|'ABP'} type - type of a redirect rule\n */\nconst isRedirectRuleByType = (rule, type) => {\n const { marker, compatibility } = REDIRECT_RULE_TYPES[type];\n\n if (rule\n && (!isComment(rule))\n && (rule.indexOf(marker) > -1)) {\n const redirectName = getRedirectName(rule, marker);\n\n return redirectName === Object\n .keys(compatibility)\n .find((el) => el === redirectName);\n }\n return false;\n};\n\n/**\n* Checks if the `rule` is **valid** AdGuard redirect resource rule\n* @param {string} rule - rule text\n* @returns {boolean}\n*/\nconst isValidAdgRedirectRule = (rule) => {\n return isRedirectRuleByType(rule, 'VALID_ADG');\n};\n\n/**\n* Checks if the AdGuard redirect `rule` has Ubo analog. Needed for Adg->Ubo conversion\n* @param {string} rule - AdGuard rule text\n* @returns {boolean} - true if the rule can be converted to Ubo\n*/\nconst isAdgRedirectCompatibleWithUbo = (rule) => {\n return isAdgRedirectRule(rule) && isRedirectRuleByType(rule, 'ADG');\n};\n\n/**\n* Checks if the Ubo redirect `rule` has AdGuard analog. Needed for Ubo->Adg conversion\n* @param {string} rule - Ubo rule text\n* @returns {boolean} - true if the rule can be converted to AdGuard\n*/\nconst isUboRedirectCompatibleWithAdg = (rule) => {\n return isRedirectRuleByType(rule, 'UBO');\n};\n\n/**\n* Checks if the Abp redirect `rule` has AdGuard analog. Needed for Abp->Adg conversion\n* @param {string} rule - Abp rule text\n* @returns {boolean} - true if the rule can be converted to AdGuard\n*/\nconst isAbpRedirectCompatibleWithAdg = (rule) => {\n return isRedirectRuleByType(rule, 'ABP');\n};\n\n/**\n * Checks if the rule has specified content type before Adg -> Ubo conversion.\n *\n * Used ONLY for Adg -> Ubo conversion\n * because Ubo redirect rules must contain content type, but Adg and Abp must not.\n *\n * Also source type can not be added automatically because of such valid rules:\n * ! Abp:\n * $rewrite=abp-resource:blank-js,xmlhttprequest\n * ! Adg:\n * $script,redirect=noopvast-2.0\n * $xmlhttprequest,redirect=noopvast-2.0\n *\n * @param {string} rule\n * @returns {boolean}\n */\nconst hasValidContentType = (rule) => {\n if (isRedirectRuleByType(rule, 'ADG')) {\n const ruleModifiers = parseModifiers(rule);\n const sourceType = ruleModifiers\n .find((el) => VALID_SOURCE_TYPES.indexOf(el) > -1);\n\n return sourceType !== undefined;\n }\n return false;\n};\n\nconst validator = {\n UBO_SCRIPTLET_MASK_REG,\n ABP_SCRIPTLET_MASK,\n ABP_SCRIPTLET_EXCEPTION_MASK,\n isComment,\n isAdgScriptletRule,\n isUboScriptletRule,\n isAbpSnippetRule,\n getScriptletByName,\n isValidScriptletName,\n REDIRECT_RULE_TYPES,\n isAdgRedirectRule,\n isValidAdgRedirectRule,\n isAdgRedirectCompatibleWithUbo,\n isUboRedirectCompatibleWithAdg,\n isAbpRedirectCompatibleWithAdg,\n parseModifiers,\n getRedirectName,\n hasValidContentType,\n};\n\nexport default validator;\n","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}\n\nmodule.exports = _toArray;","import {\n getBeforeRegExp,\n substringAfter,\n substringBefore,\n wrapInSingleQuotes,\n getStringInBraces,\n} from './string-utils';\n\nimport validator from './validator';\n\nimport { parseRule } from './parse-rule';\n\nimport * as scriptletList from '../scriptlets/scriptletsList';\n\n/**\n * AdGuard scriptlet rule\n */\nconst ADGUARD_SCRIPTLET_MASK_REG = /#@?%#\\/\\/scriptlet\\(.+\\)/;\n// eslint-disable-next-line no-template-curly-in-string\nconst ADGUARD_SCRIPTLET_TEMPLATE = '${domains}#%#//scriptlet(${args})';\n// eslint-disable-next-line no-template-curly-in-string\nconst ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE = '${domains}#@%#//scriptlet(${args})';\n\n/**\n * uBlock scriptlet rule mask\n */\n// eslint-disable-next-line no-template-curly-in-string\nconst UBO_SCRIPTLET_TEMPLATE = '${domains}##+js(${args})';\n// eslint-disable-next-line no-template-curly-in-string\nconst UBO_SCRIPTLET_EXCEPTION_TEMPLATE = '${domains}#@#+js(${args})';\n\nconst UBO_ALIAS_NAME_MARKER = 'ubo-';\n\n// https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#xhr\nconst UBO_XHR_TYPE = 'xhr';\n\nconst ADG_XHR_TYPE = 'xmlhttprequest';\n\n/**\n * Returns array of strings separated by space which not in quotes\n * @param {string} str\n */\nconst getSentences = (str) => {\n const reg = /'.*?'|\".*?\"|\\S+/g;\n return str.match(reg);\n};\n\n/**\n * Replaces string with data by placeholders\n * @param {string} str\n * @param {Object} data - where keys are placeholders names\n */\nconst replacePlaceholders = (str, data) => {\n return Object.keys(data).reduce((acc, key) => {\n const reg = new RegExp(`\\\\$\\\\{${key}\\\\}`, 'g');\n acc = acc.replace(reg, data[key]);\n return acc;\n }, str);\n};\n\n/**\n * Converts string of UBO scriptlet rule to AdGuard scritlet rule\n * @param {string} rule - UBO scriptlet rule\n * @returns {Array} - array with one AdGuard scriptlet rule\n */\nexport const convertUboScriptletToAdg = (rule) => {\n const domains = getBeforeRegExp(rule, validator.UBO_SCRIPTLET_MASK_REG);\n const mask = rule.match(validator.UBO_SCRIPTLET_MASK_REG)[0];\n let template;\n if (mask.indexOf('@') > -1) {\n template = ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE;\n } else {\n template = ADGUARD_SCRIPTLET_TEMPLATE;\n }\n const args = getStringInBraces(rule)\n .split(/, /g)\n .map((arg, index) => {\n let outputArg;\n if (index === 0) {\n outputArg = (arg.indexOf('.js') > -1) ? `ubo-${arg}` : `ubo-${arg}.js`;\n } else {\n outputArg = arg;\n }\n // for example: dramaserial.xyz##+js(abort-current-inline-script, $, popup)\n if (arg === '$') {\n outputArg = '$$';\n }\n return outputArg;\n })\n .map((arg) => wrapInSingleQuotes(arg))\n .join(', ');\n const adgRule = replacePlaceholders(\n template,\n { domains, args },\n );\n return [adgRule];\n};\n\n/**\n * Convert string of ABP snippet rule to AdGuard scritlet rule\n * @param {string} rule - ABP snippet rule\n * @returns {Array} - array of AdGuard scriptlet rules -\n * one or few items depends on Abp-rule\n */\nexport const convertAbpSnippetToAdg = (rule) => {\n const SEMICOLON_DIVIDER = /;(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/g;\n const mask = rule.indexOf(validator.ABP_SCRIPTLET_MASK) > -1\n ? validator.ABP_SCRIPTLET_MASK\n : validator.ABP_SCRIPTLET_EXCEPTION_MASK;\n const template = mask === validator.ABP_SCRIPTLET_MASK\n ? ADGUARD_SCRIPTLET_TEMPLATE\n : ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE;\n const domains = substringBefore(rule, mask);\n const args = substringAfter(rule, mask);\n\n return args.split(SEMICOLON_DIVIDER)\n .map((args) => getSentences(args)\n .filter((arg) => arg)\n .map((arg, index) => (index === 0 ? `abp-${arg}` : arg))\n .map((arg) => wrapInSingleQuotes(arg))\n .join(', '))\n .map((args) => replacePlaceholders(template, { domains, args }));\n};\n\n/**\n * Converts scriptlet rule to AdGuard one\n * @param {string} rule\n * @returns {Array} - array of AdGuard scriptlet rules -\n * one item for Adg and Ubo or few items for Abp\n */\nexport const convertScriptletToAdg = (rule) => {\n let result;\n if (validator.isUboScriptletRule(rule)) {\n result = convertUboScriptletToAdg(rule);\n } else if (validator.isAbpSnippetRule(rule)) {\n result = convertAbpSnippetToAdg(rule);\n } else if (validator.isAdgScriptletRule(rule) || (validator.isComment(rule))) {\n result = [rule];\n }\n\n return result;\n};\n\n/**\n * Converts UBO scriptlet rule to AdGuard one\n * @param {string} rule - AdGuard scriptlet rule\n * @returns {string} - UBO scriptlet rule\n */\nexport const convertAdgScriptletToUbo = (rule) => {\n let res;\n\n if (validator.isAdgScriptletRule(rule)) {\n const { name: parsedName, args: parsedParams } = parseRule(rule);\n\n // object of name and aliases for the Adg-scriptlet\n const adgScriptletObject = Object\n .keys(scriptletList)\n .map((el) => scriptletList[el])\n .map((s) => {\n const [name, ...aliases] = s.names;\n return { name, aliases };\n })\n .find((el) => (el.name === parsedName\n || el.aliases.indexOf(parsedName) >= 0));\n\n const { aliases } = adgScriptletObject;\n\n if (aliases.length > 0) {\n const uboAlias = adgScriptletObject.aliases\n // eslint-disable-next-line no-restricted-properties\n .find((alias) => alias.includes(UBO_ALIAS_NAME_MARKER));\n\n if (uboAlias) {\n const mask = rule.match(ADGUARD_SCRIPTLET_MASK_REG)[0];\n let template;\n if (mask.indexOf('@') > -1) {\n template = UBO_SCRIPTLET_EXCEPTION_TEMPLATE;\n } else {\n template = UBO_SCRIPTLET_TEMPLATE;\n }\n const domains = getBeforeRegExp(rule, ADGUARD_SCRIPTLET_MASK_REG);\n const uboName = uboAlias\n .replace(UBO_ALIAS_NAME_MARKER, '')\n // '.js' in the Ubo scriptlet name can be omitted\n // https://github.com/gorhill/uBlock/wiki/Resources-Library#general-purpose-scriptlets\n .replace('.js', '');\n\n const args = (parsedParams.length > 0) ? `${uboName}, ${parsedParams.join(', ')}` : uboName;\n\n const uboRule = replacePlaceholders(\n template,\n { domains, args },\n );\n\n res = uboRule;\n }\n }\n }\n\n return res;\n};\n\n/**\n * Validates any scriptlet rule\n * @param {string} input - can be Adguard or Ubo or Abp scriptlet rule\n */\nexport const isValidScriptletRule = (input) => {\n if (!input) {\n return false;\n }\n // ABP 'input' rule may contain more than one snippet\n const rulesArray = convertScriptletToAdg(input);\n\n // checking if each of parsed scriptlets is valid\n // if at least one of them is not valid - whole 'input' rule is not valid too\n const isValid = rulesArray.reduce((acc, rule) => {\n const parsedRule = parseRule(rule);\n return validator.isValidScriptletName(parsedRule.name) && acc;\n }, true);\n\n return isValid;\n};\n\n/**\n * Converts Ubo redirect rule to Adg one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertUboRedirectToAdg = (rule) => {\n const firstPartOfRule = substringBefore(rule, '$');\n const uboModifiers = validator.parseModifiers(rule);\n const adgModifiers = uboModifiers\n .map((el) => {\n if (el.indexOf(validator.REDIRECT_RULE_TYPES.UBO.marker) > -1) {\n const uboName = substringAfter(el, validator.REDIRECT_RULE_TYPES.UBO.marker);\n const adgName = validator.REDIRECT_RULE_TYPES.UBO.compatibility[uboName];\n return `${validator.REDIRECT_RULE_TYPES.ADG.marker}${adgName}`;\n }\n if (el === UBO_XHR_TYPE) {\n return ADG_XHR_TYPE;\n }\n return el;\n })\n .join(',');\n\n return `${firstPartOfRule}$${adgModifiers}`;\n};\n\n/**\n * Converts Abp redirect rule to Adg one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertAbpRedirectToAdg = (rule) => {\n const firstPartOfRule = substringBefore(rule, '$');\n const abpModifiers = validator.parseModifiers(rule);\n const adgModifiers = abpModifiers\n .map((el) => {\n if (el.indexOf(validator.REDIRECT_RULE_TYPES.ABP.marker) > -1) {\n const abpName = substringAfter(el, validator.REDIRECT_RULE_TYPES.ABP.marker);\n const adgName = validator.REDIRECT_RULE_TYPES.ABP.compatibility[abpName];\n return `${validator.REDIRECT_RULE_TYPES.ADG.marker}${adgName}`;\n }\n return el;\n })\n .join(',');\n\n return `${firstPartOfRule}$${adgModifiers}`;\n};\n\n/**\n * Converts redirect rule to AdGuard one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertRedirectToAdg = (rule) => {\n let result;\n if (validator.isUboRedirectCompatibleWithAdg(rule)) {\n result = convertUboRedirectToAdg(rule);\n } else if (validator.isAbpRedirectCompatibleWithAdg(rule)) {\n result = convertAbpRedirectToAdg(rule);\n } else if (validator.isValidAdgRedirectRule(rule)) {\n result = rule;\n }\n\n return result;\n};\n\n/**\n * Converts Adg redirect rule to Ubo one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertAdgRedirectToUbo = (rule) => {\n if (!validator.hasValidContentType(rule)) {\n throw new Error(`Rule is not valid for converting to Ubo. Source type is not specified in the rule: ${rule}`);\n } else {\n const firstPartOfRule = substringBefore(rule, '$');\n const uboModifiers = validator.parseModifiers(rule);\n const adgModifiers = uboModifiers\n .map((el) => {\n if (el.indexOf(validator.REDIRECT_RULE_TYPES.ADG.marker) > -1) {\n const adgName = substringAfter(el, validator.REDIRECT_RULE_TYPES.ADG.marker);\n const uboName = validator.REDIRECT_RULE_TYPES.ADG.compatibility[adgName];\n return `${validator.REDIRECT_RULE_TYPES.UBO.marker}${uboName}`;\n }\n return el;\n })\n .join(',');\n\n return `${firstPartOfRule}$${adgModifiers}`;\n }\n};\n","import {\n hit, noopFunc, noopNull, noopArray,\n} from '../helpers';\n\n/**\n * @redirect google-analytics\n *\n * @description\n * Mocks Google Analytics API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/google-analytics_analytics.js\n *\n * **Example**\n * ```\n * ||google-analytics.com/analytics.js$script,redirect=google-analytics\n * ```\n */\nexport function GoogleAnalytics(source) {\n // eslint-disable-next-line func-names\n const Tracker = function () { }; // constructor\n const proto = Tracker.prototype;\n proto.get = noopFunc;\n proto.set = noopFunc;\n proto.send = noopFunc;\n\n const googleAnalyticsName = window.GoogleAnalyticsObject || 'ga';\n function ga() {\n const len = arguments.length;\n if (len === 0) {\n return;\n }\n // eslint-disable-next-line prefer-rest-params\n const lastArg = arguments[len - 1];\n if (typeof lastArg !== 'object'\n || lastArg === null\n || typeof lastArg.hitCallback !== 'function'\n ) {\n return;\n }\n\n try {\n lastArg.hitCallback();\n // eslint-disable-next-line no-empty\n } catch (ex) { }\n }\n\n ga.create = () => new Tracker();\n ga.getByName = noopNull;\n ga.getAll = noopArray;\n ga.remove = noopFunc;\n ga.loaded = true;\n window[googleAnalyticsName] = ga;\n\n const { dataLayer } = window;\n if (dataLayer instanceof Object\n && dataLayer.hide instanceof Object\n && typeof dataLayer.hide.end === 'function'\n ) {\n dataLayer.hide.end();\n }\n\n hit(source);\n}\n\nGoogleAnalytics.names = [\n 'google-analytics',\n 'ubo-google-analytics_analytics.js',\n 'google-analytics_analytics.js',\n];\n\nGoogleAnalytics.injections = [\n hit,\n noopFunc,\n noopNull,\n noopArray,\n];\n","/* eslint-disable no-underscore-dangle */\nimport { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect google-analytics-ga\n *\n * @description\n * Mocks old Google Analytics API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/google-analytics_ga.js\n *\n * **Example**\n * ```\n * ||google-analytics.com/ga.js$script,redirect=google-analytics-ga\n * ```\n */\nexport function GoogleAnalyticsGa(source) {\n // Gaq constructor\n function Gaq() { }\n\n Gaq.prototype.Na = noopFunc;\n Gaq.prototype.O = noopFunc;\n Gaq.prototype.Sa = noopFunc;\n Gaq.prototype.Ta = noopFunc;\n Gaq.prototype.Va = noopFunc;\n Gaq.prototype._createAsyncTracker = noopFunc;\n Gaq.prototype._getAsyncTracker = noopFunc;\n Gaq.prototype._getPlugin = noopFunc;\n Gaq.prototype.push = (data) => {\n if (typeof data === 'function') {\n data();\n return;\n }\n if (Array.isArray(data) === false) {\n return;\n }\n // https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiDomainDirectory#_gat.GA_Tracker_._link\n if (data[0] === '_link' && typeof data[1] === 'string') {\n window.location.assign(data[1]);\n }\n // https://github.com/gorhill/uBlock/issues/2162\n if (data[0] === '_set' && data[1] === 'hitCallback' && typeof data[2] === 'function') {\n data[2]();\n }\n };\n\n const gaq = new Gaq();\n const asyncTrackers = window._gaq || [];\n if (Array.isArray(asyncTrackers)) {\n while (asyncTrackers[0]) {\n gaq.push(asyncTrackers.shift());\n }\n }\n // eslint-disable-next-line no-multi-assign\n window._gaq = gaq.qf = gaq;\n\n // Gat constructor\n function Gat() { }\n\n // Mock tracker api\n const api = [\n '_addIgnoredOrganic', '_addIgnoredRef', '_addItem', '_addOrganic',\n '_addTrans', '_clearIgnoredOrganic', '_clearIgnoredRef', '_clearOrganic',\n '_cookiePathCopy', '_deleteCustomVar', '_getName', '_setAccount',\n '_getAccount', '_getClientInfo', '_getDetectFlash', '_getDetectTitle',\n '_getLinkerUrl', '_getLocalGifPath', '_getServiceMode', '_getVersion',\n '_getVisitorCustomVar', '_initData', '_link', '_linkByPost',\n '_setAllowAnchor', '_setAllowHash', '_setAllowLinker', '_setCampContentKey',\n '_setCampMediumKey', '_setCampNameKey', '_setCampNOKey', '_setCampSourceKey',\n '_setCampTermKey', '_setCampaignCookieTimeout', '_setCampaignTrack', '_setClientInfo',\n '_setCookiePath', '_setCookiePersistence', '_setCookieTimeout', '_setCustomVar',\n '_setDetectFlash', '_setDetectTitle', '_setDomainName', '_setLocalGifPath',\n '_setLocalRemoteServerMode', '_setLocalServerMode', '_setReferrerOverride', '_setRemoteServerMode',\n '_setSampleRate', '_setSessionTimeout', '_setSiteSpeedSampleRate', '_setSessionCookieTimeout',\n '_setVar', '_setVisitorCookieTimeout', '_trackEvent', '_trackPageLoadTime',\n '_trackPageview', '_trackSocial', '_trackTiming', '_trackTrans',\n '_visitCode',\n ];\n const tracker = api.reduce((res, funcName) => {\n res[funcName] = noopFunc;\n return res;\n }, {});\n tracker._getLinkerUrl = (a) => a;\n\n Gat.prototype._anonymizeIP = noopFunc;\n Gat.prototype._createTracker = noopFunc;\n Gat.prototype._forceSSL = noopFunc;\n Gat.prototype._getPlugin = noopFunc;\n Gat.prototype._getTracker = () => tracker;\n Gat.prototype._getTrackerByName = () => tracker;\n Gat.prototype._getTrackers = noopFunc;\n Gat.prototype.aa = noopFunc;\n Gat.prototype.ab = noopFunc;\n Gat.prototype.hb = noopFunc;\n Gat.prototype.la = noopFunc;\n Gat.prototype.oa = noopFunc;\n Gat.prototype.pa = noopFunc;\n Gat.prototype.u = noopFunc;\n\n const gat = new Gat();\n window._gat = gat;\n\n hit(source);\n}\n\nGoogleAnalyticsGa.names = [\n 'google-analytics-ga',\n 'ubo-google-analytics_ga.js',\n 'google-analytics_ga.js',\n];\n\nGoogleAnalyticsGa.injections = [hit, noopFunc];\n","import { hit } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @redirect googlesyndication-adsbygoogle\n *\n * @description\n * Mocks Google AdSense API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/googlesyndication_adsbygoogle.js\n *\n * **Example**\n * ```\n * ||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=googlesyndication-adsbygoogle\n * ```\n */\n/* eslint-enable max-len */\nexport function GoogleSyndicationAdsByGoogle(source) {\n window.adsbygoogle = window.adsbygoogle || {\n length: 0,\n loaded: true,\n push() {\n this.length += 1;\n },\n };\n const adElems = document.querySelectorAll('.adsbygoogle');\n const css = 'height:1px!important;max-height:1px!important;max-width:1px!important;width:1px!important;';\n const statusAttrName = 'data-adsbygoogle-status';\n const ASWIFT_IFRAME_MARKER = 'aswift_';\n const GOOGLE_ADS_IFRAME_MARKER = 'google_ads_iframe_';\n\n let executed = false;\n for (let i = 0; i < adElems.length; i += 1) {\n const adElemChildNodes = adElems[i].childNodes;\n const childNodesQuantity = adElemChildNodes.length;\n // childNodes of .adsbygoogle can be defined if scriptlet was executed before\n // so we should check are that childNodes exactly defined by us\n // TODO: remake after scriptlets context developing in 1.3\n let areIframesDefined = false;\n if (childNodesQuantity > 0) {\n // it should be only 2 child iframes if scriptlet was executed\n areIframesDefined = childNodesQuantity === 2\n // the first of child nodes should be aswift iframe\n && adElemChildNodes[0].tagName.toLowerCase() === 'iframe'\n && adElemChildNodes[0].id.indexOf(ASWIFT_IFRAME_MARKER) > -1\n // the second of child nodes should be google_ads iframe\n && adElemChildNodes[1].tagName.toLowerCase() === 'iframe'\n && adElemChildNodes[1].id.indexOf(GOOGLE_ADS_IFRAME_MARKER) > -1;\n }\n\n if (!areIframesDefined) {\n // here we do the job if scriptlet has not been executed earlier\n adElems[i].setAttribute(statusAttrName, 'done');\n\n const aswiftIframe = document.createElement('iframe');\n aswiftIframe.id = `${ASWIFT_IFRAME_MARKER}${i + 1}`;\n aswiftIframe.style = css;\n adElems[i].appendChild(aswiftIframe);\n\n const googleadsIframe = document.createElement('iframe');\n googleadsIframe.id = `${GOOGLE_ADS_IFRAME_MARKER}${i + 1}`;\n googleadsIframe.style = css;\n adElems[i].appendChild(googleadsIframe);\n\n executed = true;\n }\n }\n\n if (executed) {\n hit(source);\n }\n}\n\nGoogleSyndicationAdsByGoogle.names = [\n 'googlesyndication-adsbygoogle',\n 'ubo-googlesyndication_adsbygoogle.js',\n 'googlesyndication_adsbygoogle.js',\n];\n\nGoogleSyndicationAdsByGoogle.injections = [\n hit,\n];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect googletagmanager-gtm\n *\n * @description\n * Mocks Google Tag Manager API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/googletagmanager_gtm.js\n *\n * **Example**\n * ```\n * ||googletagmanager.com/gtm.js$script,redirect=googletagmanager-gtm\n * ```\n */\nexport function GoogleTagManagerGtm(source) {\n window.ga = window.ga || noopFunc;\n const { dataLayer, google_optimize } = window; // eslint-disable-line camelcase\n if (dataLayer instanceof Object === false) {\n return;\n }\n\n if (dataLayer.hide instanceof Object && typeof dataLayer.hide.end === 'function') {\n dataLayer.hide.end();\n }\n\n if (typeof dataLayer.push === 'function') {\n dataLayer.push = (data) => {\n if (data instanceof Object && typeof data.eventCallback === 'function') {\n setTimeout(data.eventCallback, 1);\n }\n };\n }\n\n // https://github.com/AdguardTeam/Scriptlets/issues/81\n if (google_optimize instanceof Object && typeof google_optimize.get === 'function') { // eslint-disable-line camelcase\n const googleOptimizeWrapper = { };\n googleOptimizeWrapper.get = noopFunc;\n\n window.google_optimize = googleOptimizeWrapper;\n }\n\n hit(source);\n}\n\nGoogleTagManagerGtm.names = [\n 'googletagmanager-gtm',\n 'ubo-googletagmanager_gtm.js',\n 'googletagmanager_gtm.js',\n];\n\nGoogleTagManagerGtm.injections = [hit, noopFunc];\n","import {\n hit, noopFunc, noopThis, noopNull, noopArray, noopStr,\n} from '../helpers';\n\n/**\n * @redirect googletagservices-gpt\n *\n * @description\n * Mocks Google Publisher Tag API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/googletagservices_gpt.js\n *\n * **Example**\n * ```\n * ||googletagservices.com/tag/js/gpt.js$script,redirect=googletagservices-gpt\n * ```\n */\nexport function GoogleTagServicesGpt(source) {\n const companionAdsService = {\n addEventListener: noopThis,\n enableSyncLoading: noopFunc,\n setRefreshUnfilledSlots: noopFunc,\n };\n const contentService = {\n addEventListener: noopThis,\n setContent: noopFunc,\n };\n function PassbackSlot() { } // constructor\n\n PassbackSlot.prototype.display = noopFunc;\n PassbackSlot.prototype.get = noopNull;\n PassbackSlot.prototype.set = noopThis;\n PassbackSlot.prototype.setClickUrl = noopThis;\n PassbackSlot.prototype.setTagForChildDirectedTreatment = noopThis;\n PassbackSlot.prototype.setTargeting = noopThis;\n PassbackSlot.prototype.updateTargetingFromMap = noopThis;\n\n function SizeMappingBuilder() { } // constructor\n SizeMappingBuilder.prototype.addSize = noopThis;\n SizeMappingBuilder.prototype.build = noopNull;\n\n function Slot() { } // constructor\n Slot.prototype.addService = noopThis;\n Slot.prototype.clearCategoryExclusions = noopThis;\n Slot.prototype.clearTargeting = noopThis;\n Slot.prototype.defineSizeMapping = noopThis;\n Slot.prototype.get = noopNull;\n Slot.prototype.getAdUnitPath = noopArray;\n Slot.prototype.getAttributeKeys = noopArray;\n Slot.prototype.getCategoryExclusions = noopArray;\n Slot.prototype.getDomId = noopStr;\n Slot.prototype.getSlotElementId = noopStr;\n Slot.prototype.getSlotId = noopThis;\n Slot.prototype.getTargeting = noopArray;\n Slot.prototype.getTargetingKeys = noopArray;\n Slot.prototype.set = noopThis;\n Slot.prototype.setCategoryExclusion = noopThis;\n Slot.prototype.setClickUrl = noopThis;\n Slot.prototype.setCollapseEmptyDiv = noopThis;\n Slot.prototype.setTargeting = noopThis;\n\n const pubAdsService = {\n addEventListener: noopThis,\n clear: noopFunc,\n clearCategoryExclusions: noopThis,\n clearTagForChildDirectedTreatment: noopThis,\n clearTargeting: noopThis,\n collapseEmptyDivs: noopFunc,\n defineOutOfPagePassback() { return new PassbackSlot(); },\n definePassback() { return new PassbackSlot(); },\n disableInitialLoad: noopFunc,\n display: noopFunc,\n enableAsyncRendering: noopFunc,\n enableSingleRequest: noopFunc,\n enableSyncRendering: noopFunc,\n enableVideoAds: noopFunc,\n get: noopNull,\n getAttributeKeys: noopArray,\n getTargeting: noopFunc,\n getTargetingKeys: noopArray,\n getSlots: noopArray,\n refresh: noopFunc,\n set: noopThis,\n setCategoryExclusion: noopThis,\n setCentering: noopFunc,\n setCookieOptions: noopThis,\n setForceSafeFrame: noopThis,\n setLocation: noopThis,\n setPublisherProvidedId: noopThis,\n setRequestNonPersonalizedAds: noopThis,\n setSafeFrameConfig: noopThis,\n setTagForChildDirectedTreatment: noopThis,\n setTargeting: noopThis,\n setVideoContent: noopThis,\n updateCorrelator: noopFunc,\n };\n\n const { googletag = {} } = window;\n const { cmd = [] } = googletag;\n\n googletag.apiReady = true;\n googletag.cmd = [];\n googletag.cmd.push = (a) => {\n try {\n a();\n // eslint-disable-next-line no-empty\n } catch (ex) { }\n return 1;\n };\n googletag.companionAds = () => companionAdsService;\n googletag.content = () => contentService;\n googletag.defineOutOfPageSlot = () => new Slot();\n googletag.defineSlot = () => new Slot();\n googletag.destroySlots = noopFunc;\n googletag.disablePublisherConsole = noopFunc;\n googletag.display = noopFunc;\n googletag.enableServices = noopFunc;\n googletag.getVersion = noopStr;\n googletag.pubads = () => pubAdsService;\n googletag.pubadsReady = true;\n googletag.setAdIframeTitle = noopFunc;\n googletag.sizeMapping = () => new SizeMappingBuilder();\n\n window.googletag = googletag;\n while (cmd.length !== 0) {\n googletag.cmd.push(cmd.shift());\n }\n\n hit(source);\n}\n\nGoogleTagServicesGpt.names = [\n 'googletagservices-gpt',\n 'ubo-googletagservices_gpt.js',\n 'googletagservices_gpt.js',\n];\n\nGoogleTagServicesGpt.injections = [\n hit,\n noopFunc,\n noopThis,\n noopNull,\n noopArray,\n noopStr,\n];\n","import { hit } from '../helpers';\n\n/**\n * @redirect scorecardresearch-beacon\n *\n * @description\n * Mocks Scorecard Research API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/scorecardresearch_beacon.js\n *\n * **Example**\n * ```\n * ||sb.scorecardresearch.com/beacon.js$script,redirect=scorecardresearch-beacon\n * ```\n */\nexport function ScoreCardResearchBeacon(source) {\n window.COMSCORE = {\n purge() {\n // eslint-disable-next-line no-underscore-dangle\n window._comscore = [];\n },\n beacon() {},\n };\n hit(source);\n}\n\nScoreCardResearchBeacon.names = [\n 'scorecardresearch-beacon',\n 'ubo-scorecardresearch_beacon.js',\n 'scorecardresearch_beacon.js',\n];\n\nScoreCardResearchBeacon.injections = [\n hit,\n];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect metrika-yandex-tag\n *\n * @description\n * Mocks Yandex Metrika API.\n * https://yandex.ru/support/metrica/objects/method-reference.html\n *\n * **Example**\n * ```\n * ||mc.yandex.ru/metrika/tag.js$script,redirect=metrika-yandex-tag\n * ```\n */\nexport function metrikaYandexTag(source) {\n const asyncCallbackFromOptions = (param, options = {}) => {\n let { callback } = options;\n const { ctx } = options;\n if (typeof callback === 'function') {\n callback = ctx !== undefined ? callback.bind(ctx) : callback;\n setTimeout(() => callback());\n }\n };\n\n const init = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/addfileextension.html\n */\n const addFileExtension = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/extlink.html\n */\n const extLink = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/file.html\n */\n const file = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/get-client-id.html\n * @param {Function} cb\n */\n const getClientID = (cb) => {\n setTimeout(cb(null));\n };\n\n /**\n * https://yandex.ru/support/metrica/objects/hit.html\n */\n const hitFunc = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/notbounce.html\n */\n const notBounce = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/params-method.html\n */\n const params = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/reachgoal.html\n * @param {string} target\n * @param {Object} params\n * @param {Function} callback\n * @param {any} ctx\n */\n const reachGoal = (target, params, callback, ctx) => {\n asyncCallbackFromOptions(null, { callback, ctx });\n };\n\n /**\n * https://yandex.ru/support/metrica/objects/set-user-id.html\n */\n const setUserID = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/user-params.html\n */\n const userParams = noopFunc;\n\n const api = {\n init,\n addFileExtension,\n extLink,\n file,\n getClientID,\n hit: hitFunc,\n notBounce,\n params,\n reachGoal,\n setUserID,\n userParams,\n };\n\n function ym(id, funcName, ...args) {\n return api[funcName] && api[funcName](...args);\n }\n\n window.ym = ym;\n\n hit(source);\n}\n\nmetrikaYandexTag.names = [\n 'metrika-yandex-tag',\n];\n\nmetrikaYandexTag.injections = [hit, noopFunc];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect metrika-yandex-watch\n *\n * @description\n * Mocks the old Yandex Metrika API.\n * https://yandex.ru/support/metrica/objects/_method-reference.html\n *\n * **Example**\n * ```\n * ||mc.yandex.ru/metrika/watch.js$script,redirect=metrika-yandex-watch\n * ```\n */\nexport function metrikaYandexWatch(source) {\n const cbName = 'yandex_metrika_callbacks';\n\n /**\n * Gets callback and its context from options and call it in async way\n * @param {Object} options Yandex Metrika API options\n */\n const asyncCallbackFromOptions = (options = {}) => {\n let { callback } = options;\n const { ctx } = options;\n if (typeof callback === 'function') {\n callback = ctx !== undefined ? callback.bind(ctx) : callback;\n setTimeout(() => callback());\n }\n };\n\n function Metrika() { } // constructor\n\n // Methods without options\n Metrika.prototype.addFileExtension = noopFunc;\n Metrika.prototype.getClientID = noopFunc;\n Metrika.prototype.setUserID = noopFunc;\n Metrika.prototype.userParams = noopFunc;\n\n // Methods with options\n // The order of arguments should be kept in according to API\n Metrika.prototype.extLink = (url, options) => {\n asyncCallbackFromOptions(options);\n };\n Metrika.prototype.file = (url, options) => {\n asyncCallbackFromOptions(options);\n };\n Metrika.prototype.hit = (url, options) => {\n asyncCallbackFromOptions(options);\n };\n Metrika.prototype.reachGoal = (target, params, cb, ctx) => {\n asyncCallbackFromOptions({ callback: cb, ctx });\n };\n Metrika.prototype.notBounce = asyncCallbackFromOptions;\n\n if (window.Ya) {\n window.Ya.Metrika = Metrika;\n } else {\n window.Ya = { Metrika };\n }\n\n if (window[cbName] && Array.isArray(window[cbName])) {\n window[cbName].forEach((func) => {\n if (typeof func === 'function') {\n func();\n }\n });\n }\n\n hit(source);\n}\n\nmetrikaYandexWatch.names = [\n 'metrika-yandex-watch',\n];\n\nmetrikaYandexWatch.injections = [hit, noopFunc];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect amazon-apstag\n *\n * @description\n * Mocks Amazon's apstag.js\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/f842ab6d3c1cf0394f95d27092bf59627262da40/src/web_accessible_resources/amazon_apstag.js\n *\n * **Example**\n * ```\n * ||amazon-adsystem.com/aax2/apstag.js$script,redirect=amazon-apstag\n * ```\n */\nexport function AmazonApstag(source) {\n const apstagWrapper = {\n fetchBids(a, b) {\n if (typeof b === 'function') {\n b([]);\n }\n },\n init: noopFunc,\n setDisplayBids: noopFunc,\n targetingKeys: noopFunc,\n };\n\n window.apstag = apstagWrapper;\n\n hit(source);\n}\n\nAmazonApstag.names = [\n 'amazon-apstag',\n 'ubo-amazon_apstag.js',\n 'amazon_apstag.js',\n];\n\nAmazonApstag.injections = [hit, noopFunc];\n","import {\n attachDependencies,\n addCall,\n wrapInNonameFunc,\n passSourceAndProps,\n} from '../helpers/injector';\n\nimport validator from '../helpers/validator';\n\nimport {\n convertUboRedirectToAdg,\n convertAbpRedirectToAdg,\n convertRedirectToAdg,\n convertAdgRedirectToUbo,\n} from '../helpers/converter';\n\nimport * as redirectsList from './redirectsList';\n\n/**\n * Finds redirect resource by it's name\n * @param {string} name - redirect name\n */\nconst getRedirectByName = (name) => {\n const redirects = Object.keys(redirectsList).map((key) => redirectsList[key]);\n return redirects.find((r) => r.names && r.names.indexOf(name) > -1);\n};\n\n/**\n * @typedef {Object} Source - redirect properties\n * @property {string} name redirect name\n * @property {Array} args Arguments for redirect function\n * @property {'extension'|'test'} [engine] -\n * Defines the final form of redirect string presentation\n * @property {boolean} [verbose] flag to enable printing to console debug information\n */\n\n/**\n * Returns redirect code by param\n * @param {Source} source\n * @returns {string} redirect code\n */\nconst getRedirectCode = (source) => {\n const redirect = getRedirectByName(source.name);\n let result = attachDependencies(redirect);\n result = addCall(redirect, result);\n\n // redirect code for different sources is checked in tests\n // so it should be just a code without any source and props passed\n result = source.engine === 'test'\n ? wrapInNonameFunc(result)\n : passSourceAndProps(source, result);\n\n return result;\n};\n\nexport const redirectsCjs = {\n getCode: getRedirectCode,\n isAdgRedirectRule: validator.isAdgRedirectRule,\n isValidAdgRedirectRule: validator.isValidAdgRedirectRule,\n isAdgRedirectCompatibleWithUbo: validator.isAdgRedirectCompatibleWithUbo,\n isUboRedirectCompatibleWithAdg: validator.isUboRedirectCompatibleWithAdg,\n isAbpRedirectCompatibleWithAdg: validator.isAbpRedirectCompatibleWithAdg,\n convertUboRedirectToAdg,\n convertAbpRedirectToAdg,\n convertRedirectToAdg,\n convertAdgRedirectToUbo,\n};\n","import { redirectsCjs } from '../redirects';\n\nimport {\n attachDependencies,\n addCall,\n passSourceAndProps,\n wrapInNonameFunc,\n} from '../helpers/injector';\n\nimport validator from '../helpers/validator';\n\nimport {\n isValidScriptletRule,\n convertUboScriptletToAdg,\n convertAbpSnippetToAdg,\n convertScriptletToAdg,\n convertAdgScriptletToUbo,\n} from '../helpers/converter';\n\n/**\n * @typedef {Object} Source - scriptlet properties\n * @property {string} name Scriptlet name\n * @property {Array} args Arguments for scriptlet function\n * @property {'extension'|'corelibs'|'test'} engine -\n * Defines the final form of scriptlet string presentation\n * @property {string} [version]\n * @property {boolean} [verbose] flag to enable printing to console debug information\n * @property {string} [ruleText] Source rule text is used for debugging purposes\n * @property {string} [domainName] domain name where scriptlet is applied; for debugging purposes\n */\n\n/**\n * Returns scriptlet code by param\n * @param {Source} source\n * @returns {string} scriptlet code\n */\nfunction getScriptletCode(source) {\n if (!validator.isValidScriptletName(source.name)) {\n return null;\n }\n\n const scriptlet = validator.getScriptletByName(source.name);\n let result = attachDependencies(scriptlet);\n result = addCall(scriptlet, result);\n result = source.engine === 'corelibs' || source.engine === 'test'\n ? wrapInNonameFunc(result)\n : passSourceAndProps(source, result);\n return result;\n}\n\n/**\n * Scriptlets variable\n *\n * @returns {Object} object with methods:\n * `invoke` method receives one argument with `Source` type\n * `validate` method receives one argument with `String` type\n */\nconst scriptletsObject = (() => ({\n invoke: getScriptletCode,\n isValidScriptletName: validator.isValidScriptletName,\n isValidScriptletRule,\n isAdgScriptletRule: validator.isAdgScriptletRule,\n isUboScriptletRule: validator.isUboScriptletRule,\n isAbpSnippetRule: validator.isAbpSnippetRule,\n convertUboToAdg: convertUboScriptletToAdg,\n convertAbpToAdg: convertAbpSnippetToAdg,\n convertScriptletToAdg,\n convertAdgToUbo: convertAdgScriptletToUbo,\n redirects: redirectsCjs,\n}))();\n\nexport default scriptletsObject;\n","import scriptletsObject from './index';\n\n/**\n * Add module exports to be used as node package\n */\nmodule.exports = scriptletsObject;\n"],"names":["randomId","Math","random","toString","substr","setPropertyAccess","object","property","descriptor","currentDescriptor","Object","getOwnPropertyDescriptor","configurable","defineProperty","getPropertyInChain","base","chain","addProp","pos","indexOf","prop","slice","own","undefined","escapeRegExp","str","replace","toRegExp","length","RegExp","escaped","getBeforeRegExp","rx","index","search","substring","startsWith","prefix","endsWith","substringAfter","separator","substringBefore","wrapInSingleQuotes","getStringInBraces","firstIndex","lastIndex","lastIndexOf","createOnErrorHandler","rid","nativeOnError","window","onerror","onError","error","Function","args","apply","noopFunc","noopNull","trueFunc","falseFunc","noopThis","noopArray","noopStr","hit","source","message","verbose","log","console","bind","trace","ruleText","domainName","AG_SCRIPTLET_MARKER","UBO_SCRIPTLET_MARKER","ruleStartIndex","rulePart","LOG_MARKER","e","__debug","observeDOMChanges","callback","observeAttrs","attrsToObserv","throttle","method","delay","wait","savedArgs","wrapper","setTimeout","THROTTLE_DELAY_MS","observer","MutationObserver","callbackWrapper","connect","observe","document","documentElement","childList","subtree","attributes","attributeFilter","disconnect","matchStackTrace","stackRegexp","stackTrace","refinedStackTrace","split","map","line","trim","join","test","attachDependencies","scriptlet","injections","reduce","accum","dep","dependencies","name","addCall","code","passSourceAndProps","sourceString","JSON","stringify","argsString","params","wrapInNonameFunc","iterateWithTransitions","iterable","transitions","init","state","keys","i","ADG_SCRIPTLET_MASK","wordSaver","strs","saveSymb","s","saveStr","push","getAll","parseRule","TRANSITION","OPENED","PARAM","CLOSED","opened","rule","sep","char","transition","symb","Error","param","saver","preIndex","before","abortOnPropertyRead","stack","abort","ReferenceError","setChainPropAccess","owner","chainInfo","setter","a","get","set","names","abortOnPropertyWrite","preventSetTimeout","match","nativeTimeout","nativeIsNaN","Number","isNaN","shouldLog","INVERT_MARKER","isNotMatch","isNotDelay","parseInt","timeoutWrapper","timeout","shouldPrevent","preventSetInterval","nativeInterval","setInterval","intervalWrapper","interval","preventWindowOpen","replacement","nativeOpen","open","openWrapper","result","isProp","propertyPart","propertyName","propertyValue","resObj","abortCurrentInlineScript","searchRegexp","getCurrentScript","currentScript","scripts","getElementsByTagName","ourScript","scriptEl","content","textContent","textContentGetter","Node","prototype","call","HTMLScriptElement","props","propIndex","baseName","currentValue","value","setConstant","constantValue","parseFloat","abs","canceled","mustCancel","removeCookie","regex","removeCookieFromHost","cookieName","hostName","cookieSpec","domain1","domain2","path","expiration","cookie","rmCookie","forEach","cookieStr","hostParts","location","hostname","addEventListener","preventAddEventListener","eventSearch","funcSearch","eventSearchRegexp","funcSearchRegexp","nativeAddEventListener","EventTarget","addEventListenerWrapper","eventName","funcToCheck","preventBab","nativeSetTimeout","babRegex","signatures","check","tokens","j","token","found","nativeEval","eval","bodyEl","body","style","removeProperty","el","getElementById","parentNode","removeChild","nowebrtc","RTCPeerConnection","webkitRTCPeerConnection","rtcReplacement","config","close","createDataChannel","createOffer","setRemoteDescription","rtc","b","send","logAddEventListener","callbackToLog","logEval","evalWrapper","nativeFunction","FunctionWrapper","create","constructor","noeval","preventEvalIf","payload","preventFab","Fab","clearEvent","emitEvent","on","onDetected","onNotDetected","setOption","fab","getSetFab","getsetfab","hasOwnProperty","FuckAdBlock","BlockAdBlock","SniffAdBlock","fuckAdBlock","blockAdBlock","sniffAdBlock","setPopadsDummy","PopAds","popns","defineProperties","preventPopadsNet","throwError","preventAdfly","isDigit","data","handler","encodedURL","evenChars","oddChars","charAt","ii","temp","decodedURL","atob","stop","onbeforeunload","href","val","applyHandler","err","debugOnPropertyRead","debugOnPropertyWrite","debugCurrentInlineScript","removeAttr","attrs","selector","rmattr","nodes","querySelectorAll","removed","node","attr","removeAttribute","removeClass","classNames","selectors","className","removeClassHandler","Set","foundedNodes","n","add","elements","element","classList","contains","remove","CLASS_ATTR_NAME","disableNewtabLinks","ev","target","localName","hasAttribute","stopPropagation","preventDefault","adjustSetInterval","boost","nativeIsFinite","isFinite","cb","d","adjustSetTimeout","dirString","times","dir","dirWrapper","jsonPrune","propsToRemove","requiredInitialProps","prunePaths","needlePaths","isPruningNeeded","root","needlePath","details","nestedPropName","pop","nativeParse","parse","parseWrapper","r","ownerObj","preventRequestAnimationFrame","nativeRequestAnimationFrame","requestAnimationFrame","doNotMatch","rafWrapper","logMessage","setCookie","valueToSet","pathToSet","cookieData","encodeURIComponent","JS_RULE_MARKER","COMMENT_MARKER","isComment","UBO_SCRIPTLET_MASK_REG","UBO_SCRIPTLET_MASK_1","UBO_SCRIPTLET_MASK_2","UBO_SCRIPTLET_EXCEPTION_MASK_1","UBO_SCRIPTLET_EXCEPTION_MASK_2","ABP_SCRIPTLET_MASK","ABP_SCRIPTLET_EXCEPTION_MASK","ADG_CSS_MASK_REG","isAdgScriptletRule","isUboScriptletRule","isAbpSnippetRule","getScriptletByName","scriptlets","scriptletsList","key","find","isValidScriptletName","ADG_UBO_REDIRECT_MARKER","ABP_REDIRECT_MARKER","VALID_SOURCE_TYPES","validAdgRedirects","redirects","filter","adg","objFromEntries","pairs","output","acc","uboToAdgCompatibility","ubo","abpToAdgCompatibility","abp","adgToUboCompatibility","validAdgCompatibility","REDIRECT_RULE_TYPES","VALID_ADG","marker","compatibility","ADG","UBO","ABP","parseModifiers","getRedirectName","ruleModifiers","redirectNamePart","isAdgRedirectRule","MARKER_IN_BASE_PART_MASK","isRedirectRuleByType","type","redirectName","isValidAdgRedirectRule","isAdgRedirectCompatibleWithUbo","isUboRedirectCompatibleWithAdg","isAbpRedirectCompatibleWithAdg","hasValidContentType","sourceType","validator","ADGUARD_SCRIPTLET_MASK_REG","ADGUARD_SCRIPTLET_TEMPLATE","ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE","UBO_SCRIPTLET_TEMPLATE","UBO_SCRIPTLET_EXCEPTION_TEMPLATE","UBO_ALIAS_NAME_MARKER","UBO_XHR_TYPE","ADG_XHR_TYPE","getSentences","reg","replacePlaceholders","convertUboScriptletToAdg","domains","mask","template","arg","outputArg","adgRule","convertAbpSnippetToAdg","SEMICOLON_DIVIDER","convertScriptletToAdg","convertAdgScriptletToUbo","res","parsedName","parsedParams","adgScriptletObject","scriptletList","aliases","uboAlias","alias","includes","uboName","uboRule","isValidScriptletRule","input","rulesArray","isValid","parsedRule","convertUboRedirectToAdg","firstPartOfRule","uboModifiers","adgModifiers","adgName","convertAbpRedirectToAdg","abpModifiers","abpName","convertRedirectToAdg","convertAdgRedirectToUbo","GoogleAnalytics","Tracker","proto","googleAnalyticsName","GoogleAnalyticsObject","ga","len","arguments","lastArg","hitCallback","ex","getByName","loaded","dataLayer","hide","end","GoogleAnalyticsGa","Gaq","Na","O","Sa","Ta","Va","_createAsyncTracker","_getAsyncTracker","_getPlugin","Array","isArray","assign","gaq","asyncTrackers","_gaq","shift","qf","Gat","api","tracker","funcName","_getLinkerUrl","_anonymizeIP","_createTracker","_forceSSL","_getTracker","_getTrackerByName","_getTrackers","aa","ab","hb","la","oa","pa","u","gat","_gat","GoogleSyndicationAdsByGoogle","adsbygoogle","adElems","css","statusAttrName","ASWIFT_IFRAME_MARKER","GOOGLE_ADS_IFRAME_MARKER","executed","adElemChildNodes","childNodes","childNodesQuantity","areIframesDefined","tagName","toLowerCase","id","setAttribute","aswiftIframe","createElement","appendChild","googleadsIframe","GoogleTagManagerGtm","google_optimize","eventCallback","googleOptimizeWrapper","GoogleTagServicesGpt","companionAdsService","enableSyncLoading","setRefreshUnfilledSlots","contentService","setContent","PassbackSlot","display","setClickUrl","setTagForChildDirectedTreatment","setTargeting","updateTargetingFromMap","SizeMappingBuilder","addSize","build","Slot","addService","clearCategoryExclusions","clearTargeting","defineSizeMapping","getAdUnitPath","getAttributeKeys","getCategoryExclusions","getDomId","getSlotElementId","getSlotId","getTargeting","getTargetingKeys","setCategoryExclusion","setCollapseEmptyDiv","pubAdsService","clear","clearTagForChildDirectedTreatment","collapseEmptyDivs","defineOutOfPagePassback","definePassback","disableInitialLoad","enableAsyncRendering","enableSingleRequest","enableSyncRendering","enableVideoAds","getSlots","refresh","setCentering","setCookieOptions","setForceSafeFrame","setLocation","setPublisherProvidedId","setRequestNonPersonalizedAds","setSafeFrameConfig","setVideoContent","updateCorrelator","googletag","cmd","apiReady","companionAds","defineOutOfPageSlot","defineSlot","destroySlots","disablePublisherConsole","enableServices","getVersion","pubads","pubadsReady","setAdIframeTitle","sizeMapping","ScoreCardResearchBeacon","COMSCORE","purge","_comscore","beacon","metrikaYandexTag","asyncCallbackFromOptions","options","ctx","addFileExtension","extLink","file","getClientID","hitFunc","notBounce","reachGoal","setUserID","userParams","ym","metrikaYandexWatch","cbName","Metrika","url","Ya","func","AmazonApstag","apstagWrapper","fetchBids","setDisplayBids","targetingKeys","apstag","getRedirectByName","redirectsList","getRedirectCode","redirect","engine","redirectsCjs","getCode","getScriptletCode","scriptletsObject","invoke","convertUboToAdg","convertAbpToAdg","convertAdgToUbo","module","exports"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"scriptletsCjs.js","sources":["../../src/helpers/random-id.js","../../src/helpers/set-property-access.js","../../src/helpers/get-property-in-chain.js","../../src/helpers/string-utils.js","../../src/helpers/create-on-error-handler.js","../../src/helpers/noop.js","../../src/helpers/hit.js","../../src/helpers/observer.js","../../src/helpers/match-stack.js","../../src/helpers/index.js","../../src/helpers/injector.js","../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../node_modules/@babel/runtime/helpers/slicedToArray.js","../../node_modules/@babel/runtime/helpers/defineProperty.js","../../src/helpers/parse-rule.js","../../src/scriptlets/abort-on-property-read.js","../../src/scriptlets/abort-on-property-write.js","../../src/scriptlets/prevent-setTimeout.js","../../src/scriptlets/prevent-setInterval.js","../../src/scriptlets/prevent-window-open.js","../../src/scriptlets/abort-current-inline-script.js","../../src/scriptlets/set-constant.js","../../src/scriptlets/remove-cookie.js","../../src/scriptlets/prevent-addEventListener.js","../../src/scriptlets/prevent-bab.js","../../src/scriptlets/nowebrtc.js","../../src/scriptlets/log-addEventListener.js","../../src/scriptlets/log-eval.js","../../src/scriptlets/log.js","../../src/scriptlets/noeval.js","../../src/scriptlets/prevent-eval-if.js","../../src/scriptlets/prevent-fab-3.2.0.js","../../src/scriptlets/set-popads-dummy.js","../../src/scriptlets/prevent-popads-net.js","../../src/scriptlets/prevent-adfly.js","../../src/scriptlets/debug-on-property-read.js","../../src/scriptlets/debug-on-property-write.js","../../src/scriptlets/debug-current-inline-script.js","../../src/scriptlets/remove-attr.js","../../src/scriptlets/remove-class.js","../../src/scriptlets/disable-newtab-links.js","../../src/scriptlets/adjust-setInterval.js","../../src/scriptlets/adjust-setTimeout.js","../../src/scriptlets/dir-string.js","../../src/scriptlets/json-prune.js","../../src/scriptlets/prevent-requestAnimationFrame.js","../../src/scriptlets/set-cookie.js","../../src/scriptlets/scriptletsList.js","../../src/helpers/validator.js","../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../node_modules/@babel/runtime/helpers/toArray.js","../../src/helpers/converter.js","../../src/redirects/google-analytics.js","../../src/redirects/google-analytics-ga.js","../../src/redirects/googlesyndication-adsbygoogle.js","../../src/redirects/googletagmanager-gtm.js","../../src/redirects/googletagservices-gpt.js","../../src/redirects/scorecardresearch-beacon.js","../../src/redirects/metrika-yandex-tag.js","../../src/redirects/metrika-yandex-watch.js","../../src/redirects/amazon-apstag.js","../../src/redirects/index.js","../../src/scriptlets/index.js","../../src/scriptlets/scriptletsCjsWrapper.js"],"sourcesContent":["/**\n * Generate random six symbols id\n */\nexport function randomId() {\n return Math.random().toString(36).substr(2, 9);\n}\n","/**\n * Set getter and setter to property if it's configurable\n * @param {Object} object target object with property\n * @param {string} property property name\n * @param {Object} descriptor contains getter and setter functions\n * @returns {boolean} is operation successful\n */\nexport function setPropertyAccess(object, property, descriptor) {\n const currentDescriptor = Object.getOwnPropertyDescriptor(object, property);\n if (currentDescriptor && !currentDescriptor.configurable) {\n return false;\n }\n Object.defineProperty(object, property, descriptor);\n return true;\n}\n","/**\n * @typedef Chain\n * @property {Object} base\n * @property {string} prop\n * @property {string} [chain]\n */\n\n/**\n * Check is property exist in base object recursively\n *\n * If property doesn't exist in base object,\n * defines this property (for addProp = true)\n * and returns base, property name and remaining part of property chain\n *\n * @param {Object} base\n * @param {string} chain\n * @param {boolean} [addProp=true]\n * defines is nonexistent base property should be assigned as 'undefined'\n * @returns {Chain}\n */\nexport function getPropertyInChain(base, chain, addProp = true) {\n const pos = chain.indexOf('.');\n if (pos === -1) {\n return { base, prop: chain };\n }\n const prop = chain.slice(0, pos);\n const own = base[prop];\n chain = chain.slice(pos + 1);\n if (own !== undefined) {\n return getPropertyInChain(own, chain, addProp);\n }\n\n if (!addProp) {\n return false;\n }\n\n Object.defineProperty(base, prop, { configurable: true });\n return { base: own, prop, chain };\n}\n","/**\n * Escapes special chars in string\n * @param {string} str\n * @returns {string}\n */\nexport const escapeRegExp = (str) => str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n/**\n * Converts search string to the regexp\n * TODO think about nested dependencies, but be careful with dependency loops\n * @param {string} str search string\n * @returns {RegExp}\n */\nexport const toRegExp = (str) => {\n if (str[0] === '/' && str[str.length - 1] === '/') {\n return new RegExp(str.slice(1, -1));\n }\n const escaped = str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n return new RegExp(escaped);\n};\n\n/**\n * Get string before regexp first match\n * @param {string} str\n * @param {RegExp} rx\n */\nexport const getBeforeRegExp = (str, rx) => {\n const index = str.search(rx);\n return str.substring(0, index);\n};\n\nexport const startsWith = (str, prefix) => {\n return str && str.indexOf(prefix) === 0;\n};\n\nexport const endsWith = (str, prefix) => {\n return str && str.indexOf(prefix) === str.length - 1;\n};\n\nexport const substringAfter = (str, separator) => {\n if (!str) {\n return str;\n }\n const index = str.indexOf(separator);\n return index < 0 ? '' : str.substring(index + separator.length);\n};\n\nexport const substringBefore = (str, separator) => {\n if (!str || !separator) {\n return str;\n }\n const index = str.indexOf(separator);\n return index < 0 ? str : str.substring(0, index);\n};\n\n/**\n * Wrap str in single qoutes and replaces single quotes to doudle one\n * @param {string} str\n */\nexport const wrapInSingleQuotes = (str) => {\n if ((str[0] === '\\'' && str[str.length - 1] === '\\'')\n || (str[0] === '\"' && str[str.length - 1] === '\"')) {\n str = str.substring(1, str.length - 1);\n }\n // eslint-disable-next-line no-useless-escape\n str = str.replace(/\\'/g, '\"');\n\n return `'${str}'`;\n};\n\n/**\n * Returns substring enclosed in the widest braces\n * @param {string} str\n */\nexport const getStringInBraces = (str) => {\n const firstIndex = str.indexOf('(');\n const lastIndex = str.lastIndexOf(')');\n return str.substring(firstIndex + 1, lastIndex);\n};\n","/**\n * Generates function which silents global errors on page generated by scriptlet\n * If error doesn't belong to our error we transfer it to the native onError handler\n * @param {string} rid - unique identifier of scriptlet\n * @return {onError}\n */\nexport function createOnErrorHandler(rid) {\n // eslint-disable-next-line consistent-return\n const nativeOnError = window.onerror;\n return function onError(error, ...args) {\n if (typeof error === 'string' && error.indexOf(rid) !== -1) {\n return true;\n }\n if (nativeOnError instanceof Function) {\n return nativeOnError.apply(this, [error, ...args]);\n }\n return false;\n };\n}\n","/**\n * Noop function\n */\nexport const noopFunc = () => { };\n\n/**\n * Function returns null\n */\nexport const noopNull = () => null;\n\n/**\n * Function returns true\n */\nexport const trueFunc = () => true;\n\n/**\n * Function returns false\n */\nexport const falseFunc = () => false;\n\n/**\n * Function returns this\n */\nexport function noopThis() {\n return this;\n}\n\n/**\n * Function returns empty array\n */\nexport const noopArray = () => [];\n\n/**\n * Function returns empty string\n */\nexport const noopStr = () => '';\n","/* eslint-disable no-console, no-underscore-dangle */\n/**\n * Hit used only for debug purposes now\n * @param {Source} source\n * @param {string} [message] - optional message;\n * use LOG_MARKER = 'log: ' at the start of a message\n * for logging scriptlets\n */\nexport const hit = (source, message) => {\n if (source.verbose !== true) {\n return;\n }\n\n try {\n const log = console.log.bind(console);\n const trace = console.trace.bind(console);\n\n let prefix = source.ruleText || '';\n\n if (source.domainName) {\n const AG_SCRIPTLET_MARKER = '#%#//';\n const UBO_SCRIPTLET_MARKER = '##+js';\n let ruleStartIndex;\n if (source.ruleText.indexOf(AG_SCRIPTLET_MARKER) > -1) {\n ruleStartIndex = source.ruleText.indexOf(AG_SCRIPTLET_MARKER);\n } else if (source.ruleText.indexOf(UBO_SCRIPTLET_MARKER) > -1) {\n ruleStartIndex = source.ruleText.indexOf(UBO_SCRIPTLET_MARKER);\n }\n // delete all domains from ruleText and leave just rule part\n const rulePart = source.ruleText.slice(ruleStartIndex);\n // prepare applied scriptlet rule for specific domain\n prefix = `${source.domainName}${rulePart}`;\n }\n\n // Used to check if scriptlet uses 'hit' function for logging\n const LOG_MARKER = 'log: ';\n\n if (message) {\n if (message.indexOf(LOG_MARKER) === -1) {\n log(`${prefix} message:\\n${message}`);\n } else {\n log(message.slice(LOG_MARKER.length));\n }\n }\n\n log(`${prefix} trace start`);\n if (trace) {\n trace();\n }\n log(`${prefix} trace end`);\n } catch (e) {\n // try catch for Edge 15\n // In according to this issue https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/14495220/\n // console.log throws an error\n }\n\n // This is necessary for unit-tests only!\n if (typeof window.__debug === 'function') {\n window.__debug(source);\n }\n};\n","/**\n * DOM tree changes observer. Used for 'remove-attr' and 'remove-class' scriptlets\n * @param {Function} callback\n * @param {Boolean} observeAttrs - optional parameter - should observer check attibutes changes\n */\nexport const observeDOMChanges = (callback, observeAttrs = false, attrsToObserv = []) => {\n /**\n * Returns a wrapper, passing the call to 'method' at maximum once per 'delay' milliseconds.\n * Those calls that fall into the \"cooldown\" period, are ignored\n * @param {Function} method\n * @param {Number} delay - milliseconds\n */\n const throttle = (method, delay) => {\n let wait = false;\n let savedArgs;\n const wrapper = (...args) => {\n if (wait) {\n savedArgs = args;\n return;\n }\n method(...args);\n wait = true;\n setTimeout(() => {\n wait = false;\n if (savedArgs) {\n wrapper(savedArgs);\n savedArgs = null;\n }\n }, delay);\n };\n return wrapper;\n };\n\n /**\n * 'delay' in milliseconds for 'throttle' method\n */\n const THROTTLE_DELAY_MS = 20;\n /**\n * Used for remove-class\n */\n // eslint-disable-next-line no-use-before-define\n const observer = new MutationObserver(throttle(callbackWrapper, THROTTLE_DELAY_MS));\n\n const connect = () => {\n if (attrsToObserv.length > 0) {\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n attributes: observeAttrs,\n attributeFilter: attrsToObserv,\n });\n } else {\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n attributes: observeAttrs,\n });\n }\n };\n const disconnect = () => {\n observer.disconnect();\n };\n function callbackWrapper() {\n disconnect();\n callback();\n connect();\n }\n\n connect();\n};\n","/**\n * Checks if the stackTrace contains stackRegexp\n * // https://github.com/AdguardTeam/Scriptlets/issues/82\n * @param {string} stackRegexp - stack regexp\n * @param {string} stackTrace - script error stack trace\n * @returns {boolean}\n */\n\nexport const matchStackTrace = (stackRegexp, stackTrace) => {\n const refinedStackTrace = stackTrace\n .split('\\n')\n .slice(2) // get rid of our own functions in the stack trace\n .map((line) => line.trim()) // trim the lines\n .join('\\n');\n\n return stackRegexp.test(refinedStackTrace);\n};\n","/**\n * This file must export all used dependencies\n */\nexport * from './random-id';\nexport * from './set-property-access';\nexport * from './get-property-in-chain';\nexport * from './string-utils';\nexport * from './create-on-error-handler';\nexport * from './noop';\nexport * from './hit';\nexport * from './observer';\nexport * from './match-stack';\n","import * as dependencies from '.';\n\n/**\n * Concat dependencies to scriptlet code\n * @param {string} scriptlet string view of scriptlet\n */\nexport function attachDependencies(scriptlet) {\n const { injections = [] } = scriptlet;\n return injections.reduce((accum, dep) => `${accum}\\n${dependencies[dep.name]}`, scriptlet.toString());\n}\n\n/**\n * Add scriptlet call to existing code\n * @param {Function} scriptlet\n * @param {string} code\n */\nexport function addCall(scriptlet, code) {\n return `${code};\n const updatedArgs = args ? [].concat(source).concat(args) : [source];\n ${scriptlet.name}.apply(this, updatedArgs);\n `;\n}\n\n/**\n * Wrap function into IIFE (Immediately invoked function expression)\n *\n * @param {Source} source - object with scriptlet properties\n * @param {string} code - scriptlet source code with dependencies\n *\n * @returns {string} full scriptlet code\n *\n * @example\n * const source = {\n * args: [\"aaa\", \"bbb\"],\n * name: 'noeval',\n * };\n * const code = \"function noeval(source, args) { alert(source); } noeval.apply(this, args);\"\n * const result = wrapInIIFE(source, code);\n *\n * // result\n * `(function(source, args) {\n * function noeval(source) { alert(source); }\n * noeval.apply(this, args);\n * )({\"args\": [\"aaa\", \"bbb\"], \"name\":\"noeval\"}, [\"aaa\", \"bbb\"])`\n */\nexport function passSourceAndProps(source, code) {\n if (source.hit) {\n source.hit = source.hit.toString();\n }\n const sourceString = JSON.stringify(source);\n const argsString = source.args ? `[${source.args.map(JSON.stringify)}]` : undefined;\n const params = argsString ? `${sourceString}, ${argsString}` : sourceString;\n return `(function(source, args){\\n${code}\\n})(${params});`;\n}\n\n/**\n * Wrap code in no name function\n * @param {string} code which must be wrapped\n */\nexport function wrapInNonameFunc(code) {\n return `function(source, args){\\n${code}\\n}`;\n}\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","/**\n * Iterate over iterable argument and evaluate current state with transitions\n * @param {string} init first transition name\n * @param {Array|Collection|string} iterable\n * @param {Object} transitions transtion functions\n * @param {any} args arguments which should be passed to transition functions\n */\nfunction iterateWithTransitions(iterable, transitions, init, args) {\n let state = init || Object.keys(transitions)[0];\n for (let i = 0; i < iterable.length; i += 1) {\n state = transitions[state](iterable, i, args);\n }\n return state;\n}\n\n/**\n * AdGuard scriptlet rule mask\n */\nexport const ADG_SCRIPTLET_MASK = '#//scriptlet';\n\n/**\n * Helper to accumulate an array of strings char by char\n */\nconst wordSaver = () => {\n let str = '';\n const strs = [];\n const saveSymb = (s) => {\n str += s;\n return str;\n };\n const saveStr = () => {\n strs.push(str);\n str = '';\n };\n const getAll = () => [...strs];\n\n return { saveSymb, saveStr, getAll };\n};\n\nconst substringAfter = (str, separator) => {\n if (!str) {\n return str;\n }\n const index = str.indexOf(separator);\n return index < 0 ? '' : str.substring(index + separator.length);\n};\n\n/**\n * Parse and validate scriptlet rule\n * @param {*} ruleText\n * @returns {{name: string, args: Array}}\n */\nexport const parseRule = (ruleText) => {\n ruleText = substringAfter(ruleText, ADG_SCRIPTLET_MASK);\n /**\n * Transition names\n */\n const TRANSITION = {\n OPENED: 'opened',\n PARAM: 'param',\n CLOSED: 'closed',\n };\n\n /**\n * Transition function: the current index position in start, end or between params\n * @param {string} rule\n * @param {number} index\n * @param {Object} Object\n * @property {Object} Object.sep contains prop symb with current separator char\n */\n const opened = (rule, index, { sep }) => {\n const char = rule[index];\n let transition;\n switch (char) {\n case ' ':\n case '(':\n case ',': {\n transition = TRANSITION.OPENED;\n break;\n }\n case '\\'':\n case '\"': {\n sep.symb = char;\n transition = TRANSITION.PARAM;\n break;\n }\n case ')': {\n transition = index === rule.length - 1\n ? TRANSITION.CLOSED\n : TRANSITION.OPENED;\n break;\n }\n default: {\n throw new Error('The rule is not a scriptlet');\n }\n }\n\n return transition;\n };\n /**\n * Transition function: the current index position inside param\n * @param {string} rule\n * @param {number} index\n * @param {Object} Object\n * @property {Object} Object.sep contains prop `symb` with current separator char\n * @property {Object} Object.saver helper which allow to save strings by car by char\n */\n const param = (rule, index, { saver, sep }) => {\n const char = rule[index];\n switch (char) {\n case '\\'':\n case '\"': {\n const preIndex = index - 1;\n const before = rule[preIndex];\n if (char === sep.symb && before !== '\\\\') {\n sep.symb = null;\n saver.saveStr();\n return TRANSITION.OPENED;\n }\n }\n // eslint-disable-next-line no-fallthrough\n default: {\n saver.saveSymb(char);\n return TRANSITION.PARAM;\n }\n }\n };\n const transitions = {\n [TRANSITION.OPENED]: opened,\n [TRANSITION.PARAM]: param,\n [TRANSITION.CLOSED]: () => { },\n };\n const sep = { symb: null };\n const saver = wordSaver();\n const state = iterateWithTransitions(ruleText, transitions, TRANSITION.OPENED, { sep, saver });\n\n if (state !== 'closed') {\n throw new Error(`Invalid scriptlet rule ${ruleText}`);\n }\n\n const args = saver.getAll();\n return {\n name: args[0],\n args: args.slice(1),\n };\n};\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet abort-on-property-read\n *\n * @description\n * Aborts a script when it attempts to **read** the specified property.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#abort-on-property-readjs-\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/6b2a309054cc23432102b85d13f12559639ef495/lib/content/snippets.js#L864\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('abort-on-property-read', property[, stack])\n * ```\n *\n * - `property` - required, path to a property (joined with `.` if needed). The property must be attached to `window`\n * - `stack` - optional, string or regular expression that must match the current function call stack trace\n *\n * **Examples**\n * ```\n * ! Aborts script when it tries to access `window.alert`\n * example.org#%#//scriptlet('abort-on-property-read', 'alert')\n *\n * ! Aborts script when it tries to access `navigator.language`\n * example.org#%#//scriptlet('abort-on-property-read', 'navigator.language')\n *\n * ! Aborts script when it tries to access `window.adblock` and it's error stack trace contains `test.js`\n * example.org#%#//scriptlet('abort-on-property-read', 'adblock', 'test.js')\n * ```\n */\n/* eslint-enable max-len */\nexport function abortOnPropertyRead(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n\n const rid = randomId();\n const abort = () => {\n hit(source);\n throw new ReferenceError(rid);\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, {\n get: abort,\n set: () => {\n },\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\nabortOnPropertyRead.names = [\n 'abort-on-property-read',\n 'abort-on-property-read.js',\n 'ubo-abort-on-property-read.js',\n 'aopr.js',\n 'ubo-aopr.js',\n 'abp-abort-on-property-read',\n];\nabortOnPropertyRead.injections = [\n randomId,\n toRegExp,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n matchStackTrace,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet abort-on-property-write\n *\n * @description\n * Aborts a script when it attempts to **write** the specified property.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#abort-on-property-writejs-\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/6b2a309054cc23432102b85d13f12559639ef495/lib/content/snippets.js#L896\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('abort-on-property-write', property[, stack])\n * ```\n *\n * - `property` - required, path to a property (joined with `.` if needed). The property must be attached to `window`\n * - `stack` - optional, string or regular expression that must match the current function call stack trace\n *\n * **Examples**\n * ```\n * ! Aborts script when it tries to set `window.adblock` value\n * example.org#%#//scriptlet('abort-on-property-write', 'adblock')\n *\n * ! Aborts script when it tries to set `window.adblock` value and it's error stack trace contains `checking.js`\n * example.org#%#//scriptlet('abort-on-property-write', 'adblock', 'checking.js')\n * ```\n */\n/* eslint-enable max-len */\nexport function abortOnPropertyWrite(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n\n const rid = randomId();\n const abort = () => {\n hit(source);\n throw new ReferenceError(rid);\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, { set: abort });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid).bind();\n}\n\nabortOnPropertyWrite.names = [\n 'abort-on-property-write',\n 'abort-on-property-write.js',\n 'ubo-abort-on-property-write.js',\n 'aopw.js',\n 'ubo-aopw.js',\n 'abp-abort-on-property-write',\n];\n\nabortOnPropertyWrite.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n];\n","import {\n hit, noopFunc, toRegExp, startsWith,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-setTimeout\n *\n * @description\n * Prevents a `setTimeout` call if:\n * 1) the text of the callback is matching the specified search string/regexp which does not start with `!`;\n * otherwise mismatched calls should be defused;\n * 2) the timeout is matching the specified delay; otherwise mismatched calls should be defused.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#no-settimeout-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout'[, search[, delay]])\n * ```\n *\n * Call with no arguments will log calls to setTimeout while debugging (`log-setTimeout` superseding),\n * so production filter lists' rules definitely require at least one of the parameters:\n * - `search` - optional, string or regular expression.\n * If starts with `!`, scriptlet will not match the stringified callback but all other will be defused.\n * If do not start with `!`, the stringified callback will be matched.\n * If not set, prevents all `setTimeout` calls due to specified `delay`.\n * - `delay` - optional, must be an integer.\n * If starts with `!`, scriptlet will not match the delay but all other will be defused.\n * If do not start with `!`, the delay passed to the `setTimeout` call will be matched.\n *\n * **Examples**\n * 1. Prevents `setTimeout` calls if the callback matches `/\\.test/` regardless of the delay.\n * ```bash\n * example.org#%#//scriptlet('prevent-setTimeout', '/\\.test/')\n * ```\n *\n * For instance, the following call will be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"value\";\n * }, 100);\n * ```\n *\n * 2. Prevents `setTimeout` calls if the callback does not contain `value`.\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout', '!value')\n * ```\n *\n * For instance, only the first of the following calls will be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"test -- prevented\";\n * }, 300);\n * setTimeout(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setTimeout(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n *\n * 3. Prevents `setTimeout` calls if the callback contains `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout', 'value', '!300')\n * ```\n *\n * For instance, only the first of the following calls will not be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"value 1 -- executed\";\n * }, 300);\n * setTimeout(function () {\n * window.test = \"value 2 -- prevented\";\n * }, 400);\n * setTimeout(function () {\n * window.test = \"value 3 -- prevented\";\n * }, 500);\n * ```\n *\n * 4. Prevents `setTimeout` calls if the callback does not contain `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout', '!value', '!300')\n * ```\n *\n * For instance, only the second of the following calls will be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"test -- executed\";\n * }, 300);\n * setTimeout(function () {\n * window.test = \"test -- prevented\";\n * }, 400);\n * setTimeout(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setTimeout(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n */\n/* eslint-enable max-len */\nexport function preventSetTimeout(source, match, delay) {\n const nativeTimeout = window.setTimeout;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const log = console.log.bind(console); // eslint-disable-line no-console\n\n // logs setTimeouts to console if no arguments have been specified\n const shouldLog = ((typeof match === 'undefined') && (typeof delay === 'undefined'));\n\n const INVERT_MARKER = '!';\n\n const isNotMatch = startsWith(match, INVERT_MARKER);\n if (isNotMatch) {\n match = match.slice(1);\n }\n const isNotDelay = startsWith(delay, INVERT_MARKER);\n if (isNotDelay) {\n delay = delay.slice(1);\n }\n\n delay = parseInt(delay, 10);\n delay = nativeIsNaN(delay) ? null : delay;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n const timeoutWrapper = (callback, timeout, ...args) => {\n let shouldPrevent = false;\n if (shouldLog) {\n hit(source);\n log(`setTimeout(\"${callback.toString()}\", ${timeout})`);\n } else if (!delay) {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch;\n } else if (match === '/.?/') {\n shouldPrevent = (timeout === delay) !== isNotDelay;\n } else {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch\n && (timeout === delay) !== isNotDelay;\n }\n\n if (shouldPrevent) {\n hit(source);\n return nativeTimeout(noopFunc, timeout);\n }\n\n return nativeTimeout.apply(window, [callback, timeout, ...args]);\n };\n window.setTimeout = timeoutWrapper;\n}\n\npreventSetTimeout.names = [\n 'prevent-setTimeout',\n 'no-setTimeout-if.js', // new implementation of setTimeout-defuser.js\n 'ubo-no-setTimeout-if.js',\n 'setTimeout-defuser.js', // old name should be supported as well\n 'ubo-setTimeout-defuser.js',\n 'nostif.js', // new short name of no-setTimeout-if\n 'ubo-nostif.js',\n 'std.js', // old short scriptlet name\n 'ubo-std.js',\n];\n\npreventSetTimeout.injections = [toRegExp, startsWith, hit, noopFunc];\n","import {\n hit, noopFunc, toRegExp, startsWith,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-setInterval\n *\n * @description\n * Prevents a `setInterval` call if:\n * 1) the text of the callback is matching the specified `search` string/regexp which does not start with `!`;\n * otherwise mismatched calls should be defused;\n * 2) the interval is matching the specified `delay`; otherwise mismatched calls should be defused.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#no-setinterval-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-setInterval'[, search[, delay]])\n * ```\n *\n * Call with no arguments will log calls to setInterval while debugging (`log-setInterval` superseding),\n * so production filter lists' rules definitely require at least one of the parameters:\n * - `search` - optional, string or regular expression.\n * If starts with `!`, scriptlet will not match the stringified callback but all other will be defused.\n * If do not start with `!`, the stringified callback will be matched.\n * If not set, prevents all `setInterval` calls due to specified `delay`.\n * - `delay` - optional, must be an integer.\n * If starts with `!`, scriptlet will not match the delay but all other will be defused.\n * If do not start with `!`, the delay passed to the `setInterval` call will be matched.\n *\n * **Examples**\n * 1. Prevents `setInterval` calls if the callback matches `/\\.test/` regardless of the delay.\n * ```bash\n * example.org#%#//scriptlet('prevent-setInterval', '/\\.test/')\n * ```\n *\n * For instance, the following call will be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"value\";\n * }, 100);\n * ```\n *\n * 2. Prevents `setInterval` calls if the callback does not contain `value`.\n * ```\n * example.org#%#//scriptlet('prevent-setInterval', '!value')\n * ```\n *\n * For instance, only the first of the following calls will be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"test -- prevented\";\n * }, 300);\n * setInterval(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setInterval(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n *\n * 3. Prevents `setInterval` calls if the callback contains `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setInterval', 'value', '!300')\n * ```\n *\n * For instance, only the first of the following calls will not be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"value 1 -- executed\";\n * }, 300);\n * setInterval(function () {\n * window.test = \"value 2 -- prevented\";\n * }, 400);\n * setInterval(function () {\n * window.test = \"value 3 -- prevented\";\n * }, 500);\n * ```\n *\n * 4. Prevents `setInterval` calls if the callback does not contain `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setInterval', '!value', '!300')\n * ```\n *\n * For instance, only the second of the following calls will be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"test -- executed\";\n * }, 300);\n * setInterval(function () {\n * window.test = \"test -- prevented\";\n * }, 400);\n * setInterval(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setInterval(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n */\n/* eslint-enable max-len */\nexport function preventSetInterval(source, match, delay) {\n const nativeInterval = window.setInterval;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const log = console.log.bind(console); // eslint-disable-line no-console\n\n // logs setIntervals to console if no arguments have been specified\n const shouldLog = ((typeof match === 'undefined') && (typeof delay === 'undefined'));\n\n const INVERT_MARKER = '!';\n\n const isNotMatch = startsWith(match, INVERT_MARKER);\n if (isNotMatch) {\n match = match.slice(1);\n }\n const isNotDelay = startsWith(delay, INVERT_MARKER);\n if (isNotDelay) {\n delay = delay.slice(1);\n }\n\n delay = parseInt(delay, 10);\n delay = nativeIsNaN(delay) ? null : delay;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n const intervalWrapper = (callback, interval, ...args) => {\n let shouldPrevent = false;\n if (shouldLog) {\n hit(source);\n log(`setInterval(\"${callback.toString()}\", ${interval})`);\n } else if (!delay) {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch;\n } else if (match === '/.?/') {\n shouldPrevent = (interval === delay) !== isNotDelay;\n } else {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch\n && (interval === delay) !== isNotDelay;\n }\n\n if (shouldPrevent) {\n hit(source);\n return nativeInterval(noopFunc, interval);\n }\n\n return nativeInterval.apply(window, [callback, interval, ...args]);\n };\n window.setInterval = intervalWrapper;\n}\n\npreventSetInterval.names = [\n 'prevent-setInterval',\n 'no-setInterval-if.js', // new implementation of setInterval-defuser.js\n 'ubo-no-setInterval-if.js',\n 'setInterval-defuser.js', // old name should be supported as well\n 'ubo-setInterval-defuser.js',\n 'nosiif.js', // new short name of no-setInterval-if\n 'ubo-nosiif.js',\n 'sid.js', // old short scriptlet name\n 'ubo-sid.js',\n];\n\npreventSetInterval.injections = [toRegExp, startsWith, hit, noopFunc];\n","import {\n toRegExp,\n substringBefore,\n substringAfter,\n startsWith,\n endsWith,\n hit,\n noopFunc,\n trueFunc,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-window-open\n *\n * @description\n * Prevents `window.open` calls when URL either matches or not matches the specified string/regexp. Using it without parameters prevents all `window.open` calls.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#windowopen-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-window-open'[, match[, search[, replacement]]])\n * ```\n *\n * - `match` - optional, defaults to \"matching\", any positive number or nothing for \"matching\", 0 or empty string for \"not matching\"\n * - `search` - optional, string or regexp for matching the URL passed to `window.open` call; defaults to search all `window.open` call\n * - `replacement` - optional, string to return prop value or property instead of window.open; defaults to return noopFunc\n *\n * **Example**\n * 1. Prevent all `window.open` calls:\n * ```\n * example.org#%#//scriptlet('prevent-window-open')\n * ```\n *\n * 2. Prevent `window.open` for all URLs containing `example`:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '1', 'example')\n * ```\n *\n * 3. Prevent `window.open` for all URLs matching RegExp `/example\\./`:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '1', '/example\\./')\n * ```\n *\n * 4. Prevent `window.open` for all URLs **NOT** containing `example`:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '0', 'example')\n * ```\n * 5. Prevent all `window.open` calls and return 'trueFunc' instead of it if website checks it:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', , , 'trueFunc')\n * ```\n * 6. Prevent all `window.open` and returns callback\n * which returns object with property 'propName'=noopFunc\n * as a property of window.open if website checks it:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '1', , '{propName=noopFunc}')\n * ```\n */\n/* eslint-enable max-len */\nexport function preventWindowOpen(source, match = 1, search, replacement) {\n // Default value of 'match' is needed to prevent all `window.open` calls\n // if the scriptlet is used without parameters\n const nativeOpen = window.open;\n\n // unary plus converts 'match' to a number\n // e.g.: +'1' -> 1; +false -> 0\n match = +match > 0;\n\n search = search\n ? toRegExp(search)\n : toRegExp('/.?/');\n\n // eslint-disable-next-line consistent-return\n const openWrapper = (str, ...args) => {\n if (match !== search.test(str)) {\n return nativeOpen.apply(window, [str, ...args]);\n }\n\n hit(source);\n\n let result;\n\n // defaults to return noopFunc instead of window.open\n if (!replacement) {\n result = noopFunc;\n } else if (replacement === 'trueFunc') {\n result = trueFunc;\n } else if (replacement.indexOf('=') > -1) {\n // We should return noopFunc instead of window.open\n // but with some property if website checks it (examples 5, 6)\n // https://github.com/AdguardTeam/Scriptlets/issues/71\n const isProp = startsWith(replacement, '{') && endsWith(replacement, '}');\n if (isProp) {\n const propertyPart = replacement.slice(1, -1);\n const propertyName = substringBefore(propertyPart, '=');\n const propertyValue = substringAfter(propertyPart, '=');\n if (propertyValue === 'noopFunc') {\n result = () => {\n const resObj = { };\n resObj[propertyName] = noopFunc;\n return resObj;\n };\n }\n }\n }\n\n return result;\n };\n\n window.open = openWrapper;\n}\n\npreventWindowOpen.names = [\n 'prevent-window-open',\n 'window.open-defuser.js',\n 'ubo-window.open-defuser.js',\n];\n\npreventWindowOpen.injections = [\n toRegExp,\n startsWith,\n endsWith,\n substringBefore,\n substringAfter,\n hit,\n noopFunc,\n trueFunc,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet abort-current-inline-script\n *\n * @description\n * Aborts an inline script when it attempts to **read** the specified property\n * AND when the contents of the `\n * ```\n *\n * 3. Aborts inline scripts which are trying to access `window.alert` and match this regexp: `/Hello.+world/`.\n * ```\n * example.org#%#//scriptlet('abort-current-inline-script', 'alert', '/Hello.+world/')\n * ```\n *\n * For instance, the following scripts will be aborted:\n * ```html\n * \n * ```\n * ```html\n * \n * ```\n *\n * This script will not be aborted:\n * ```html\n * \n * ```\n */\n/* eslint-enable max-len */\nexport function abortCurrentInlineScript(source, property, search) {\n const searchRegexp = search ? toRegExp(search) : toRegExp('/.?/');\n const rid = randomId();\n\n const getCurrentScript = () => {\n if (!document.currentScript) { // eslint-disable-line compat/compat\n const scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n }\n return document.currentScript; // eslint-disable-line compat/compat\n };\n\n const ourScript = getCurrentScript();\n\n const abort = () => {\n const scriptEl = getCurrentScript();\n if (!scriptEl) {\n return;\n }\n let content = scriptEl.textContent;\n\n // We are using Node.prototype.textContent property descriptor\n // to get the real script content\n // even when document.currentScript.textContent is replaced.\n // https://github.com/AdguardTeam/Scriptlets/issues/57#issuecomment-593638991\n try {\n const textContentGetter = Object.getOwnPropertyDescriptor(Node.prototype, 'textContent').get;\n content = textContentGetter.call(scriptEl);\n } catch (e) { } // eslint-disable-line no-empty\n\n if (scriptEl instanceof HTMLScriptElement\n && content.length > 0\n && scriptEl !== ourScript\n && searchRegexp.test(content)) {\n hit(source);\n throw new ReferenceError(rid);\n }\n };\n\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n\n // The scriptlet might be executed before the chain property has been created\n // (for instance, document.body before the HTML body was loaded).\n // In this case we're checking whether the base element exists or not\n // and if not, we simply exit without overriding anything.\n // e.g. https://github.com/AdguardTeam/Scriptlets/issues/57#issuecomment-575841092\n if (base instanceof Object === false && base === null) {\n const props = property.split('.');\n const propIndex = props.indexOf(prop);\n const baseName = props[propIndex - 1];\n console.log(`The scriptlet had been executed before the ${baseName} was loaded.`); // eslint-disable-line no-console\n return;\n }\n\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n let currentValue = base[prop];\n setPropertyAccess(base, prop, {\n set: (value) => {\n abort();\n currentValue = value;\n },\n get: () => {\n abort();\n return currentValue;\n },\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\nabortCurrentInlineScript.names = [\n 'abort-current-inline-script',\n 'abort-current-inline-script.js',\n 'ubo-abort-current-inline-script.js',\n 'acis.js',\n 'ubo-acis.js',\n 'abp-abort-current-inline-script',\n];\n\nabortCurrentInlineScript.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n];\n","import {\n hit,\n noopFunc,\n trueFunc,\n falseFunc,\n getPropertyInChain,\n setPropertyAccess,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet set-constant\n *\n * @description\n * Creates a constant property and assigns it one of the values from the predefined list.\n *\n * > Actually, it's not a constant. Please note, that it can be rewritten with a value of a different type.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#set-constantjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('set-constant', property, value)\n * ```\n *\n * - `property` - required, path to a property (joined with `.` if needed). The property must be attached to `window`.\n * - `value` - required. Possible values:\n * - positive decimal integer `<= 32767`\n * - one of the predefined constants:\n * - `undefined`\n * - `false`\n * - `true`\n * - `null`\n * - `noopFunc` - function with empty body\n * - `trueFunc` - function returning true\n * - `falseFunc` - function returning false\n * - `''` - empty string\n * - `-1` - number value `-1`\n *\n * **Examples**\n * ```\n * ! window.firstConst === false // this comparision will return true\n * example.org#%#//scriptlet('set-constant', 'firstConst', 'false')\n *\n * ! window.secondConst() === true // call to the secondConst will return true\n * example.org#%#//scriptlet('set-constant', 'secondConst', 'trueFunc')\n * ```\n */\n/* eslint-enable max-len */\nexport function setConstant(source, property, value) {\n if (!property) {\n return;\n }\n\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n\n let constantValue;\n if (value === 'undefined') {\n constantValue = undefined;\n } else if (value === 'false') {\n constantValue = false;\n } else if (value === 'true') {\n constantValue = true;\n } else if (value === 'null') {\n constantValue = null;\n } else if (value === 'noopFunc') {\n constantValue = noopFunc;\n } else if (value === 'trueFunc') {\n constantValue = trueFunc;\n } else if (value === 'falseFunc') {\n constantValue = falseFunc;\n } else if (/^\\d+$/.test(value)) {\n constantValue = parseFloat(value);\n if (nativeIsNaN(constantValue)) {\n return;\n }\n if (Math.abs(constantValue) > 0x7FFF) {\n return;\n }\n } else if (value === '-1') {\n constantValue = -1;\n } else if (value === '') {\n constantValue = '';\n } else {\n return;\n }\n\n let canceled = false;\n const mustCancel = (value) => {\n if (canceled) {\n return canceled;\n }\n canceled = value !== undefined\n && constantValue !== undefined\n && typeof value !== typeof constantValue;\n return canceled;\n };\n\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n if (mustCancel(base[prop])) { return; }\n\n hit(source);\n setPropertyAccess(base, prop, {\n get: () => constantValue,\n set: (a) => {\n if (mustCancel(a)) {\n constantValue = a;\n }\n },\n });\n };\n\n setChainPropAccess(window, property);\n}\n\nsetConstant.names = [\n 'set-constant',\n 'set-constant.js',\n 'ubo-set-constant.js',\n 'set.js',\n 'ubo-set.js',\n];\nsetConstant.injections = [\n getPropertyInChain,\n setPropertyAccess,\n hit,\n noopFunc,\n trueFunc,\n falseFunc,\n];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet remove-cookie\n *\n * @description\n * Removes current page cookies by passed string matching with name. For current domain and subdomains. Runs on load and before unload.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#cookie-removerjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('remove-cookie'[, match])\n * ```\n *\n * - `match` - optional, string or regex matching the cookie name. If not specified all accessible cookies will be removed.\n *\n * **Examples**\n * 1. Removes all cookies:\n * ```\n * example.org#%#//scriptlet('remove-cookie')\n * ```\n *\n * 2. Removes cookies which name contains `example` string.\n * ```\n * example.org#%#//scriptlet('remove-cookie', 'example')\n * ```\n *\n * For instance this cookie will be removed\n * ```javascript\n * document.cookie = '__example=randomValue';\n * ```\n */\n/* eslint-enable max-len */\nexport function removeCookie(source, match) {\n const regex = match ? toRegExp(match) : toRegExp('/.?/');\n\n const removeCookieFromHost = (cookieName, hostName) => {\n const cookieSpec = `${cookieName}=`;\n const domain1 = `; domain=${hostName}`;\n const domain2 = `; domain=.${hostName}`;\n const path = '; path=/';\n const expiration = '; expires=Thu, 01 Jan 1970 00:00:00 GMT';\n document.cookie = cookieSpec + expiration;\n document.cookie = cookieSpec + domain1 + expiration;\n document.cookie = cookieSpec + domain2 + expiration;\n document.cookie = cookieSpec + path + expiration;\n document.cookie = cookieSpec + domain1 + path + expiration;\n document.cookie = cookieSpec + domain2 + path + expiration;\n hit(source);\n };\n\n const rmCookie = () => {\n document.cookie.split(';').forEach((cookieStr) => {\n const pos = cookieStr.indexOf('=');\n if (pos === -1) {\n return;\n }\n\n const cookieName = cookieStr.slice(0, pos).trim();\n if (!regex.test(cookieName)) {\n return;\n }\n\n const hostParts = document.location.hostname.split('.');\n for (let i = 0; i <= hostParts.length - 1; i += 1) {\n const hostName = hostParts.slice(i).join('.');\n if (hostName) {\n removeCookieFromHost(cookieName, hostName);\n }\n }\n });\n };\n rmCookie();\n window.addEventListener('beforeunload', rmCookie);\n}\n\nremoveCookie.names = [\n 'remove-cookie',\n 'cookie-remover.js',\n 'ubo-cookie-remover.js',\n];\n\nremoveCookie.injections = [toRegExp, hit];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-addEventListener\n *\n * @description\n * Prevents adding event listeners for the specified events and callbacks.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#addeventlistener-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-addEventListener'[, eventSearch[, functionSearch]])\n * ```\n *\n * - `eventSearch` - optional, string or regex matching the event name. If not specified, the scriptlets prevents all event listeners\n * - `functionSearch` - optional, string or regex matching the event listener function body. If not set, the scriptlet prevents all event listeners with event name matching `eventSearch`\n *\n * **Examples**\n * 1. Prevent all `click` listeners:\n * ```\n * example.org#%#//scriptlet('prevent-addEventListener', 'click')\n * ```\n\n2. Prevent 'click' listeners with the callback body containing `searchString`.\n * ```\n * example.org#%#//scriptlet('prevent-addEventListener', 'click', 'searchString')\n * ```\n *\n * For instance, this listener will not be called:\n * ```javascript\n * el.addEventListener('click', () => {\n * window.test = 'searchString';\n * });\n * ```\n */\n/* eslint-enable max-len */\nexport function preventAddEventListener(source, eventSearch, funcSearch) {\n const eventSearchRegexp = eventSearch ? toRegExp(eventSearch) : toRegExp('/.?/');\n const funcSearchRegexp = funcSearch ? toRegExp(funcSearch) : toRegExp('/.?/');\n\n const nativeAddEventListener = window.EventTarget.prototype.addEventListener;\n function addEventListenerWrapper(eventName, callback, ...args) {\n // The scriptlet might cause a website broke\n // if the website uses test addEventListener with callback = null\n // https://github.com/AdguardTeam/Scriptlets/issues/76\n let funcToCheck = callback;\n if (callback && typeof callback === 'function') {\n funcToCheck = callback.toString();\n }\n\n if (eventSearchRegexp.test(eventName.toString()) && funcSearchRegexp.test(funcToCheck)) {\n hit(source);\n return undefined;\n }\n return nativeAddEventListener.apply(this, [eventName, callback, ...args]);\n }\n\n window.EventTarget.prototype.addEventListener = addEventListenerWrapper;\n}\n\npreventAddEventListener.names = [\n 'prevent-addEventListener',\n 'addEventListener-defuser.js',\n 'ubo-addEventListener-defuser.js',\n 'aeld.js',\n 'ubo-aeld.js',\n];\n\npreventAddEventListener.injections = [toRegExp, hit];\n","/* eslint-disable consistent-return, no-eval */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet prevent-bab\n *\n * @description\n * Prevents BlockAdblock script from detecting an ad blocker.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#bab-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-bab')\n * ```\n */\nexport function preventBab(source) {\n const nativeSetTimeout = window.setTimeout;\n const babRegex = /\\.bab_elementid.$/;\n\n window.setTimeout = (callback, ...args) => {\n if (typeof callback !== 'string' || !babRegex.test(callback)) {\n return nativeSetTimeout.call(this, callback, ...args);\n }\n hit(source);\n };\n\n const signatures = [\n ['blockadblock'],\n ['babasbm'],\n [/getItem\\('babn'\\)/],\n ['getElementById', 'String.fromCharCode', 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 'charAt', 'DOMContentLoaded', 'AdBlock', 'addEventListener', 'doScroll', 'fromCharCode', '<<2|r>>4', 'sessionStorage', 'clientWidth', 'localStorage', 'Math', 'random'],\n ];\n const check = (str) => {\n for (let i = 0; i < signatures.length; i += 1) {\n const tokens = signatures[i];\n let match = 0;\n for (let j = 0; j < tokens.length; j += 1) {\n const token = tokens[j];\n const found = token instanceof RegExp ? token.test(str) : str.indexOf(token) > -1;\n if (found) {\n match += 1;\n }\n }\n if (match / tokens.length >= 0.8) {\n return true;\n }\n }\n return false;\n };\n\n const nativeEval = window.eval;\n window.eval = (str) => {\n if (!check(str)) {\n return nativeEval(str);\n }\n hit(source);\n const bodyEl = document.body;\n if (bodyEl) {\n bodyEl.style.removeProperty('visibility');\n }\n const el = document.getElementById('babasbmsgx');\n if (el) {\n el.parentNode.removeChild(el);\n }\n };\n}\n\npreventBab.names = [\n 'prevent-bab',\n 'nobab.js',\n 'ubo-nobab.js',\n 'bab-defuser.js',\n 'ubo-bab-defuser.js',\n];\n\npreventBab.injections = [hit];\n","/* eslint-disable no-unused-vars, no-extra-bind, func-names */\nimport { hit, noopFunc } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet nowebrtc\n *\n * @description\n * Disables WebRTC by overriding `RTCPeerConnection`. The overriden function will log every attempt to create a new connection.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#nowebrtcjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('nowebrtc')\n * ```\n */\n/* eslint-enable max-len */\nexport function nowebrtc(source) {\n let propertyName = '';\n if (window.RTCPeerConnection) {\n propertyName = 'RTCPeerConnection';\n } else if (window.webkitRTCPeerConnection) {\n propertyName = 'webkitRTCPeerConnection';\n }\n\n if (propertyName === '') {\n return;\n }\n\n const rtcReplacement = (config) => {\n hit(source, `Document tried to create an RTCPeerConnection: ${config}`);\n };\n rtcReplacement.prototype = {\n close: noopFunc,\n createDataChannel: noopFunc,\n createOffer: noopFunc,\n setRemoteDescription: noopFunc,\n };\n const rtc = window[propertyName];\n window[propertyName] = rtcReplacement;\n if (rtc.prototype) {\n rtc.prototype.createDataChannel = function (a, b) {\n return {\n close: noopFunc,\n send: noopFunc,\n };\n }.bind(null);\n }\n}\n\nnowebrtc.names = [\n 'nowebrtc',\n 'nowebrtc.js',\n 'ubo-nowebrtc.js',\n];\n\nnowebrtc.injections = [hit, noopFunc];\n","/* eslint-disable no-console */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet log-addEventListener\n *\n * @description\n * Logs all addEventListener calls to the console.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#addeventlistener-loggerjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('log-addEventListener')\n * ```\n */\nexport function logAddEventListener(source) {\n const log = console.log.bind(console);\n const nativeAddEventListener = window.EventTarget.prototype.addEventListener;\n function addEventListenerWrapper(eventName, callback, ...args) {\n hit(source);\n // The scriptlet might cause a website broke\n // if the website uses test addEventListener with callback = null\n // https://github.com/AdguardTeam/Scriptlets/issues/76\n let callbackToLog = callback;\n if (callback && typeof callback === 'function') {\n callbackToLog = callback.toString();\n }\n log(`addEventListener(\"${eventName}\", ${callbackToLog})`);\n return nativeAddEventListener.apply(this, [eventName, callback, ...args]);\n }\n window.EventTarget.prototype.addEventListener = addEventListenerWrapper;\n}\n\nlogAddEventListener.names = [\n 'log-addEventListener',\n 'addEventListener-logger.js',\n 'ubo-addEventListener-logger.js',\n 'aell.js',\n 'ubo-aell.js',\n];\n\nlogAddEventListener.injections = [hit];\n","/* eslint-disable no-console, no-eval */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet log-eval\n *\n * @description\n * Logs all `eval()` or `new Function()` calls to the console.\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('log-eval')\n * ```\n */\nexport function logEval(source) {\n const log = console.log.bind(console);\n // wrap eval function\n const nativeEval = window.eval;\n function evalWrapper(str) {\n hit(source);\n log(`eval(\"${str}\")`);\n return nativeEval(str);\n }\n window.eval = evalWrapper;\n\n // wrap new Function\n const nativeFunction = window.Function;\n\n function FunctionWrapper(...args) {\n hit(source);\n log(`new Function(${args.join(', ')})`);\n return nativeFunction.apply(this, [...args]);\n }\n\n FunctionWrapper.prototype = Object.create(nativeFunction.prototype);\n FunctionWrapper.prototype.constructor = FunctionWrapper;\n\n window.Function = FunctionWrapper;\n}\n\nlogEval.names = [\n 'log-eval',\n];\n\nlogEval.injections = [hit];\n","/**\n * @scriptlet log\n *\n * @description\n * A simple scriptlet which only purpose is to print arguments to console.\n * This scriptlet can be helpful for debugging and troubleshooting other scriptlets.\n *\n * **Example**\n * ```\n * example.org#%#//scriptlet('log', 'arg1', 'arg2')\n * ```\n */\nexport function log(...args) {\n console.log(args); // eslint-disable-line no-console\n}\nlog.names = ['log'];\n","/* eslint-disable no-eval, no-extra-bind */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet noeval\n *\n * @description\n * Prevents page to use eval.\n * Notifies about attempts in the console\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#noevaljs-\n *\n * It also can be used as `$redirect` rules sometimes.\n * See [redirect description](../wiki/about-redirects.md#noeval).\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('noeval')\n * ```\n */\nexport function noeval(source) {\n window.eval = function evalWrapper(s) {\n hit(source, `AdGuard has prevented eval:\\n${s}`);\n }.bind();\n}\n\nnoeval.names = [\n 'noeval',\n 'noeval.js',\n 'silent-noeval.js',\n 'ubo-noeval.js',\n 'ubo-silent-noeval.js',\n];\n\nnoeval.injections = [hit];\n","/* eslint-disable no-eval, no-extra-bind, func-names */\n\nimport { toRegExp, hit } from '../helpers';\n\n/**\n * @scriptlet prevent-eval-if\n *\n * @description\n * Prevents page to use eval matching payload.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#noeval-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-eval-if'[, search])\n * ```\n *\n * - `search` - optional, string or regexp for matching stringified eval payload.\n * If 'search is not specified — all stringified eval payload will be matched\n *\n * **Examples**\n * ```\n * ! Prevents eval if it matches 'test'\n * example.org#%#//scriptlet('prevent-eval-if', 'test')\n * ```\n *\n * @param {string|RegExp} [search] string or regexp matching stringified eval payload\n */\nexport function preventEvalIf(source, search) {\n search = search ? toRegExp(search) : toRegExp('/.?/');\n\n const nativeEval = window.eval;\n window.eval = function (payload) {\n if (!search.test(payload.toString())) {\n return nativeEval.call(window, payload);\n }\n hit(source, payload);\n return undefined;\n }.bind(window);\n}\n\npreventEvalIf.names = [\n 'prevent-eval-if',\n 'noeval-if.js',\n 'ubo-noeval-if.js',\n];\n\npreventEvalIf.injections = [toRegExp, hit];\n","/* eslint-disable no-console, func-names, no-multi-assign */\nimport { hit, noopFunc, noopThis } from '../helpers';\n\n/**\n * @scriptlet prevent-fab-3.2.0\n *\n * @description\n * Prevents execution of the FAB script v3.2.0.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#fuckadblockjs-320-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-fab-3.2.0')\n * ```\n */\nexport function preventFab(source) {\n hit(source);\n\n // redefines Fab function for adblock detection\n const Fab = function () {};\n Fab.prototype.check = noopFunc;\n Fab.prototype.clearEvent = noopFunc;\n Fab.prototype.emitEvent = noopFunc;\n Fab.prototype.on = function (a, b) {\n if (!a) {\n b();\n }\n return this;\n };\n Fab.prototype.onDetected = noopThis;\n Fab.prototype.onNotDetected = function (a) {\n a();\n return this;\n };\n Fab.prototype.setOption = noopFunc;\n\n const fab = new Fab();\n const getSetFab = {\n get() { return Fab; },\n set() {},\n };\n const getsetfab = {\n get() { return fab; },\n set() {},\n };\n\n // redefined Fab data properties which if 'FuckAdBlock' variable exists\n if (Object.prototype.hasOwnProperty.call(window, 'FuckAdBlock')) {\n window.FuckAdBlock = Fab;\n } else {\n // or redefined Fab accessor properties\n Object.defineProperty(window, 'FuckAdBlock', getSetFab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'BlockAdBlock')) {\n window.BlockAdBlock = Fab;\n } else {\n Object.defineProperty(window, 'BlockAdBlock', getSetFab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'SniffAdBlock')) {\n window.SniffAdBlock = Fab;\n } else {\n Object.defineProperty(window, 'SniffAdBlock', getSetFab);\n }\n\n if (Object.prototype.hasOwnProperty.call(window, 'fuckAdBlock')) {\n window.fuckAdBlock = fab;\n } else {\n Object.defineProperty(window, 'fuckAdBlock', getsetfab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'blockAdBlock')) {\n window.blockAdBlock = fab;\n } else {\n Object.defineProperty(window, 'blockAdBlock', getsetfab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'sniffAdBlock')) {\n window.sniffAdBlock = fab;\n } else {\n Object.defineProperty(window, 'sniffAdBlock', getsetfab);\n }\n}\n\npreventFab.names = [\n 'prevent-fab-3.2.0',\n 'nofab.js',\n 'ubo-nofab.js',\n 'fuckadblock.js-3.2.0',\n 'ubo-fuckadblock.js-3.2.0',\n];\n\npreventFab.injections = [hit, noopFunc, noopThis];\n","/* eslint-disable no-console, func-names, no-multi-assign */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet set-popads-dummy\n *\n * @description\n * Sets static properties PopAds and popns.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#popads-dummyjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('set-popads-dummy')\n * ```\n */\nexport function setPopadsDummy(source) {\n delete window.PopAds;\n delete window.popns;\n Object.defineProperties(window, {\n PopAds: {\n get: () => {\n hit(source);\n return {};\n },\n },\n popns: {\n get: () => {\n hit(source);\n return {};\n },\n },\n });\n}\n\nsetPopadsDummy.names = [\n 'set-popads-dummy',\n 'popads-dummy.js',\n 'ubo-popads-dummy.js',\n];\n\nsetPopadsDummy.injections = [hit];\n","import {\n hit, createOnErrorHandler, randomId,\n} from '../helpers';\n\n/**\n * @scriptlet prevent-popads-net\n *\n * @description\n * Aborts on property write (PopAds, popns), throws reference error with random id.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#popadsnetjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-popads-net')\n * ```\n */\nexport function preventPopadsNet(source) {\n const rid = randomId();\n\n const throwError = () => {\n throw new ReferenceError(rid);\n };\n\n delete window.PopAds;\n delete window.popns;\n Object.defineProperties(window, {\n PopAds: { set: throwError },\n popns: { set: throwError },\n });\n\n window.onerror = createOnErrorHandler(rid).bind();\n hit(source);\n}\n\npreventPopadsNet.names = [\n 'prevent-popads-net',\n 'popads.net.js',\n 'ubo-popads.net.js',\n];\n\npreventPopadsNet.injections = [createOnErrorHandler, randomId, hit];\n","/* eslint-disable func-names */\nimport { hit, setPropertyAccess } from '../helpers';\n\n/**\n * @scriptlet prevent-adfly\n *\n * @description\n * Prevents anti-adblock scripts on adfly short links.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#adfly-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-adfly')\n * ```\n */\nexport function preventAdfly(source) {\n const isDigit = (data) => /^\\d$/.test(data);\n const handler = function (encodedURL) {\n let evenChars = '';\n let oddChars = '';\n for (let i = 0; i < encodedURL.length; i += 1) {\n if (i % 2 === 0) {\n evenChars += encodedURL.charAt(i);\n } else {\n oddChars = encodedURL.charAt(i) + oddChars;\n }\n }\n\n let data = (evenChars + oddChars).split('');\n\n for (let i = 0; i < data.length; i += 1) {\n if (isDigit(data[i])) {\n for (let ii = i + 1; ii < data.length; ii += 1) {\n if (isDigit(data[ii])) {\n // eslint-disable-next-line no-bitwise\n const temp = parseInt(data[i], 10) ^ parseInt(data[ii], 10);\n if (temp < 10) {\n data[i] = temp.toString();\n }\n i = ii;\n break;\n }\n }\n }\n }\n data = data.join('');\n const decodedURL = window.atob(data).slice(16, -16);\n /* eslint-disable compat/compat */\n if (window.stop) {\n window.stop();\n }\n /* eslint-enable compat/compat */\n window.onbeforeunload = null;\n window.location.href = decodedURL;\n };\n\n let val;\n // Do not apply handler more than one time\n let applyHandler = true;\n\n const result = setPropertyAccess(window, 'ysmm', {\n configurable: false,\n set: (value) => {\n if (applyHandler) {\n applyHandler = false;\n try {\n if (typeof value === 'string') {\n handler(value);\n }\n } catch (err) { } // eslint-disable-line no-empty\n }\n val = value;\n },\n get: () => val,\n });\n\n if (result) {\n hit(source);\n } else {\n window.console.error('Failed to set up prevent-adfly scriptlet');\n }\n}\n\npreventAdfly.names = [\n 'prevent-adfly',\n 'adfly-defuser.js',\n 'ubo-adfly-defuser.js',\n];\n\npreventAdfly.injections = [setPropertyAccess, hit];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n noopFunc,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet debug-on-property-read\n *\n * @description\n * This scriptlet is basically the same as [abort-on-property-read](#abort-on-property-read), but instead of aborting it starts the debugger.\n *\n * **It is not supposed to be used in production filter lists!**\n *\n * **Syntax**\n * ```\n * ! Aborts script when it tries to access `window.alert`\n * example.org#%#//scriptlet('debug-on-property-read', 'alert')\n * ```\n */\n/* eslint-enable max-len */\nexport function debugOnPropertyRead(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n const rid = randomId();\n const abort = () => {\n hit(source);\n debugger; // eslint-disable-line no-debugger\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, {\n get: abort,\n set: noopFunc,\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\ndebugOnPropertyRead.names = [\n 'debug-on-property-read',\n];\ndebugOnPropertyRead.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n noopFunc,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet debug-on-property-write\n *\n * @description\n * This scriptlet is basically the same as [abort-on-property-write](#abort-on-property-write), but instead of aborting it starts the debugger.\n *\n * **It is not supposed to be used in production filter lists!**\n *\n * **Syntax**\n * ```\n * ! Aborts script when it tries to write in property `window.test`\n * example.org#%#//scriptlet('debug-on-property-write', 'test')\n * ```\n */\n/* eslint-enable max-len */\nexport function debugOnPropertyWrite(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n const rid = randomId();\n const abort = () => {\n hit(source);\n debugger; // eslint-disable-line no-debugger\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, { set: abort });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid).bind();\n}\n\ndebugOnPropertyWrite.names = [\n 'debug-on-property-write',\n];\n\ndebugOnPropertyWrite.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet debug-current-inline-script\n *\n * @description\n * This scriptlet is basically the same as [abort-current-inline-script](#abort-current-inline-script), but instead of aborting it starts the debugger.\n *\n * **It is not supposed to be used in production filter lists!**\n *\n * **Syntax**\n *```\n * ! Aborts script when it tries to access `window.alert`\n * example.org#%#//scriptlet('debug-current-inline-script', 'alert')\n * ```\n */\n/* eslint-enable max-len */\nexport function debugCurrentInlineScript(source, property, search = null) {\n const regex = search ? toRegExp(search) : null;\n const rid = randomId();\n\n const getCurrentScript = () => {\n if (!document.currentScript) { // eslint-disable-line compat/compat\n const scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n }\n return document.currentScript; // eslint-disable-line compat/compat\n };\n\n const ourScript = getCurrentScript();\n\n const abort = () => {\n const scriptEl = getCurrentScript();\n if (scriptEl instanceof HTMLScriptElement\n && scriptEl.textContent.length > 0\n && scriptEl !== ourScript\n && (!regex || regex.test(scriptEl.textContent))) {\n hit(source);\n debugger; // eslint-disable-line no-debugger\n }\n };\n\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n let currentValue = base[prop];\n setPropertyAccess(base, prop, {\n set: (value) => {\n abort();\n currentValue = value;\n },\n get: () => {\n abort();\n return currentValue;\n },\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\ndebugCurrentInlineScript.names = [\n 'debug-current-inline-script',\n];\n\ndebugCurrentInlineScript.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n];\n","import { hit, observeDOMChanges } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet remove-attr\n *\n * @description\n * Removes the specified attributes from DOM nodes. This scriptlet runs once when the page loads\n * and after that periodically in order to DOM tree changes.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#remove-attrjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('remove-attr', attrs[, selector])\n * ```\n *\n * - `attrs` — required, attribute or list of attributes joined by '|'\n * - `selector` — optional, CSS selector, specifies DOM nodes from which the attributes will be removed\n *\n * **Examples**\n * 1. Removes by attribute\n * ```\n * example.org#%#//scriptlet('remove-attr', 'example|test')\n * ```\n *\n * ```html\n * \n *
Some text
\n *\n * \n *
Some text
\n * ```\n *\n * 2. Removes with specified selector\n * ```\n * example.org#%#//scriptlet('remove-attr', 'example', 'div[class=\"inner\"]')\n * ```\n *\n * ```html\n * \n *
\n *
Some text
\n *
\n *\n * \n *
\n *
Some text
\n *
\n * ```\n */\n/* eslint-enable max-len */\nexport function removeAttr(source, attrs, selector) {\n if (!attrs) { return; }\n attrs = attrs.split(/\\s*\\|\\s*/);\n if (!selector) {\n selector = `[${attrs.join('],[')}]`;\n }\n\n const rmattr = () => {\n const nodes = [].slice.call(document.querySelectorAll(selector));\n let removed = false;\n nodes.forEach((node) => {\n attrs.forEach((attr) => {\n node.removeAttribute(attr);\n removed = true;\n });\n });\n if (removed) {\n hit(source);\n }\n };\n\n rmattr();\n\n // 'true' for observing attributes\n observeDOMChanges(rmattr, true);\n}\n\nremoveAttr.names = [\n 'remove-attr',\n 'remove-attr.js',\n 'ubo-remove-attr.js',\n 'ra.js',\n 'ubo-ra.js',\n];\n\nremoveAttr.injections = [hit, observeDOMChanges];\n","import { hit, observeDOMChanges } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet remove-class\n *\n * @description\n * Removes the specified classes from DOM nodes. This scriptlet runs once after the page loads\n * and after that periodically in order to DOM tree changes.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#remove-classjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('remove-class', classes[, selector])\n * ```\n *\n * - `classes` — required, class or list of classes separated by '|'\n * - `selector` — optional, CSS selector, specifies DOM nodes from which the classes will be removed.\n * If there is no `selector`, each class of `classes` independently will be removed from all nodes which has one\n *\n * **Examples**\n * 1. Removes by classes\n * ```\n * example.org#%#//scriptlet('remove-class', 'example|test')\n * ```\n *\n * ```html\n * \n *
Some text
\n *
Some text
\n *
Some text
\n *\n * \n *
Some text
\n *
Some text
\n *
Some text
\n * ```\n *\n * 2. Removes with specified selector\n * ```\n * example.org#%#//scriptlet('remove-class', 'branding', 'div[class^=\"inner\"]')\n * ```\n *\n * ```html\n * \n *
\n *
Some text
\n *
\n *\n * \n *
\n *
Some text
\n *
\n * ```\n */\n/* eslint-enable max-len */\n\nexport function removeClass(source, classNames, selector) {\n if (!classNames) { return; }\n classNames = classNames.split(/\\s*\\|\\s*/);\n let selectors = [];\n if (!selector) {\n selectors = classNames.map((className) => {\n return `.${className}`;\n });\n }\n\n const removeClassHandler = () => {\n const nodes = new Set();\n if (selector) {\n const foundedNodes = [].slice.call(document.querySelectorAll(selector));\n foundedNodes.forEach((n) => nodes.add(n));\n } else if (selectors.length > 0) {\n selectors.forEach((s) => {\n const elements = document.querySelectorAll(s);\n for (let i = 0; i < elements.length; i += 1) {\n const element = elements[i];\n nodes.add(element);\n }\n });\n }\n\n let removed = false;\n\n nodes.forEach((node) => {\n classNames.forEach((className) => {\n if (node.classList.contains(className)) {\n node.classList.remove(className);\n removed = true;\n }\n });\n });\n\n if (removed) {\n hit(source);\n }\n };\n\n removeClassHandler();\n\n const CLASS_ATTR_NAME = ['class'];\n // 'true' for observing attributes\n // 'class' for observing only classes\n observeDOMChanges(removeClassHandler, true, CLASS_ATTR_NAME);\n}\n\nremoveClass.names = [\n 'remove-class',\n 'remove-class.js',\n 'ubo-remove-class.js',\n 'rc.js',\n 'ubo-rc.js',\n];\n\nremoveClass.injections = [hit, observeDOMChanges];\n","import { hit } from '../helpers';\n\n/**\n * @scriptlet disable-newtab-links\n *\n * @description\n * Prevents opening new tabs and windows if there is `target` attribute in element.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#disable-newtab-linksjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('disable-newtab-links')\n * ```\n */\nexport function disableNewtabLinks(source) {\n document.addEventListener('click', (ev) => {\n let { target } = ev;\n while (target !== null) {\n if (target.localName === 'a' && target.hasAttribute('target')) {\n ev.stopPropagation();\n ev.preventDefault();\n hit(source);\n break;\n }\n target = target.parentNode;\n }\n });\n}\n\ndisableNewtabLinks.names = [\n 'disable-newtab-links',\n 'disable-newtab-links.js',\n 'ubo-disable-newtab-links.js',\n];\n\ndisableNewtabLinks.injections = [\n hit,\n];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet adjust-setInterval\n *\n * @description\n * Adjusts interval for specified setInterval() callbacks.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#nano-setinterval-boosterjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('adjust-setInterval'[, match [, interval[, boost]]])\n * ```\n *\n * - `match` - optional, string/regular expression, matching in stringified callback function\n * - `interval` - optional, defaults to 1000, decimal integer, matching setInterval delay\n * - `boost` - optional, default to 0.05, float, capped at 50 times for up and down (0.02...50), interval multiplier\n *\n * **Examples**\n * 1. Adjust all setInterval() x20 times where interval equal 1000ms:\n * ```\n * example.org#%#//scriptlet('adjust-setInterval')\n * ```\n *\n * 2. Adjust all setInterval() x20 times where callback mathed with `example` and interval equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', 'example')\n * ```\n *\n * 3. Adjust all setInterval() x20 times where callback mathed with `example` and interval equal 400ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', 'example', '400')\n * ```\n *\n * 4. Slow down setInterval() x2 times where callback matched with `example` and interval equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', 'example', '', '2')\n * ```\n * 5. Adjust all setInterval() x50 times where interval equal 2000ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', '', '2000', '0.02')\n * ```\n */\n/* eslint-enable max-len */\nexport function adjustSetInterval(source, match, interval, boost) {\n const nativeInterval = window.setInterval;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const nativeIsFinite = Number.isFinite || window.isFinite; // eslint-disable-line compat/compat\n\n interval = parseInt(interval, 10);\n interval = nativeIsNaN(interval) ? 1000 : interval;\n\n boost = parseFloat(boost);\n boost = nativeIsNaN(boost) || !nativeIsFinite(boost) ? 0.05 : boost;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n if (boost < 0.02) {\n boost = 0.02;\n }\n if (boost > 50) {\n boost = 50;\n }\n\n const intervalWrapper = (cb, d, ...args) => {\n if (d === interval && match.test(cb.toString())) {\n d *= boost;\n hit(source);\n }\n return nativeInterval.apply(window, [cb, d, ...args]);\n };\n window.setInterval = intervalWrapper;\n}\n\nadjustSetInterval.names = [\n 'adjust-setInterval',\n 'nano-setInterval-booster.js',\n 'ubo-nano-setInterval-booster.js',\n 'nano-sib.js',\n 'ubo-nano-sib.js',\n];\n\nadjustSetInterval.injections = [toRegExp, hit];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet adjust-setTimeout\n *\n * @description\n * Adjusts timeout for specified setTimout() callbacks.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#nano-settimeout-boosterjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout'[, match [, timeout[, boost]]])\n * ```\n *\n * - `match` - optional, string/regular expression, matching in stringified callback function\n * - `timeout` - optional, defaults to 1000, decimal integer, matching setTimout delay\n * - `boost` - optional, default to 0.05, float, capped at 50 times for up and down (0.02...50), timeout multiplier\n *\n * **Examples**\n * 1. Adjust all setTimeout() x20 times where timeout equal 1000ms:\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout')\n * ```\n *\n * 2. Adjust all setTimeout() x20 times where callback mathed with `example` and timeout equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', 'example')\n * ```\n *\n * 3. Adjust all setTimeout() x20 times where callback mathed with `example` and timeout equal 400ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', 'example', '400')\n * ```\n *\n * 4. Slow down setTimeout() x2 times where callback matched with `example` and timeout equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', 'example', '', '2')\n * ```\n * 5. Adjust all setTimeout() x50 times where timeout equal 2000ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', '', '2000', '0.02')\n * ```\n */\n/* eslint-enable max-len */\nexport function adjustSetTimeout(source, match, timeout, boost) {\n const nativeTimeout = window.setTimeout;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const nativeIsFinite = Number.isFinite || window.isFinite; // eslint-disable-line compat/compat\n\n timeout = parseInt(timeout, 10);\n timeout = nativeIsNaN(timeout) ? 1000 : timeout;\n\n boost = parseFloat(boost);\n boost = nativeIsNaN(boost) || !nativeIsFinite(boost) ? 0.05 : boost;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n if (boost < 0.02) {\n boost = 0.02;\n }\n if (boost > 50) {\n boost = 50;\n }\n\n const timeoutWrapper = (cb, d, ...args) => {\n if (d === timeout && match.test(cb.toString())) {\n d *= boost;\n hit(source);\n }\n return nativeTimeout.apply(window, [cb, d, ...args]);\n };\n window.setTimeout = timeoutWrapper;\n}\n\nadjustSetTimeout.names = [\n 'adjust-setTimeout',\n 'nano-setTimeout-booster.js',\n 'ubo-nano-setTimeout-booster.js',\n 'nano-stb.js',\n 'ubo-nano-stb.js',\n];\n\nadjustSetTimeout.injections = [toRegExp, hit];\n","import { hit } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet dir-string\n *\n * @description\n * Wraps the `console.dir` API to call the `toString` method of the argument.\n * There are several adblock circumvention systems that detect browser devtools\n * and hide themselves. Therefore, if we force them to think\n * that devtools are open (using this scrciptlet),\n * it will automatically disable the adblock circumvention script.\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/6b2a309054cc23432102b85d13f12559639ef495/lib/content/snippets.js#L766\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('dir-string'[, times])\n * ```\n * - `times` - optional, the number of times to call the `toString` method of the argument to `console.dir`\n *\n * **Example**\n * ```\n * ! Run 2 times\n * example.org#%#//scriptlet('dir-string', '2')\n * ```\n */\n/* eslint-enable max-len */\nexport function dirString(source, times) {\n const { dir } = console;\n times = parseInt(times, 10);\n\n function dirWrapper(object) {\n // eslint-disable-next-line no-unused-vars\n let temp;\n for (let i = 0; i < times; i += 1) {\n // eslint-disable-next-line no-unused-expressions\n temp = `${object}`;\n }\n if (typeof dir === 'function') {\n dir.call(this, object);\n }\n hit(source, temp);\n }\n // eslint-disable-next-line no-console\n console.dir = dirWrapper;\n}\n\ndirString.names = [\n 'dir-string',\n 'abp-dir-string',\n];\n\ndirString.injections = [hit];\n","import { hit, getPropertyInChain } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet json-prune\n *\n * @description\n * Removes specified properties from the result of calling JSON.parse and returns the caller\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#json-prunejs-\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/master/lib/content/snippets.js#L1285\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('json-prune'[, propsToRemove [, obligatoryProps]])\n * ```\n *\n * - `propsToRemove` - optional, string of space-separated properties to remove\n * - `obligatoryProps` - optional, string of space-separated properties which must be all present for the pruning to occur\n *\n * **Examples**\n * 1. Removes property `example` from the results of JSON.parse call\n * ```\n * example.org#%#//scriptlet('json-prune', 'example')\n * ```\n *\n * For instance, the following call will return `{ one: 1}`\n *\n * ```html\n * JSON.parse('{\"one\":1,\"example\":true}')\n * ```\n *\n * 2. If there are no specified properties in the result of JSON.parse call, pruning will NOT occur\n * ```\n * example.org#%#//scriptlet('json-prune', 'one', 'obligatoryProp')\n * ```\n *\n * For instance, the following call will return `{ one: 1, two: 2}`\n *\n * ```html\n * JSON.parse('{\"one\":1,\"two\":2}')\n * ```\n *\n * 3. A property in a list of properties can be a chain of properties\n *\n * ```\n * example.org#%#//scriptlet('json-prune', 'a.b', 'adpath.url.first')\n * ```\n *\n * 4. Call with no arguments will log the current hostname and json payload at the console\n * ```\n * example.org#%#//scriptlet('json-prune')\n * ```\n */\n/* eslint-enable max-len */\nexport function jsonPrune(source, propsToRemove, requiredInitialProps) {\n // eslint-disable-next-line no-console\n const log = console.log.bind(console);\n const prunePaths = propsToRemove !== undefined && propsToRemove !== ''\n ? propsToRemove.split(/ +/)\n : [];\n const needlePaths = requiredInitialProps !== undefined && requiredInitialProps !== ''\n ? requiredInitialProps.split(/ +/)\n : [];\n\n function isPruningNeeded(root) {\n if (!root) {\n return false;\n }\n\n for (let i = 0; i < needlePaths.length; i += 1) {\n const needlePath = needlePaths[i];\n const details = getPropertyInChain(root, needlePath, false);\n const nestedPropName = needlePath.split('.').pop();\n if (details && details.base[nestedPropName] === undefined) {\n return false;\n }\n }\n return true;\n }\n\n const nativeParse = JSON.parse;\n\n const parseWrapper = (...args) => {\n const r = nativeParse.apply(window, args);\n if (prunePaths.length === 0) {\n log(window.location.hostname, r);\n return r;\n }\n if (isPruningNeeded(r) === false) {\n return r;\n }\n prunePaths.forEach((path) => {\n const ownerObj = getPropertyInChain(r, path, false);\n if (ownerObj !== undefined && ownerObj.base) {\n delete ownerObj.base[ownerObj.prop];\n }\n });\n hit(source);\n return r;\n };\n\n JSON.parse = parseWrapper;\n}\n\njsonPrune.names = [\n 'json-prune',\n 'json-prune.js',\n 'ubo-json-prune.js',\n];\n\njsonPrune.injections = [hit, getPropertyInChain];\n","import {\n hit, startsWith, toRegExp, noopFunc,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-requestAnimationFrame\n *\n * @description\n * Prevents a `requestAnimationFrame` call\n * if the text of the callback is matching the specified search string which does not start with `!`;\n * otherwise mismatched calls should be defused.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#no-requestanimationframe-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-requestAnimationFrame'[, search])\n * ```\n *\n * - `search` - optional, string or regular expression.\n * If starts with `!`, scriptlet will not match the stringified callback but all other will be defused.\n * If do not start with `!`, the stringified callback will be matched.\n *\n * Call with no argument will log all requestAnimationFrame calls while debugging.\n * So do not use the scriptlet without any parameter in production filter lists.\n *\n * **Examples**\n * 1. Prevents `requestAnimationFrame` calls if the callback matches `/\\.test/`.\n * ```bash\n * example.org#%#//scriptlet('prevent-requestAnimationFrame', '/\\.test/')\n * ```\n *\n * For instance, the following call will be prevented:\n * ```javascript\n * var times = 0;\n * requestAnimationFrame(function change() {\n * window.test = 'new value';\n * if (times < 2) {\n * times += 1;\n * requestAnimationFrame(change);\n * }\n * });\n * ```\n * 2. Prevents `requestAnimationFrame` calls if **does not match** 'check'.\n * ```bash\n * example.org#%#//scriptlet('prevent-requestAnimationFrame', '!check')\n * ```\n *\n * For instance, only the first call will be prevented:\n *\n * ```javascript\n * var timesFirst = 0;\n * requestAnimationFrame(function changeFirst() {\n * window.check = 'should not be prevented';\n * if (timesFirst < 2) {\n * timesFirst += 1;\n * requestAnimationFrame(changeFirst);\n * }\n * });\n *\n * var timesSecond = 0;\n * requestAnimationFrame(function changeSecond() {\n * window.second = 'should be prevented';\n * if (timesSecond < 2) {\n * timesSecond += 1;\n * requestAnimationFrame(changeSecond);\n * }\n * });\n * ```\n */\n/* eslint-enable max-len */\n\nexport function preventRequestAnimationFrame(source, match) {\n const nativeRequestAnimationFrame = window.requestAnimationFrame;\n\n // logs requestAnimationFrame to console if no arguments have been specified\n const shouldLog = typeof match === 'undefined';\n\n const INVERT_MARKER = '!';\n\n const doNotMatch = startsWith(match, INVERT_MARKER);\n if (doNotMatch) {\n match = match.slice(1);\n }\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n const rafWrapper = (callback, ...args) => {\n let shouldPrevent = false;\n if (shouldLog) {\n const logMessage = `log: requestAnimationFrame(\"${callback.toString()}\")`;\n hit(source, logMessage);\n } else {\n shouldPrevent = match.test(callback.toString()) !== doNotMatch;\n }\n\n if (shouldPrevent) {\n hit(source);\n return nativeRequestAnimationFrame(noopFunc);\n }\n\n return nativeRequestAnimationFrame.apply(window, [callback, ...args]);\n };\n\n window.requestAnimationFrame = rafWrapper;\n}\n\npreventRequestAnimationFrame.names = [\n 'prevent-requestAnimationFrame',\n 'no-requestAnimationFrame-if.js',\n 'ubo-no-requestAnimationFrame-if.js',\n 'norafif.js',\n 'ubo-norafif.js',\n 'ubo-no-requestAnimationFrame-if',\n 'ubo-norafif',\n];\n\npreventRequestAnimationFrame.injections = [hit, startsWith, toRegExp, noopFunc];\n","import { hit } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet set-cookie\n *\n * @description\n * Sets a cookie with the specified name and value. Cookie path defaults to root.\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('set-cookie', name, value)\n * ```\n *\n * - `name` - required, cookie name to be set\n * - `value` - required, cookie value; possible values:\n * - number `>= 0 && <= 15`\n * - one of the predefined constants:\n * - `true` / `True`\n * - `false` / `False`\n * - `yes` / `Yes` / `Y`\n * - `no`\n * - `ok` / `OK`\n *\n * **Examples**\n * ```\n * example.org#%#//scriptlet('set-cookie', 'checking', 'ok')\n *\n * example.org#%#//scriptlet('set-cookie', 'gdpr-settings-cookie', '1')\n * ```\n */\n/* eslint-enable max-len */\nexport function setCookie(source, name, value) {\n if (!name || !value) {\n return;\n }\n\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n let valueToSet;\n if (value === 'true') {\n valueToSet = 'true';\n } else if (value === 'True') {\n valueToSet = 'True';\n } else if (value === 'false') {\n valueToSet = 'false';\n } else if (value === 'False') {\n valueToSet = 'False';\n } else if (value === 'yes') {\n valueToSet = 'yes';\n } else if (value === 'Yes') {\n valueToSet = 'Yes';\n } else if (value === 'Y') {\n valueToSet = 'Y';\n } else if (value === 'no') {\n valueToSet = 'no';\n } else if (value === 'ok') {\n valueToSet = 'ok';\n } else if (value === 'OK') {\n valueToSet = 'OK';\n } else if (/^\\d+$/.test(value)) {\n valueToSet = parseFloat(value);\n if (nativeIsNaN(valueToSet)) {\n return;\n }\n if (Math.abs(valueToSet) < 0 || Math.abs(valueToSet) > 15) {\n return;\n }\n } else {\n return;\n }\n\n const pathToSet = 'path=/;';\n\n const cookieData = `${encodeURIComponent(name)}=${encodeURIComponent(valueToSet)}; ${pathToSet}`;\n\n hit(source);\n document.cookie = cookieData;\n}\n\nsetCookie.names = [\n 'set-cookie',\n];\n\nsetCookie.injections = [hit];\n","/**\n * This file must export all scriptlets which should be accessible\n */\nexport * from './abort-on-property-read';\nexport * from './abort-on-property-write';\nexport * from './prevent-setTimeout';\nexport * from './prevent-setInterval';\nexport * from './prevent-window-open';\nexport * from './abort-current-inline-script';\nexport * from './set-constant';\nexport * from './remove-cookie';\nexport * from './prevent-addEventListener';\nexport * from './prevent-bab';\nexport * from './nowebrtc';\nexport * from './log-addEventListener';\nexport * from './log-eval';\nexport * from './log';\nexport * from './noeval';\nexport * from './prevent-eval-if';\nexport * from './prevent-fab-3.2.0';\nexport * from './set-popads-dummy';\nexport * from './prevent-popads-net';\nexport * from './prevent-adfly';\nexport * from './debug-on-property-read';\nexport * from './debug-on-property-write';\nexport * from './debug-current-inline-script';\nexport * from './remove-attr';\nexport * from './remove-class';\nexport * from './disable-newtab-links';\nexport * from './adjust-setInterval';\nexport * from './adjust-setTimeout';\nexport * from './dir-string';\nexport * from './json-prune';\nexport * from './prevent-requestAnimationFrame';\nexport * from './set-cookie';\n","import {\n startsWith,\n endsWith,\n substringAfter,\n toRegExp,\n} from './string-utils';\n\nimport { ADG_SCRIPTLET_MASK } from './parse-rule';\n\nimport * as scriptletsList from '../scriptlets/scriptletsList';\n\nimport { redirects } from '../../scripts/compatibility-table.json';\n\nconst JS_RULE_MARKER = '#%#';\nconst COMMENT_MARKER = '!';\n\n/**\n * Checks if rule text is comment e.g. !!example.org##+js(set-constant.js, test, false)\n * @param {string} rule\n * @return {boolean}\n */\nconst isComment = (rule) => startsWith(rule, COMMENT_MARKER);\n\n/* ************************************************************************\n *\n * Scriptlets\n *\n ************************************************************************** */\n\n/**\n * uBlock scriptlet rule mask\n */\nconst UBO_SCRIPTLET_MASK_REG = /#@?#script:inject|#@?#\\s*\\+js/;\nconst UBO_SCRIPTLET_MASK_1 = '##+js';\nconst UBO_SCRIPTLET_MASK_2 = '##script:inject';\nconst UBO_SCRIPTLET_EXCEPTION_MASK_1 = '#@#+js';\nconst UBO_SCRIPTLET_EXCEPTION_MASK_2 = '#@#script:inject';\n\n/**\n * AdBlock Plus snippet rule mask\n */\nconst ABP_SCRIPTLET_MASK = '#$#';\nconst ABP_SCRIPTLET_EXCEPTION_MASK = '#@$#';\n\n/**\n * AdGuard CSS rule mask\n */\nconst ADG_CSS_MASK_REG = /#@?\\$#.+?\\s*\\{.*\\}\\s*$/g;\n\n/**\n * Checks if the `rule` is AdGuard scriptlet rule\n * @param {string} rule - rule text\n */\nconst isAdgScriptletRule = (rule) => {\n return (\n !isComment(rule)\n && rule.indexOf(ADG_SCRIPTLET_MASK) > -1\n );\n};\n\n/**\n * Checks if the `rule` is uBO scriptlet rule\n * @param {string} rule rule text\n */\nconst isUboScriptletRule = (rule) => {\n return (\n rule.indexOf(UBO_SCRIPTLET_MASK_1) > -1\n || rule.indexOf(UBO_SCRIPTLET_MASK_2) > -1\n || rule.indexOf(UBO_SCRIPTLET_EXCEPTION_MASK_1) > -1\n || rule.indexOf(UBO_SCRIPTLET_EXCEPTION_MASK_2) > -1\n )\n && UBO_SCRIPTLET_MASK_REG.test(rule)\n && !isComment(rule);\n};\n\n/**\n * Checks if the `rule` is AdBlock Plus snippet\n * @param {string} rule rule text\n */\nconst isAbpSnippetRule = (rule) => {\n return (\n rule.indexOf(ABP_SCRIPTLET_MASK) > -1\n || rule.indexOf(ABP_SCRIPTLET_EXCEPTION_MASK) > -1\n )\n && rule.search(ADG_CSS_MASK_REG) === -1\n && !isComment(rule);\n};\n\n/**\n * Finds scriptlet by it's name\n * @param {string} name - scriptlet name\n */\nconst getScriptletByName = (name) => {\n const scriptlets = Object.keys(scriptletsList).map((key) => scriptletsList[key]);\n return scriptlets\n .find((s) => {\n return s.names\n // full match name checking\n && (s.names.indexOf(name) > -1\n // or check ubo alias name without '.js' at the end\n || (!endsWith(name, '.js') && s.names.indexOf(`${name}.js`) > -1)\n );\n });\n};\n\n/**\n * Checks if the scriptlet name is valid\n * @param {string} name - Scriptlet name\n */\nconst isValidScriptletName = (name) => {\n if (!name) {\n return false;\n }\n const scriptlet = getScriptletByName(name);\n if (!scriptlet) {\n return false;\n }\n return true;\n};\n\n/* ************************************************************************\n *\n * Redirects\n *\n ************************************************************************** */\n\n/**\n * Redirect resources markers\n */\nconst ADG_UBO_REDIRECT_MARKER = 'redirect=';\nconst ABP_REDIRECT_MARKER = 'rewrite=abp-resource:';\n\nconst VALID_SOURCE_TYPES = [\n 'image',\n 'subdocument',\n 'stylesheet',\n 'script',\n 'xmlhttprequest',\n 'media',\n];\n\nconst validAdgRedirects = redirects.filter((el) => el.adg);\n\n/**\n * Converts array of pairs to object.\n * Sort of Object.fromEntries() polyfill.\n * @param {Array} pairs - array of pairs\n * @returns {Object}\n */\nconst objFromEntries = (pairs) => {\n const output = pairs\n .reduce((acc, el) => {\n const [key, value] = el;\n acc[key] = value;\n return acc;\n }, {});\n return output;\n};\n\n/**\n * Compatibility object where KEYS = UBO redirect names and VALUES = ADG redirect names\n * It's used for UBO -> ADG converting\n */\nconst uboToAdgCompatibility = objFromEntries(\n validAdgRedirects\n .filter((el) => el.ubo)\n .map((el) => {\n return [el.ubo, el.adg];\n }),\n);\n\n/**\n * Compatibility object where KEYS = ABP redirect names and VALUES = ADG redirect names\n * It's used for ABP -> ADG converting\n */\nconst abpToAdgCompatibility = objFromEntries(\n validAdgRedirects\n .filter((el) => el.abp)\n .map((el) => {\n return [el.abp, el.adg];\n }),\n);\n\n/**\n * Compatibility object where KEYS = UBO redirect names and VALUES = ADG redirect names\n * It's used for ADG -> UBO converting\n */\nconst adgToUboCompatibility = objFromEntries(\n validAdgRedirects\n .filter((el) => el.ubo)\n .map((el) => {\n return [el.adg, el.ubo];\n }),\n);\n\n/**\n * Needed for AdGuard redirect names validation where KEYS = **valid** AdGuard redirect names\n * 'adgToUboCompatibility' is still needed for ADG -> UBO converting\n */\nconst validAdgCompatibility = objFromEntries(\n validAdgRedirects\n .map((el) => {\n return [el.adg, 'valid adg redirect'];\n }),\n);\n\nconst REDIRECT_RULE_TYPES = {\n VALID_ADG: {\n marker: ADG_UBO_REDIRECT_MARKER,\n compatibility: validAdgCompatibility,\n },\n ADG: {\n marker: ADG_UBO_REDIRECT_MARKER,\n compatibility: adgToUboCompatibility,\n },\n UBO: {\n marker: ADG_UBO_REDIRECT_MARKER,\n compatibility: uboToAdgCompatibility,\n },\n ABP: {\n marker: ABP_REDIRECT_MARKER,\n compatibility: abpToAdgCompatibility,\n },\n};\n\n/**\n * Parses redirect rule modifiers\n * @param {string} rule\n * @returns {Array}\n */\nconst parseModifiers = (rule) => substringAfter(rule, '$').split(',');\n\n/**\n * Gets redirect resource name\n * @param {string} rule\n * @param {string} marker - specific Adg/Ubo or Abp redirect resources marker\n * @returns {string} - redirect resource name\n */\nconst getRedirectName = (rule, marker) => {\n const ruleModifiers = parseModifiers(rule);\n const redirectNamePart = ruleModifiers\n .find((el) => el.indexOf(marker) > -1);\n return substringAfter(redirectNamePart, marker);\n};\n\n/**\n * Checks if the `rule` is AdGuard redirect rule.\n * Discards comments and JS rules and checks if the `rule` has 'redirect' modifier.\n * @param {string} rule - rule text\n */\nconst isAdgRedirectRule = (rule) => {\n const MARKER_IN_BASE_PART_MASK = '/((?!\\\\$|\\\\,).{1})redirect=(.{0,}?)\\\\$(popup)?/';\n return (\n !isComment(rule)\n && rule.indexOf(REDIRECT_RULE_TYPES.ADG.marker) > -1\n // some js rules may have 'redirect=' in it, so we should get rid of them\n && rule.indexOf(JS_RULE_MARKER) === -1\n // get rid of rules like '_redirect=*://look.$popup'\n && !(toRegExp(MARKER_IN_BASE_PART_MASK).test(rule))\n );\n};\n\n/**\n * Checks if the `rule` satisfies the `type`\n * @param {string} rule - rule text\n * @param {'VALID_ADG'|'ADG'|'UBO'|'ABP'} type - type of a redirect rule\n */\nconst isRedirectRuleByType = (rule, type) => {\n const { marker, compatibility } = REDIRECT_RULE_TYPES[type];\n\n if (rule\n && (!isComment(rule))\n && (rule.indexOf(marker) > -1)) {\n const redirectName = getRedirectName(rule, marker);\n\n return redirectName === Object\n .keys(compatibility)\n .find((el) => el === redirectName);\n }\n return false;\n};\n\n/**\n* Checks if the `rule` is **valid** AdGuard redirect resource rule\n* @param {string} rule - rule text\n* @returns {boolean}\n*/\nconst isValidAdgRedirectRule = (rule) => {\n return isRedirectRuleByType(rule, 'VALID_ADG');\n};\n\n/**\n* Checks if the AdGuard redirect `rule` has Ubo analog. Needed for Adg->Ubo conversion\n* @param {string} rule - AdGuard rule text\n* @returns {boolean} - true if the rule can be converted to Ubo\n*/\nconst isAdgRedirectCompatibleWithUbo = (rule) => {\n return isAdgRedirectRule(rule) && isRedirectRuleByType(rule, 'ADG');\n};\n\n/**\n* Checks if the Ubo redirect `rule` has AdGuard analog. Needed for Ubo->Adg conversion\n* @param {string} rule - Ubo rule text\n* @returns {boolean} - true if the rule can be converted to AdGuard\n*/\nconst isUboRedirectCompatibleWithAdg = (rule) => {\n return isRedirectRuleByType(rule, 'UBO');\n};\n\n/**\n* Checks if the Abp redirect `rule` has AdGuard analog. Needed for Abp->Adg conversion\n* @param {string} rule - Abp rule text\n* @returns {boolean} - true if the rule can be converted to AdGuard\n*/\nconst isAbpRedirectCompatibleWithAdg = (rule) => {\n return isRedirectRuleByType(rule, 'ABP');\n};\n\n/**\n * Checks if the rule has specified content type before Adg -> Ubo conversion.\n *\n * Used ONLY for Adg -> Ubo conversion\n * because Ubo redirect rules must contain content type, but Adg and Abp must not.\n *\n * Also source type can not be added automatically because of such valid rules:\n * ! Abp:\n * $rewrite=abp-resource:blank-js,xmlhttprequest\n * ! Adg:\n * $script,redirect=noopvast-2.0\n * $xmlhttprequest,redirect=noopvast-2.0\n *\n * @param {string} rule\n * @returns {boolean}\n */\nconst hasValidContentType = (rule) => {\n if (isRedirectRuleByType(rule, 'ADG')) {\n const ruleModifiers = parseModifiers(rule);\n const sourceType = ruleModifiers\n .find((el) => VALID_SOURCE_TYPES.indexOf(el) > -1);\n\n return sourceType !== undefined;\n }\n return false;\n};\n\nconst validator = {\n UBO_SCRIPTLET_MASK_REG,\n ABP_SCRIPTLET_MASK,\n ABP_SCRIPTLET_EXCEPTION_MASK,\n isComment,\n isAdgScriptletRule,\n isUboScriptletRule,\n isAbpSnippetRule,\n getScriptletByName,\n isValidScriptletName,\n REDIRECT_RULE_TYPES,\n isAdgRedirectRule,\n isValidAdgRedirectRule,\n isAdgRedirectCompatibleWithUbo,\n isUboRedirectCompatibleWithAdg,\n isAbpRedirectCompatibleWithAdg,\n parseModifiers,\n getRedirectName,\n hasValidContentType,\n};\n\nexport default validator;\n","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}\n\nmodule.exports = _toArray;","import {\n getBeforeRegExp,\n substringAfter,\n substringBefore,\n wrapInSingleQuotes,\n getStringInBraces,\n} from './string-utils';\n\nimport validator from './validator';\n\nimport { parseRule } from './parse-rule';\n\nimport * as scriptletList from '../scriptlets/scriptletsList';\n\n/**\n * AdGuard scriptlet rule\n */\nconst ADGUARD_SCRIPTLET_MASK_REG = /#@?%#\\/\\/scriptlet\\(.+\\)/;\n// eslint-disable-next-line no-template-curly-in-string\nconst ADGUARD_SCRIPTLET_TEMPLATE = '${domains}#%#//scriptlet(${args})';\n// eslint-disable-next-line no-template-curly-in-string\nconst ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE = '${domains}#@%#//scriptlet(${args})';\n\n/**\n * uBlock scriptlet rule mask\n */\n// eslint-disable-next-line no-template-curly-in-string\nconst UBO_SCRIPTLET_TEMPLATE = '${domains}##+js(${args})';\n// eslint-disable-next-line no-template-curly-in-string\nconst UBO_SCRIPTLET_EXCEPTION_TEMPLATE = '${domains}#@#+js(${args})';\n\nconst UBO_ALIAS_NAME_MARKER = 'ubo-';\n\n// https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#xhr\nconst UBO_XHR_TYPE = 'xhr';\n\nconst ADG_XHR_TYPE = 'xmlhttprequest';\n\n/**\n * Returns array of strings separated by space which not in quotes\n * @param {string} str\n */\nconst getSentences = (str) => {\n const reg = /'.*?'|\".*?\"|\\S+/g;\n return str.match(reg);\n};\n\n/**\n * Replaces string with data by placeholders\n * @param {string} str\n * @param {Object} data - where keys are placeholders names\n */\nconst replacePlaceholders = (str, data) => {\n return Object.keys(data).reduce((acc, key) => {\n const reg = new RegExp(`\\\\$\\\\{${key}\\\\}`, 'g');\n acc = acc.replace(reg, data[key]);\n return acc;\n }, str);\n};\n\n/**\n * Converts string of UBO scriptlet rule to AdGuard scritlet rule\n * @param {string} rule - UBO scriptlet rule\n * @returns {Array} - array with one AdGuard scriptlet rule\n */\nexport const convertUboScriptletToAdg = (rule) => {\n const domains = getBeforeRegExp(rule, validator.UBO_SCRIPTLET_MASK_REG);\n const mask = rule.match(validator.UBO_SCRIPTLET_MASK_REG)[0];\n let template;\n if (mask.indexOf('@') > -1) {\n template = ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE;\n } else {\n template = ADGUARD_SCRIPTLET_TEMPLATE;\n }\n const args = getStringInBraces(rule)\n .split(/, /g)\n .map((arg, index) => {\n let outputArg;\n if (index === 0) {\n outputArg = (arg.indexOf('.js') > -1) ? `ubo-${arg}` : `ubo-${arg}.js`;\n } else {\n outputArg = arg;\n }\n // for example: dramaserial.xyz##+js(abort-current-inline-script, $, popup)\n if (arg === '$') {\n outputArg = '$$';\n }\n return outputArg;\n })\n .map((arg) => wrapInSingleQuotes(arg))\n .join(', ');\n const adgRule = replacePlaceholders(\n template,\n { domains, args },\n );\n return [adgRule];\n};\n\n/**\n * Convert string of ABP snippet rule to AdGuard scritlet rule\n * @param {string} rule - ABP snippet rule\n * @returns {Array} - array of AdGuard scriptlet rules -\n * one or few items depends on Abp-rule\n */\nexport const convertAbpSnippetToAdg = (rule) => {\n const SEMICOLON_DIVIDER = /;(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/g;\n const mask = rule.indexOf(validator.ABP_SCRIPTLET_MASK) > -1\n ? validator.ABP_SCRIPTLET_MASK\n : validator.ABP_SCRIPTLET_EXCEPTION_MASK;\n const template = mask === validator.ABP_SCRIPTLET_MASK\n ? ADGUARD_SCRIPTLET_TEMPLATE\n : ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE;\n const domains = substringBefore(rule, mask);\n const args = substringAfter(rule, mask);\n\n return args.split(SEMICOLON_DIVIDER)\n .map((args) => getSentences(args)\n .filter((arg) => arg)\n .map((arg, index) => (index === 0 ? `abp-${arg}` : arg))\n .map((arg) => wrapInSingleQuotes(arg))\n .join(', '))\n .map((args) => replacePlaceholders(template, { domains, args }));\n};\n\n/**\n * Converts scriptlet rule to AdGuard one\n * @param {string} rule\n * @returns {Array} - array of AdGuard scriptlet rules -\n * one item for Adg and Ubo or few items for Abp\n */\nexport const convertScriptletToAdg = (rule) => {\n let result;\n if (validator.isUboScriptletRule(rule)) {\n result = convertUboScriptletToAdg(rule);\n } else if (validator.isAbpSnippetRule(rule)) {\n result = convertAbpSnippetToAdg(rule);\n } else if (validator.isAdgScriptletRule(rule) || (validator.isComment(rule))) {\n result = [rule];\n }\n\n return result;\n};\n\n/**\n * Converts UBO scriptlet rule to AdGuard one\n * @param {string} rule - AdGuard scriptlet rule\n * @returns {string} - UBO scriptlet rule\n */\nexport const convertAdgScriptletToUbo = (rule) => {\n let res;\n\n if (validator.isAdgScriptletRule(rule)) {\n const { name: parsedName, args: parsedParams } = parseRule(rule);\n\n // object of name and aliases for the Adg-scriptlet\n const adgScriptletObject = Object\n .keys(scriptletList)\n .map((el) => scriptletList[el])\n .map((s) => {\n const [name, ...aliases] = s.names;\n return { name, aliases };\n })\n .find((el) => (el.name === parsedName\n || el.aliases.indexOf(parsedName) >= 0));\n\n const { aliases } = adgScriptletObject;\n\n if (aliases.length > 0) {\n const uboAlias = adgScriptletObject.aliases\n // eslint-disable-next-line no-restricted-properties\n .find((alias) => alias.includes(UBO_ALIAS_NAME_MARKER));\n\n if (uboAlias) {\n const mask = rule.match(ADGUARD_SCRIPTLET_MASK_REG)[0];\n let template;\n if (mask.indexOf('@') > -1) {\n template = UBO_SCRIPTLET_EXCEPTION_TEMPLATE;\n } else {\n template = UBO_SCRIPTLET_TEMPLATE;\n }\n const domains = getBeforeRegExp(rule, ADGUARD_SCRIPTLET_MASK_REG);\n const uboName = uboAlias\n .replace(UBO_ALIAS_NAME_MARKER, '')\n // '.js' in the Ubo scriptlet name can be omitted\n // https://github.com/gorhill/uBlock/wiki/Resources-Library#general-purpose-scriptlets\n .replace('.js', '');\n\n const args = (parsedParams.length > 0) ? `${uboName}, ${parsedParams.join(', ')}` : uboName;\n\n const uboRule = replacePlaceholders(\n template,\n { domains, args },\n );\n\n res = uboRule;\n }\n }\n }\n\n return res;\n};\n\n/**\n * Validates any scriptlet rule\n * @param {string} input - can be Adguard or Ubo or Abp scriptlet rule\n */\nexport const isValidScriptletRule = (input) => {\n if (!input) {\n return false;\n }\n // ABP 'input' rule may contain more than one snippet\n const rulesArray = convertScriptletToAdg(input);\n\n // checking if each of parsed scriptlets is valid\n // if at least one of them is not valid - whole 'input' rule is not valid too\n const isValid = rulesArray.reduce((acc, rule) => {\n const parsedRule = parseRule(rule);\n return validator.isValidScriptletName(parsedRule.name) && acc;\n }, true);\n\n return isValid;\n};\n\n/**\n * Converts Ubo redirect rule to Adg one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertUboRedirectToAdg = (rule) => {\n const firstPartOfRule = substringBefore(rule, '$');\n const uboModifiers = validator.parseModifiers(rule);\n const adgModifiers = uboModifiers\n .map((el) => {\n if (el.indexOf(validator.REDIRECT_RULE_TYPES.UBO.marker) > -1) {\n const uboName = substringAfter(el, validator.REDIRECT_RULE_TYPES.UBO.marker);\n const adgName = validator.REDIRECT_RULE_TYPES.UBO.compatibility[uboName];\n return `${validator.REDIRECT_RULE_TYPES.ADG.marker}${adgName}`;\n }\n if (el === UBO_XHR_TYPE) {\n return ADG_XHR_TYPE;\n }\n return el;\n })\n .join(',');\n\n return `${firstPartOfRule}$${adgModifiers}`;\n};\n\n/**\n * Converts Abp redirect rule to Adg one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertAbpRedirectToAdg = (rule) => {\n const firstPartOfRule = substringBefore(rule, '$');\n const abpModifiers = validator.parseModifiers(rule);\n const adgModifiers = abpModifiers\n .map((el) => {\n if (el.indexOf(validator.REDIRECT_RULE_TYPES.ABP.marker) > -1) {\n const abpName = substringAfter(el, validator.REDIRECT_RULE_TYPES.ABP.marker);\n const adgName = validator.REDIRECT_RULE_TYPES.ABP.compatibility[abpName];\n return `${validator.REDIRECT_RULE_TYPES.ADG.marker}${adgName}`;\n }\n return el;\n })\n .join(',');\n\n return `${firstPartOfRule}$${adgModifiers}`;\n};\n\n/**\n * Converts redirect rule to AdGuard one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertRedirectToAdg = (rule) => {\n let result;\n if (validator.isUboRedirectCompatibleWithAdg(rule)) {\n result = convertUboRedirectToAdg(rule);\n } else if (validator.isAbpRedirectCompatibleWithAdg(rule)) {\n result = convertAbpRedirectToAdg(rule);\n } else if (validator.isValidAdgRedirectRule(rule)) {\n result = rule;\n }\n\n return result;\n};\n\n/**\n * Converts Adg redirect rule to Ubo one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertAdgRedirectToUbo = (rule) => {\n if (!validator.hasValidContentType(rule)) {\n throw new Error(`Rule is not valid for converting to Ubo. Source type is not specified in the rule: ${rule}`);\n } else {\n const firstPartOfRule = substringBefore(rule, '$');\n const uboModifiers = validator.parseModifiers(rule);\n const adgModifiers = uboModifiers\n .map((el) => {\n if (el.indexOf(validator.REDIRECT_RULE_TYPES.ADG.marker) > -1) {\n const adgName = substringAfter(el, validator.REDIRECT_RULE_TYPES.ADG.marker);\n const uboName = validator.REDIRECT_RULE_TYPES.ADG.compatibility[adgName];\n return `${validator.REDIRECT_RULE_TYPES.UBO.marker}${uboName}`;\n }\n return el;\n })\n .join(',');\n\n return `${firstPartOfRule}$${adgModifiers}`;\n }\n};\n","import {\n hit, noopFunc, noopNull, noopArray,\n} from '../helpers';\n\n/**\n * @redirect google-analytics\n *\n * @description\n * Mocks Google Analytics API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/google-analytics_analytics.js\n *\n * **Example**\n * ```\n * ||google-analytics.com/analytics.js$script,redirect=google-analytics\n * ```\n */\nexport function GoogleAnalytics(source) {\n // eslint-disable-next-line func-names\n const Tracker = function () { }; // constructor\n const proto = Tracker.prototype;\n proto.get = noopFunc;\n proto.set = noopFunc;\n proto.send = noopFunc;\n\n const googleAnalyticsName = window.GoogleAnalyticsObject || 'ga';\n function ga() {\n const len = arguments.length;\n if (len === 0) {\n return;\n }\n // eslint-disable-next-line prefer-rest-params\n const lastArg = arguments[len - 1];\n if (typeof lastArg !== 'object'\n || lastArg === null\n || typeof lastArg.hitCallback !== 'function'\n ) {\n return;\n }\n\n try {\n lastArg.hitCallback();\n // eslint-disable-next-line no-empty\n } catch (ex) { }\n }\n\n ga.create = () => new Tracker();\n ga.getByName = noopNull;\n ga.getAll = noopArray;\n ga.remove = noopFunc;\n ga.loaded = true;\n window[googleAnalyticsName] = ga;\n\n const { dataLayer } = window;\n if (dataLayer instanceof Object\n && dataLayer.hide instanceof Object\n && typeof dataLayer.hide.end === 'function'\n ) {\n dataLayer.hide.end();\n }\n\n hit(source);\n}\n\nGoogleAnalytics.names = [\n 'google-analytics',\n 'ubo-google-analytics_analytics.js',\n 'google-analytics_analytics.js',\n];\n\nGoogleAnalytics.injections = [\n hit,\n noopFunc,\n noopNull,\n noopArray,\n];\n","/* eslint-disable no-underscore-dangle */\nimport { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect google-analytics-ga\n *\n * @description\n * Mocks old Google Analytics API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/google-analytics_ga.js\n *\n * **Example**\n * ```\n * ||google-analytics.com/ga.js$script,redirect=google-analytics-ga\n * ```\n */\nexport function GoogleAnalyticsGa(source) {\n // Gaq constructor\n function Gaq() { }\n\n Gaq.prototype.Na = noopFunc;\n Gaq.prototype.O = noopFunc;\n Gaq.prototype.Sa = noopFunc;\n Gaq.prototype.Ta = noopFunc;\n Gaq.prototype.Va = noopFunc;\n Gaq.prototype._createAsyncTracker = noopFunc;\n Gaq.prototype._getAsyncTracker = noopFunc;\n Gaq.prototype._getPlugin = noopFunc;\n Gaq.prototype.push = (data) => {\n if (typeof data === 'function') {\n data();\n return;\n }\n if (Array.isArray(data) === false) {\n return;\n }\n // https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiDomainDirectory#_gat.GA_Tracker_._link\n if (data[0] === '_link' && typeof data[1] === 'string') {\n window.location.assign(data[1]);\n }\n // https://github.com/gorhill/uBlock/issues/2162\n if (data[0] === '_set' && data[1] === 'hitCallback' && typeof data[2] === 'function') {\n data[2]();\n }\n };\n\n const gaq = new Gaq();\n const asyncTrackers = window._gaq || [];\n if (Array.isArray(asyncTrackers)) {\n while (asyncTrackers[0]) {\n gaq.push(asyncTrackers.shift());\n }\n }\n // eslint-disable-next-line no-multi-assign\n window._gaq = gaq.qf = gaq;\n\n // Gat constructor\n function Gat() { }\n\n // Mock tracker api\n const api = [\n '_addIgnoredOrganic', '_addIgnoredRef', '_addItem', '_addOrganic',\n '_addTrans', '_clearIgnoredOrganic', '_clearIgnoredRef', '_clearOrganic',\n '_cookiePathCopy', '_deleteCustomVar', '_getName', '_setAccount',\n '_getAccount', '_getClientInfo', '_getDetectFlash', '_getDetectTitle',\n '_getLinkerUrl', '_getLocalGifPath', '_getServiceMode', '_getVersion',\n '_getVisitorCustomVar', '_initData', '_link', '_linkByPost',\n '_setAllowAnchor', '_setAllowHash', '_setAllowLinker', '_setCampContentKey',\n '_setCampMediumKey', '_setCampNameKey', '_setCampNOKey', '_setCampSourceKey',\n '_setCampTermKey', '_setCampaignCookieTimeout', '_setCampaignTrack', '_setClientInfo',\n '_setCookiePath', '_setCookiePersistence', '_setCookieTimeout', '_setCustomVar',\n '_setDetectFlash', '_setDetectTitle', '_setDomainName', '_setLocalGifPath',\n '_setLocalRemoteServerMode', '_setLocalServerMode', '_setReferrerOverride', '_setRemoteServerMode',\n '_setSampleRate', '_setSessionTimeout', '_setSiteSpeedSampleRate', '_setSessionCookieTimeout',\n '_setVar', '_setVisitorCookieTimeout', '_trackEvent', '_trackPageLoadTime',\n '_trackPageview', '_trackSocial', '_trackTiming', '_trackTrans',\n '_visitCode',\n ];\n const tracker = api.reduce((res, funcName) => {\n res[funcName] = noopFunc;\n return res;\n }, {});\n tracker._getLinkerUrl = (a) => a;\n\n Gat.prototype._anonymizeIP = noopFunc;\n Gat.prototype._createTracker = noopFunc;\n Gat.prototype._forceSSL = noopFunc;\n Gat.prototype._getPlugin = noopFunc;\n Gat.prototype._getTracker = () => tracker;\n Gat.prototype._getTrackerByName = () => tracker;\n Gat.prototype._getTrackers = noopFunc;\n Gat.prototype.aa = noopFunc;\n Gat.prototype.ab = noopFunc;\n Gat.prototype.hb = noopFunc;\n Gat.prototype.la = noopFunc;\n Gat.prototype.oa = noopFunc;\n Gat.prototype.pa = noopFunc;\n Gat.prototype.u = noopFunc;\n\n const gat = new Gat();\n window._gat = gat;\n\n hit(source);\n}\n\nGoogleAnalyticsGa.names = [\n 'google-analytics-ga',\n 'ubo-google-analytics_ga.js',\n 'google-analytics_ga.js',\n];\n\nGoogleAnalyticsGa.injections = [hit, noopFunc];\n","import { hit } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @redirect googlesyndication-adsbygoogle\n *\n * @description\n * Mocks Google AdSense API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/googlesyndication_adsbygoogle.js\n *\n * **Example**\n * ```\n * ||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=googlesyndication-adsbygoogle\n * ```\n */\n/* eslint-enable max-len */\nexport function GoogleSyndicationAdsByGoogle(source) {\n window.adsbygoogle = window.adsbygoogle || {\n length: 0,\n loaded: true,\n push() {\n this.length += 1;\n },\n };\n const adElems = document.querySelectorAll('.adsbygoogle');\n const css = 'height:1px!important;max-height:1px!important;max-width:1px!important;width:1px!important;';\n const statusAttrName = 'data-adsbygoogle-status';\n const ASWIFT_IFRAME_MARKER = 'aswift_';\n const GOOGLE_ADS_IFRAME_MARKER = 'google_ads_iframe_';\n\n let executed = false;\n for (let i = 0; i < adElems.length; i += 1) {\n const adElemChildNodes = adElems[i].childNodes;\n const childNodesQuantity = adElemChildNodes.length;\n // childNodes of .adsbygoogle can be defined if scriptlet was executed before\n // so we should check are that childNodes exactly defined by us\n // TODO: remake after scriptlets context developing in 1.3\n let areIframesDefined = false;\n if (childNodesQuantity > 0) {\n // it should be only 2 child iframes if scriptlet was executed\n areIframesDefined = childNodesQuantity === 2\n // the first of child nodes should be aswift iframe\n && adElemChildNodes[0].tagName.toLowerCase() === 'iframe'\n && adElemChildNodes[0].id.indexOf(ASWIFT_IFRAME_MARKER) > -1\n // the second of child nodes should be google_ads iframe\n && adElemChildNodes[1].tagName.toLowerCase() === 'iframe'\n && adElemChildNodes[1].id.indexOf(GOOGLE_ADS_IFRAME_MARKER) > -1;\n }\n\n if (!areIframesDefined) {\n // here we do the job if scriptlet has not been executed earlier\n adElems[i].setAttribute(statusAttrName, 'done');\n\n const aswiftIframe = document.createElement('iframe');\n aswiftIframe.id = `${ASWIFT_IFRAME_MARKER}${i + 1}`;\n aswiftIframe.style = css;\n adElems[i].appendChild(aswiftIframe);\n\n const googleadsIframe = document.createElement('iframe');\n googleadsIframe.id = `${GOOGLE_ADS_IFRAME_MARKER}${i + 1}`;\n googleadsIframe.style = css;\n adElems[i].appendChild(googleadsIframe);\n\n executed = true;\n }\n }\n\n if (executed) {\n hit(source);\n }\n}\n\nGoogleSyndicationAdsByGoogle.names = [\n 'googlesyndication-adsbygoogle',\n 'ubo-googlesyndication_adsbygoogle.js',\n 'googlesyndication_adsbygoogle.js',\n];\n\nGoogleSyndicationAdsByGoogle.injections = [\n hit,\n];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect googletagmanager-gtm\n *\n * @description\n * Mocks Google Tag Manager API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/googletagmanager_gtm.js\n *\n * **Example**\n * ```\n * ||googletagmanager.com/gtm.js$script,redirect=googletagmanager-gtm\n * ```\n */\nexport function GoogleTagManagerGtm(source) {\n window.ga = window.ga || noopFunc;\n const { dataLayer, google_optimize } = window; // eslint-disable-line camelcase\n if (dataLayer instanceof Object === false) {\n return;\n }\n\n if (dataLayer.hide instanceof Object && typeof dataLayer.hide.end === 'function') {\n dataLayer.hide.end();\n }\n\n if (typeof dataLayer.push === 'function') {\n dataLayer.push = (data) => {\n if (data instanceof Object && typeof data.eventCallback === 'function') {\n setTimeout(data.eventCallback, 1);\n }\n };\n }\n\n // https://github.com/AdguardTeam/Scriptlets/issues/81\n if (google_optimize instanceof Object && typeof google_optimize.get === 'function') { // eslint-disable-line camelcase\n const googleOptimizeWrapper = { };\n googleOptimizeWrapper.get = noopFunc;\n\n window.google_optimize = googleOptimizeWrapper;\n }\n\n hit(source);\n}\n\nGoogleTagManagerGtm.names = [\n 'googletagmanager-gtm',\n 'ubo-googletagmanager_gtm.js',\n 'googletagmanager_gtm.js',\n];\n\nGoogleTagManagerGtm.injections = [hit, noopFunc];\n","import {\n hit, noopFunc, noopThis, noopNull, noopArray, noopStr,\n} from '../helpers';\n\n/**\n * @redirect googletagservices-gpt\n *\n * @description\n * Mocks Google Publisher Tag API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/googletagservices_gpt.js\n *\n * **Example**\n * ```\n * ||googletagservices.com/tag/js/gpt.js$script,redirect=googletagservices-gpt\n * ```\n */\nexport function GoogleTagServicesGpt(source) {\n const companionAdsService = {\n addEventListener: noopThis,\n enableSyncLoading: noopFunc,\n setRefreshUnfilledSlots: noopFunc,\n };\n const contentService = {\n addEventListener: noopThis,\n setContent: noopFunc,\n };\n function PassbackSlot() { } // constructor\n\n PassbackSlot.prototype.display = noopFunc;\n PassbackSlot.prototype.get = noopNull;\n PassbackSlot.prototype.set = noopThis;\n PassbackSlot.prototype.setClickUrl = noopThis;\n PassbackSlot.prototype.setTagForChildDirectedTreatment = noopThis;\n PassbackSlot.prototype.setTargeting = noopThis;\n PassbackSlot.prototype.updateTargetingFromMap = noopThis;\n\n function SizeMappingBuilder() { } // constructor\n SizeMappingBuilder.prototype.addSize = noopThis;\n SizeMappingBuilder.prototype.build = noopNull;\n\n function Slot() { } // constructor\n Slot.prototype.addService = noopThis;\n Slot.prototype.clearCategoryExclusions = noopThis;\n Slot.prototype.clearTargeting = noopThis;\n Slot.prototype.defineSizeMapping = noopThis;\n Slot.prototype.get = noopNull;\n Slot.prototype.getAdUnitPath = noopArray;\n Slot.prototype.getAttributeKeys = noopArray;\n Slot.prototype.getCategoryExclusions = noopArray;\n Slot.prototype.getDomId = noopStr;\n Slot.prototype.getSlotElementId = noopStr;\n Slot.prototype.getSlotId = noopThis;\n Slot.prototype.getTargeting = noopArray;\n Slot.prototype.getTargetingKeys = noopArray;\n Slot.prototype.set = noopThis;\n Slot.prototype.setCategoryExclusion = noopThis;\n Slot.prototype.setClickUrl = noopThis;\n Slot.prototype.setCollapseEmptyDiv = noopThis;\n Slot.prototype.setTargeting = noopThis;\n\n const pubAdsService = {\n addEventListener: noopThis,\n clear: noopFunc,\n clearCategoryExclusions: noopThis,\n clearTagForChildDirectedTreatment: noopThis,\n clearTargeting: noopThis,\n collapseEmptyDivs: noopFunc,\n defineOutOfPagePassback() { return new PassbackSlot(); },\n definePassback() { return new PassbackSlot(); },\n disableInitialLoad: noopFunc,\n display: noopFunc,\n enableAsyncRendering: noopFunc,\n enableSingleRequest: noopFunc,\n enableSyncRendering: noopFunc,\n enableVideoAds: noopFunc,\n get: noopNull,\n getAttributeKeys: noopArray,\n getTargeting: noopFunc,\n getTargetingKeys: noopArray,\n getSlots: noopArray,\n refresh: noopFunc,\n set: noopThis,\n setCategoryExclusion: noopThis,\n setCentering: noopFunc,\n setCookieOptions: noopThis,\n setForceSafeFrame: noopThis,\n setLocation: noopThis,\n setPublisherProvidedId: noopThis,\n setRequestNonPersonalizedAds: noopThis,\n setSafeFrameConfig: noopThis,\n setTagForChildDirectedTreatment: noopThis,\n setTargeting: noopThis,\n setVideoContent: noopThis,\n updateCorrelator: noopFunc,\n };\n\n const { googletag = {} } = window;\n const { cmd = [] } = googletag;\n\n googletag.apiReady = true;\n googletag.cmd = [];\n googletag.cmd.push = (a) => {\n try {\n a();\n // eslint-disable-next-line no-empty\n } catch (ex) { }\n return 1;\n };\n googletag.companionAds = () => companionAdsService;\n googletag.content = () => contentService;\n googletag.defineOutOfPageSlot = () => new Slot();\n googletag.defineSlot = () => new Slot();\n googletag.destroySlots = noopFunc;\n googletag.disablePublisherConsole = noopFunc;\n googletag.display = noopFunc;\n googletag.enableServices = noopFunc;\n googletag.getVersion = noopStr;\n googletag.pubads = () => pubAdsService;\n googletag.pubadsReady = true;\n googletag.setAdIframeTitle = noopFunc;\n googletag.sizeMapping = () => new SizeMappingBuilder();\n\n window.googletag = googletag;\n while (cmd.length !== 0) {\n googletag.cmd.push(cmd.shift());\n }\n\n hit(source);\n}\n\nGoogleTagServicesGpt.names = [\n 'googletagservices-gpt',\n 'ubo-googletagservices_gpt.js',\n 'googletagservices_gpt.js',\n];\n\nGoogleTagServicesGpt.injections = [\n hit,\n noopFunc,\n noopThis,\n noopNull,\n noopArray,\n noopStr,\n];\n","import { hit } from '../helpers';\n\n/**\n * @redirect scorecardresearch-beacon\n *\n * @description\n * Mocks Scorecard Research API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/scorecardresearch_beacon.js\n *\n * **Example**\n * ```\n * ||sb.scorecardresearch.com/beacon.js$script,redirect=scorecardresearch-beacon\n * ```\n */\nexport function ScoreCardResearchBeacon(source) {\n window.COMSCORE = {\n purge() {\n // eslint-disable-next-line no-underscore-dangle\n window._comscore = [];\n },\n beacon() {},\n };\n hit(source);\n}\n\nScoreCardResearchBeacon.names = [\n 'scorecardresearch-beacon',\n 'ubo-scorecardresearch_beacon.js',\n 'scorecardresearch_beacon.js',\n];\n\nScoreCardResearchBeacon.injections = [\n hit,\n];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect metrika-yandex-tag\n *\n * @description\n * Mocks Yandex Metrika API.\n * https://yandex.ru/support/metrica/objects/method-reference.html\n *\n * **Example**\n * ```\n * ||mc.yandex.ru/metrika/tag.js$script,redirect=metrika-yandex-tag\n * ```\n */\nexport function metrikaYandexTag(source) {\n const asyncCallbackFromOptions = (param, options = {}) => {\n let { callback } = options;\n const { ctx } = options;\n if (typeof callback === 'function') {\n callback = ctx !== undefined ? callback.bind(ctx) : callback;\n setTimeout(() => callback());\n }\n };\n\n const init = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/addfileextension.html\n */\n const addFileExtension = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/extlink.html\n */\n const extLink = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/file.html\n */\n const file = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/get-client-id.html\n * @param {Function} cb\n */\n const getClientID = (cb) => {\n setTimeout(cb(null));\n };\n\n /**\n * https://yandex.ru/support/metrica/objects/hit.html\n */\n const hitFunc = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/notbounce.html\n */\n const notBounce = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/params-method.html\n */\n const params = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/reachgoal.html\n * @param {string} target\n * @param {Object} params\n * @param {Function} callback\n * @param {any} ctx\n */\n const reachGoal = (target, params, callback, ctx) => {\n asyncCallbackFromOptions(null, { callback, ctx });\n };\n\n /**\n * https://yandex.ru/support/metrica/objects/set-user-id.html\n */\n const setUserID = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/user-params.html\n */\n const userParams = noopFunc;\n\n const api = {\n init,\n addFileExtension,\n extLink,\n file,\n getClientID,\n hit: hitFunc,\n notBounce,\n params,\n reachGoal,\n setUserID,\n userParams,\n };\n\n function ym(id, funcName, ...args) {\n return api[funcName] && api[funcName](...args);\n }\n\n window.ym = ym;\n\n hit(source);\n}\n\nmetrikaYandexTag.names = [\n 'metrika-yandex-tag',\n];\n\nmetrikaYandexTag.injections = [hit, noopFunc];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect metrika-yandex-watch\n *\n * @description\n * Mocks the old Yandex Metrika API.\n * https://yandex.ru/support/metrica/objects/_method-reference.html\n *\n * **Example**\n * ```\n * ||mc.yandex.ru/metrika/watch.js$script,redirect=metrika-yandex-watch\n * ```\n */\nexport function metrikaYandexWatch(source) {\n const cbName = 'yandex_metrika_callbacks';\n\n /**\n * Gets callback and its context from options and call it in async way\n * @param {Object} options Yandex Metrika API options\n */\n const asyncCallbackFromOptions = (options = {}) => {\n let { callback } = options;\n const { ctx } = options;\n if (typeof callback === 'function') {\n callback = ctx !== undefined ? callback.bind(ctx) : callback;\n setTimeout(() => callback());\n }\n };\n\n function Metrika() { } // constructor\n\n // Methods without options\n Metrika.prototype.addFileExtension = noopFunc;\n Metrika.prototype.getClientID = noopFunc;\n Metrika.prototype.setUserID = noopFunc;\n Metrika.prototype.userParams = noopFunc;\n\n // Methods with options\n // The order of arguments should be kept in according to API\n Metrika.prototype.extLink = (url, options) => {\n asyncCallbackFromOptions(options);\n };\n Metrika.prototype.file = (url, options) => {\n asyncCallbackFromOptions(options);\n };\n Metrika.prototype.hit = (url, options) => {\n asyncCallbackFromOptions(options);\n };\n Metrika.prototype.reachGoal = (target, params, cb, ctx) => {\n asyncCallbackFromOptions({ callback: cb, ctx });\n };\n Metrika.prototype.notBounce = asyncCallbackFromOptions;\n\n if (window.Ya) {\n window.Ya.Metrika = Metrika;\n } else {\n window.Ya = { Metrika };\n }\n\n if (window[cbName] && Array.isArray(window[cbName])) {\n window[cbName].forEach((func) => {\n if (typeof func === 'function') {\n func();\n }\n });\n }\n\n hit(source);\n}\n\nmetrikaYandexWatch.names = [\n 'metrika-yandex-watch',\n];\n\nmetrikaYandexWatch.injections = [hit, noopFunc];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect amazon-apstag\n *\n * @description\n * Mocks Amazon's apstag.js\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/f842ab6d3c1cf0394f95d27092bf59627262da40/src/web_accessible_resources/amazon_apstag.js\n *\n * **Example**\n * ```\n * ||amazon-adsystem.com/aax2/apstag.js$script,redirect=amazon-apstag\n * ```\n */\nexport function AmazonApstag(source) {\n const apstagWrapper = {\n fetchBids(a, b) {\n if (typeof b === 'function') {\n b([]);\n }\n },\n init: noopFunc,\n setDisplayBids: noopFunc,\n targetingKeys: noopFunc,\n };\n\n window.apstag = apstagWrapper;\n\n hit(source);\n}\n\nAmazonApstag.names = [\n 'amazon-apstag',\n 'ubo-amazon_apstag.js',\n 'amazon_apstag.js',\n];\n\nAmazonApstag.injections = [hit, noopFunc];\n","import {\n attachDependencies,\n addCall,\n wrapInNonameFunc,\n passSourceAndProps,\n} from '../helpers/injector';\n\nimport validator from '../helpers/validator';\n\nimport {\n convertUboRedirectToAdg,\n convertAbpRedirectToAdg,\n convertRedirectToAdg,\n convertAdgRedirectToUbo,\n} from '../helpers/converter';\n\nimport * as redirectsList from './redirectsList';\n\n/**\n * Finds redirect resource by it's name\n * @param {string} name - redirect name\n */\nconst getRedirectByName = (name) => {\n const redirects = Object.keys(redirectsList).map((key) => redirectsList[key]);\n return redirects.find((r) => r.names && r.names.indexOf(name) > -1);\n};\n\n/**\n * @typedef {Object} Source - redirect properties\n * @property {string} name redirect name\n * @property {Array} args Arguments for redirect function\n * @property {'extension'|'test'} [engine] -\n * Defines the final form of redirect string presentation\n * @property {boolean} [verbose] flag to enable printing to console debug information\n */\n\n/**\n * Returns redirect code by param\n * @param {Source} source\n * @returns {string} redirect code\n */\nconst getRedirectCode = (source) => {\n const redirect = getRedirectByName(source.name);\n let result = attachDependencies(redirect);\n result = addCall(redirect, result);\n\n // redirect code for different sources is checked in tests\n // so it should be just a code without any source and props passed\n result = source.engine === 'test'\n ? wrapInNonameFunc(result)\n : passSourceAndProps(source, result);\n\n return result;\n};\n\nexport const redirectsCjs = {\n getCode: getRedirectCode,\n isAdgRedirectRule: validator.isAdgRedirectRule,\n isValidAdgRedirectRule: validator.isValidAdgRedirectRule,\n isAdgRedirectCompatibleWithUbo: validator.isAdgRedirectCompatibleWithUbo,\n isUboRedirectCompatibleWithAdg: validator.isUboRedirectCompatibleWithAdg,\n isAbpRedirectCompatibleWithAdg: validator.isAbpRedirectCompatibleWithAdg,\n convertUboRedirectToAdg,\n convertAbpRedirectToAdg,\n convertRedirectToAdg,\n convertAdgRedirectToUbo,\n};\n","import { redirectsCjs } from '../redirects';\n\nimport {\n attachDependencies,\n addCall,\n passSourceAndProps,\n wrapInNonameFunc,\n} from '../helpers/injector';\n\nimport validator from '../helpers/validator';\n\nimport {\n isValidScriptletRule,\n convertUboScriptletToAdg,\n convertAbpSnippetToAdg,\n convertScriptletToAdg,\n convertAdgScriptletToUbo,\n} from '../helpers/converter';\n\n/**\n * @typedef {Object} Source - scriptlet properties\n * @property {string} name Scriptlet name\n * @property {Array} args Arguments for scriptlet function\n * @property {'extension'|'corelibs'|'test'} engine -\n * Defines the final form of scriptlet string presentation\n * @property {string} [version]\n * @property {boolean} [verbose] flag to enable printing to console debug information\n * @property {string} [ruleText] Source rule text is used for debugging purposes\n * @property {string} [domainName] domain name where scriptlet is applied; for debugging purposes\n */\n\n/**\n * Returns scriptlet code by param\n * @param {Source} source\n * @returns {string} scriptlet code\n */\nfunction getScriptletCode(source) {\n if (!validator.isValidScriptletName(source.name)) {\n return null;\n }\n\n const scriptlet = validator.getScriptletByName(source.name);\n let result = attachDependencies(scriptlet);\n result = addCall(scriptlet, result);\n result = source.engine === 'corelibs' || source.engine === 'test'\n ? wrapInNonameFunc(result)\n : passSourceAndProps(source, result);\n return result;\n}\n\n/**\n * Scriptlets variable\n *\n * @returns {Object} object with methods:\n * `invoke` method receives one argument with `Source` type\n * `validate` method receives one argument with `String` type\n */\nconst scriptletsObject = (() => ({\n invoke: getScriptletCode,\n isValidScriptletName: validator.isValidScriptletName,\n isValidScriptletRule,\n isAdgScriptletRule: validator.isAdgScriptletRule,\n isUboScriptletRule: validator.isUboScriptletRule,\n isAbpSnippetRule: validator.isAbpSnippetRule,\n convertUboToAdg: convertUboScriptletToAdg,\n convertAbpToAdg: convertAbpSnippetToAdg,\n convertScriptletToAdg,\n convertAdgToUbo: convertAdgScriptletToUbo,\n redirects: redirectsCjs,\n}))();\n\nexport default scriptletsObject;\n","import scriptletsObject from './index';\n\n/**\n * Add module exports to be used as node package\n */\nmodule.exports = scriptletsObject;\n"],"names":["randomId","Math","random","toString","substr","setPropertyAccess","object","property","descriptor","currentDescriptor","Object","getOwnPropertyDescriptor","configurable","defineProperty","getPropertyInChain","base","chain","addProp","pos","indexOf","prop","slice","own","undefined","escapeRegExp","str","replace","toRegExp","length","RegExp","escaped","getBeforeRegExp","rx","index","search","substring","startsWith","prefix","endsWith","substringAfter","separator","substringBefore","wrapInSingleQuotes","getStringInBraces","firstIndex","lastIndex","lastIndexOf","createOnErrorHandler","rid","nativeOnError","window","onerror","onError","error","Function","args","apply","noopFunc","noopNull","trueFunc","falseFunc","noopThis","noopArray","noopStr","hit","source","message","verbose","log","console","bind","trace","ruleText","domainName","AG_SCRIPTLET_MARKER","UBO_SCRIPTLET_MARKER","ruleStartIndex","rulePart","LOG_MARKER","e","__debug","observeDOMChanges","callback","observeAttrs","attrsToObserv","throttle","method","delay","wait","savedArgs","wrapper","setTimeout","THROTTLE_DELAY_MS","observer","MutationObserver","callbackWrapper","connect","observe","document","documentElement","childList","subtree","attributes","attributeFilter","disconnect","matchStackTrace","stackRegexp","stackTrace","refinedStackTrace","split","map","line","trim","join","test","attachDependencies","scriptlet","injections","reduce","accum","dep","dependencies","name","addCall","code","passSourceAndProps","sourceString","JSON","stringify","argsString","params","wrapInNonameFunc","_arrayWithHoles","arr","Array","isArray","_iterableToArrayLimit","i","Symbol","iterator","_arr","_n","_d","_e","_i","_s","next","done","push","value","err","_arrayLikeToArray","len","arr2","_unsupportedIterableToArray","o","minLen","arrayLikeToArray","n","prototype","call","constructor","from","_nonIterableRest","TypeError","_slicedToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_defineProperty","obj","key","enumerable","writable","iterateWithTransitions","iterable","transitions","init","state","keys","ADG_SCRIPTLET_MASK","wordSaver","strs","saveSymb","s","saveStr","getAll","parseRule","TRANSITION","OPENED","PARAM","CLOSED","opened","rule","sep","char","transition","symb","Error","param","saver","preIndex","before","abortOnPropertyRead","stack","abort","ReferenceError","setChainPropAccess","owner","chainInfo","setter","a","get","set","names","abortOnPropertyWrite","preventSetTimeout","match","nativeTimeout","nativeIsNaN","Number","isNaN","shouldLog","INVERT_MARKER","isNotMatch","isNotDelay","parseInt","timeoutWrapper","timeout","shouldPrevent","preventSetInterval","nativeInterval","setInterval","intervalWrapper","interval","preventWindowOpen","replacement","nativeOpen","open","openWrapper","result","isProp","propertyPart","propertyName","propertyValue","resObj","abortCurrentInlineScript","searchRegexp","getCurrentScript","currentScript","scripts","getElementsByTagName","ourScript","scriptEl","content","textContent","textContentGetter","Node","HTMLScriptElement","props","propIndex","baseName","currentValue","setConstant","constantValue","parseFloat","abs","canceled","mustCancel","removeCookie","regex","removeCookieFromHost","cookieName","hostName","cookieSpec","domain1","domain2","path","expiration","cookie","rmCookie","forEach","cookieStr","hostParts","location","hostname","addEventListener","preventAddEventListener","eventSearch","funcSearch","eventSearchRegexp","funcSearchRegexp","nativeAddEventListener","EventTarget","addEventListenerWrapper","eventName","funcToCheck","preventBab","nativeSetTimeout","babRegex","signatures","check","tokens","j","token","found","nativeEval","eval","bodyEl","body","style","removeProperty","el","getElementById","parentNode","removeChild","nowebrtc","RTCPeerConnection","webkitRTCPeerConnection","rtcReplacement","config","close","createDataChannel","createOffer","setRemoteDescription","rtc","b","send","logAddEventListener","callbackToLog","logEval","evalWrapper","nativeFunction","FunctionWrapper","create","noeval","preventEvalIf","payload","preventFab","Fab","clearEvent","emitEvent","on","onDetected","onNotDetected","setOption","fab","getSetFab","getsetfab","hasOwnProperty","FuckAdBlock","BlockAdBlock","SniffAdBlock","fuckAdBlock","blockAdBlock","sniffAdBlock","setPopadsDummy","PopAds","popns","defineProperties","preventPopadsNet","throwError","preventAdfly","isDigit","data","handler","encodedURL","evenChars","oddChars","charAt","ii","temp","decodedURL","atob","stop","onbeforeunload","href","val","applyHandler","debugOnPropertyRead","debugOnPropertyWrite","debugCurrentInlineScript","removeAttr","attrs","selector","rmattr","nodes","querySelectorAll","removed","node","attr","removeAttribute","removeClass","classNames","selectors","className","removeClassHandler","Set","foundedNodes","add","elements","element","classList","contains","remove","CLASS_ATTR_NAME","disableNewtabLinks","ev","target","localName","hasAttribute","stopPropagation","preventDefault","adjustSetInterval","boost","nativeIsFinite","isFinite","cb","d","adjustSetTimeout","dirString","times","dir","dirWrapper","jsonPrune","propsToRemove","requiredInitialProps","prunePaths","needlePaths","isPruningNeeded","root","needlePath","details","nestedPropName","pop","nativeParse","parse","parseWrapper","r","ownerObj","preventRequestAnimationFrame","nativeRequestAnimationFrame","requestAnimationFrame","doNotMatch","rafWrapper","logMessage","setCookie","valueToSet","pathToSet","cookieData","encodeURIComponent","JS_RULE_MARKER","COMMENT_MARKER","isComment","UBO_SCRIPTLET_MASK_REG","UBO_SCRIPTLET_MASK_1","UBO_SCRIPTLET_MASK_2","UBO_SCRIPTLET_EXCEPTION_MASK_1","UBO_SCRIPTLET_EXCEPTION_MASK_2","ABP_SCRIPTLET_MASK","ABP_SCRIPTLET_EXCEPTION_MASK","ADG_CSS_MASK_REG","isAdgScriptletRule","isUboScriptletRule","isAbpSnippetRule","getScriptletByName","scriptlets","scriptletsList","find","isValidScriptletName","ADG_UBO_REDIRECT_MARKER","ABP_REDIRECT_MARKER","VALID_SOURCE_TYPES","validAdgRedirects","redirects","filter","adg","objFromEntries","pairs","output","acc","uboToAdgCompatibility","ubo","abpToAdgCompatibility","abp","adgToUboCompatibility","validAdgCompatibility","REDIRECT_RULE_TYPES","VALID_ADG","marker","compatibility","ADG","UBO","ABP","parseModifiers","getRedirectName","ruleModifiers","redirectNamePart","isAdgRedirectRule","MARKER_IN_BASE_PART_MASK","isRedirectRuleByType","type","redirectName","isValidAdgRedirectRule","isAdgRedirectCompatibleWithUbo","isUboRedirectCompatibleWithAdg","isAbpRedirectCompatibleWithAdg","hasValidContentType","sourceType","validator","_iterableToArray","iter","_toArray","iterableToArray","ADGUARD_SCRIPTLET_MASK_REG","ADGUARD_SCRIPTLET_TEMPLATE","ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE","UBO_SCRIPTLET_TEMPLATE","UBO_SCRIPTLET_EXCEPTION_TEMPLATE","UBO_ALIAS_NAME_MARKER","UBO_XHR_TYPE","ADG_XHR_TYPE","getSentences","reg","replacePlaceholders","convertUboScriptletToAdg","domains","mask","template","arg","outputArg","adgRule","convertAbpSnippetToAdg","SEMICOLON_DIVIDER","convertScriptletToAdg","convertAdgScriptletToUbo","res","parsedName","parsedParams","adgScriptletObject","scriptletList","aliases","uboAlias","alias","includes","uboName","uboRule","isValidScriptletRule","input","rulesArray","isValid","parsedRule","convertUboRedirectToAdg","firstPartOfRule","uboModifiers","adgModifiers","adgName","convertAbpRedirectToAdg","abpModifiers","abpName","convertRedirectToAdg","convertAdgRedirectToUbo","GoogleAnalytics","Tracker","proto","googleAnalyticsName","GoogleAnalyticsObject","ga","arguments","lastArg","hitCallback","ex","getByName","loaded","dataLayer","hide","end","GoogleAnalyticsGa","Gaq","Na","O","Sa","Ta","Va","_createAsyncTracker","_getAsyncTracker","_getPlugin","assign","gaq","asyncTrackers","_gaq","shift","qf","Gat","api","tracker","funcName","_getLinkerUrl","_anonymizeIP","_createTracker","_forceSSL","_getTracker","_getTrackerByName","_getTrackers","aa","ab","hb","la","oa","pa","u","gat","_gat","GoogleSyndicationAdsByGoogle","adsbygoogle","adElems","css","statusAttrName","ASWIFT_IFRAME_MARKER","GOOGLE_ADS_IFRAME_MARKER","executed","adElemChildNodes","childNodes","childNodesQuantity","areIframesDefined","tagName","toLowerCase","id","setAttribute","aswiftIframe","createElement","appendChild","googleadsIframe","GoogleTagManagerGtm","google_optimize","eventCallback","googleOptimizeWrapper","GoogleTagServicesGpt","companionAdsService","enableSyncLoading","setRefreshUnfilledSlots","contentService","setContent","PassbackSlot","display","setClickUrl","setTagForChildDirectedTreatment","setTargeting","updateTargetingFromMap","SizeMappingBuilder","addSize","build","Slot","addService","clearCategoryExclusions","clearTargeting","defineSizeMapping","getAdUnitPath","getAttributeKeys","getCategoryExclusions","getDomId","getSlotElementId","getSlotId","getTargeting","getTargetingKeys","setCategoryExclusion","setCollapseEmptyDiv","pubAdsService","clear","clearTagForChildDirectedTreatment","collapseEmptyDivs","defineOutOfPagePassback","definePassback","disableInitialLoad","enableAsyncRendering","enableSingleRequest","enableSyncRendering","enableVideoAds","getSlots","refresh","setCentering","setCookieOptions","setForceSafeFrame","setLocation","setPublisherProvidedId","setRequestNonPersonalizedAds","setSafeFrameConfig","setVideoContent","updateCorrelator","googletag","cmd","apiReady","companionAds","defineOutOfPageSlot","defineSlot","destroySlots","disablePublisherConsole","enableServices","getVersion","pubads","pubadsReady","setAdIframeTitle","sizeMapping","ScoreCardResearchBeacon","COMSCORE","purge","_comscore","beacon","metrikaYandexTag","asyncCallbackFromOptions","options","ctx","addFileExtension","extLink","file","getClientID","hitFunc","notBounce","reachGoal","setUserID","userParams","ym","metrikaYandexWatch","cbName","Metrika","url","Ya","func","AmazonApstag","apstagWrapper","fetchBids","setDisplayBids","targetingKeys","apstag","getRedirectByName","redirectsList","getRedirectCode","redirect","engine","redirectsCjs","getCode","getScriptletCode","scriptletsObject","invoke","convertUboToAdg","convertAbpToAdg","convertAdgToUbo","module","exports"],"mappings":"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"} \ No newline at end of file diff --git a/dist/redirects.js b/dist/redirects.js index bfefe0e25..b5c4247cc 100644 --- a/dist/redirects.js +++ b/dist/redirects.js @@ -49,23 +49,18 @@ var Redirects = (function () { var createClass = _createClass; function isNothing(subject) { - return (typeof subject === 'undefined') || (subject === null); + return typeof subject === 'undefined' || subject === null; } - function isObject(subject) { - return (typeof subject === 'object') && (subject !== null); + return typeof subject === 'object' && subject !== null; } - function toArray(sequence) { - if (Array.isArray(sequence)) return sequence; - else if (isNothing(sequence)) return []; - - return [ sequence ]; + if (Array.isArray(sequence)) return sequence;else if (isNothing(sequence)) return []; + return [sequence]; } - function extend(target, source) { var index, length, key, sourceKeys; @@ -81,9 +76,9 @@ var Redirects = (function () { return target; } - function repeat(string, count) { - var result = '', cycle; + var result = '', + cycle; for (cycle = 0; cycle < count; cycle += 1) { result += string; @@ -92,26 +87,23 @@ var Redirects = (function () { return result; } - function isNegativeZero(number) { - return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number); + return number === 0 && Number.NEGATIVE_INFINITY === 1 / number; } - - var isNothing_1 = isNothing; - var isObject_1 = isObject; - var toArray_1 = toArray; - var repeat_1 = repeat; + var isNothing_1 = isNothing; + var isObject_1 = isObject; + var toArray_1 = toArray; + var repeat_1 = repeat; var isNegativeZero_1 = isNegativeZero; - var extend_1 = extend; - + var extend_1 = extend; var common = { - isNothing: isNothing_1, - isObject: isObject_1, - toArray: toArray_1, - repeat: repeat_1, - isNegativeZero: isNegativeZero_1, - extend: extend_1 + isNothing: isNothing_1, + isObject: isObject_1, + toArray: toArray_1, + repeat: repeat_1, + isNegativeZero: isNegativeZero_1, + extend: extend_1 }; // YAML error class. http://stackoverflow.com/questions/8458984 @@ -119,31 +111,26 @@ var Redirects = (function () { function YAMLException(reason, mark) { // Super constructor Error.call(this); - this.name = 'YAMLException'; this.reason = reason; this.mark = mark; - this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : ''); + this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : ''); // Include stack trace in error object - // Include stack trace in error object if (Error.captureStackTrace) { // Chrome and NodeJS Error.captureStackTrace(this, this.constructor); } else { // FF, IE 10+ and Safari 6+. Fallback for others - this.stack = (new Error()).stack || ''; + this.stack = new Error().stack || ''; } - } + } // Inherit from Error - // Inherit from Error YAMLException.prototype = Object.create(Error.prototype); YAMLException.prototype.constructor = YAMLException; - YAMLException.prototype.toString = function toString(compact) { var result = this.name + ': '; - result += this.reason || '(unknown reason)'; if (!compact && this.mark) { @@ -153,32 +140,28 @@ var Redirects = (function () { return result; }; - var exception = YAMLException; function Mark(name, buffer, position, line, column) { - this.name = name; - this.buffer = buffer; + this.name = name; + this.buffer = buffer; this.position = position; - this.line = line; - this.column = column; + this.line = line; + this.column = column; } - Mark.prototype.getSnippet = function getSnippet(indent, maxLength) { var head, start, tail, end, snippet; - if (!this.buffer) return null; - indent = indent || 4; maxLength = maxLength || 75; - head = ''; start = this.position; - while (start > 0 && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) { + while (start > 0 && "\0\r\n\x85\u2028\u2029".indexOf(this.buffer.charAt(start - 1)) === -1) { start -= 1; - if (this.position - start > (maxLength / 2 - 1)) { + + if (this.position - start > maxLength / 2 - 1) { head = ' ... '; start += 5; break; @@ -188,9 +171,10 @@ var Redirects = (function () { tail = ''; end = this.position; - while (end < this.buffer.length && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(end)) === -1) { + while (end < this.buffer.length && "\0\r\n\x85\u2028\u2029".indexOf(this.buffer.charAt(end)) === -1) { end += 1; - if (end - this.position > (maxLength / 2 - 1)) { + + if (end - this.position > maxLength / 2 - 1) { tail = ' ... '; end -= 5; break; @@ -198,14 +182,12 @@ var Redirects = (function () { } snippet = this.buffer.slice(start, end); - - return common.repeat(' ', indent) + head + snippet + tail + '\n' + - common.repeat(' ', indent + this.position - start + head.length) + '^'; + return common.repeat(' ', indent) + head + snippet + tail + '\n' + common.repeat(' ', indent + this.position - start + head.length) + '^'; }; - Mark.prototype.toString = function toString(compact) { - var snippet, where = ''; + var snippet, + where = ''; if (this.name) { where += 'in "' + this.name + '" '; @@ -224,25 +206,10 @@ var Redirects = (function () { return where; }; - var mark = Mark; - var TYPE_CONSTRUCTOR_OPTIONS = [ - 'kind', - 'resolve', - 'construct', - 'instanceOf', - 'predicate', - 'represent', - 'defaultStyle', - 'styleAliases' - ]; - - var YAML_NODE_KINDS = [ - 'scalar', - 'sequence', - 'mapping' - ]; + var TYPE_CONSTRUCTOR_OPTIONS = ['kind', 'resolve', 'construct', 'instanceOf', 'predicate', 'represent', 'defaultStyle', 'styleAliases']; + var YAML_NODE_KINDS = ['scalar', 'sequence', 'mapping']; function compileStyleAliases(map) { var result = {}; @@ -260,21 +227,26 @@ var Redirects = (function () { function Type(tag, options) { options = options || {}; - Object.keys(options).forEach(function (name) { if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { throw new exception('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); } - }); + }); // TODO: Add tag format check. - // TODO: Add tag format check. - this.tag = tag; - this.kind = options['kind'] || null; - this.resolve = options['resolve'] || function () { return true; }; - this.construct = options['construct'] || function (data) { return data; }; - this.instanceOf = options['instanceOf'] || null; - this.predicate = options['predicate'] || null; - this.represent = options['represent'] || null; + this.tag = tag; + this.kind = options['kind'] || null; + + this.resolve = options['resolve'] || function () { + return true; + }; + + this.construct = options['construct'] || function (data) { + return data; + }; + + this.instanceOf = options['instanceOf'] || null; + this.predicate = options['predicate'] || null; + this.represent = options['represent'] || null; this.defaultStyle = options['defaultStyle'] || null; this.styleAliases = compileStyleAliases(options['styleAliases'] || null); @@ -288,40 +260,35 @@ var Redirects = (function () { /*eslint-disable max-len*/ - - - - function compileList(schema, name, result) { var exclude = []; - schema.include.forEach(function (includedSchema) { result = compileList(includedSchema, name, result); }); - schema[name].forEach(function (currentType) { result.forEach(function (previousType, previousIndex) { if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) { exclude.push(previousIndex); } }); - result.push(currentType); }); - return result.filter(function (type, index) { return exclude.indexOf(index) === -1; }); } - - function compileMap(/* lists... */) { + function compileMap() + /* lists... */ + { var result = { - scalar: {}, - sequence: {}, - mapping: {}, - fallback: {} - }, index, length; + scalar: {}, + sequence: {}, + mapping: {}, + fallback: {} + }, + index, + length; function collectType(type) { result[type.kind][type.tag] = result['fallback'][type.tag] = type; @@ -330,30 +297,26 @@ var Redirects = (function () { for (index = 0, length = arguments.length; index < length; index += 1) { arguments[index].forEach(collectType); } + return result; } - function Schema(definition) { - this.include = definition.include || []; + this.include = definition.include || []; this.implicit = definition.implicit || []; this.explicit = definition.explicit || []; - this.implicit.forEach(function (type) { if (type.loadKind && type.loadKind !== 'scalar') { throw new exception('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); } }); - this.compiledImplicit = compileList(this, 'implicit', []); this.compiledExplicit = compileList(this, 'explicit', []); - this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit); + this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit); } - Schema.DEFAULT = null; - Schema.create = function createSchema() { var schemas, types; @@ -375,11 +338,15 @@ var Redirects = (function () { schemas = common.toArray(schemas); types = common.toArray(types); - if (!schemas.every(function (schema) { return schema instanceof Schema; })) { + if (!schemas.every(function (schema) { + return schema instanceof Schema; + })) { throw new exception('Specified list of super schemas (or a single Schema object) contains a non-Schema object.'); } - if (!types.every(function (type$1) { return type$1 instanceof type; })) { + if (!types.every(function (type$1) { + return type$1 instanceof type; + })) { throw new exception('Specified list of YAML types (or a single Type object) contains a non-Type object.'); } @@ -389,39 +356,37 @@ var Redirects = (function () { }); }; - var schema = Schema; var str = new type('tag:yaml.org,2002:str', { kind: 'scalar', - construct: function (data) { return data !== null ? data : ''; } + construct: function construct(data) { + return data !== null ? data : ''; + } }); var seq = new type('tag:yaml.org,2002:seq', { kind: 'sequence', - construct: function (data) { return data !== null ? data : []; } + construct: function construct(data) { + return data !== null ? data : []; + } }); var map = new type('tag:yaml.org,2002:map', { kind: 'mapping', - construct: function (data) { return data !== null ? data : {}; } + construct: function construct(data) { + return data !== null ? data : {}; + } }); var failsafe = new schema({ - explicit: [ - str, - seq, - map - ] + explicit: [str, seq, map] }); function resolveYamlNull(data) { if (data === null) return true; - var max = data.length; - - return (max === 1 && data === '~') || - (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL')); + return max === 1 && data === '~' || max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'); } function constructYamlNull() { @@ -438,27 +403,30 @@ var Redirects = (function () { construct: constructYamlNull, predicate: isNull, represent: { - canonical: function () { return '~'; }, - lowercase: function () { return 'null'; }, - uppercase: function () { return 'NULL'; }, - camelcase: function () { return 'Null'; } + canonical: function canonical() { + return '~'; + }, + lowercase: function lowercase() { + return 'null'; + }, + uppercase: function uppercase() { + return 'NULL'; + }, + camelcase: function camelcase() { + return 'Null'; + } }, defaultStyle: 'lowercase' }); function resolveYamlBoolean(data) { if (data === null) return false; - var max = data.length; - - return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || - (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE')); + return max === 4 && (data === 'true' || data === 'True' || data === 'TRUE') || max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'); } function constructYamlBoolean(data) { - return data === 'true' || - data === 'True' || - data === 'TRUE'; + return data === 'true' || data === 'True' || data === 'TRUE'; } function isBoolean(object) { @@ -471,40 +439,60 @@ var Redirects = (function () { construct: constructYamlBoolean, predicate: isBoolean, represent: { - lowercase: function (object) { return object ? 'true' : 'false'; }, - uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; }, - camelcase: function (object) { return object ? 'True' : 'False'; } + lowercase: function lowercase(object) { + return object ? 'true' : 'false'; + }, + uppercase: function uppercase(object) { + return object ? 'TRUE' : 'FALSE'; + }, + camelcase: function camelcase(object) { + return object ? 'True' : 'False'; + } }, defaultStyle: 'lowercase' }); function isHexCode(c) { - return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) || - ((0x41/* A */ <= c) && (c <= 0x46/* F */)) || - ((0x61/* a */ <= c) && (c <= 0x66/* f */)); + return 0x30 + /* 0 */ + <= c && c <= 0x39 + /* 9 */ + || 0x41 + /* A */ + <= c && c <= 0x46 + /* F */ + || 0x61 + /* a */ + <= c && c <= 0x66 + /* f */ + ; } function isOctCode(c) { - return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */)); + return 0x30 + /* 0 */ + <= c && c <= 0x37 + /* 7 */ + ; } function isDecCode(c) { - return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)); + return 0x30 + /* 0 */ + <= c && c <= 0x39 + /* 9 */ + ; } function resolveYamlInteger(data) { if (data === null) return false; - var max = data.length, index = 0, hasDigits = false, ch; - if (!max) return false; + ch = data[index]; // sign - ch = data[index]; - - // sign if (ch === '-' || ch === '+') { ch = data[++index]; } @@ -512,9 +500,7 @@ var Redirects = (function () { if (ch === '0') { // 0 if (index + 1 === max) return true; - ch = data[++index]; - - // base 2, base 8, base 16 + ch = data[++index]; // base 2, base 8, base 16 if (ch === 'b') { // base 2 @@ -526,10 +512,10 @@ var Redirects = (function () { if (ch !== '0' && ch !== '1') return false; hasDigits = true; } + return hasDigits && ch !== '_'; } - if (ch === 'x') { // base 16 index++; @@ -540,46 +526,51 @@ var Redirects = (function () { if (!isHexCode(data.charCodeAt(index))) return false; hasDigits = true; } + return hasDigits && ch !== '_'; - } + } // base 8 + - // base 8 for (; index < max; index++) { ch = data[index]; if (ch === '_') continue; if (!isOctCode(data.charCodeAt(index))) return false; hasDigits = true; } + return hasDigits && ch !== '_'; - } + } // base 10 (except 0) or base 60 + // value should not start with `_`; - // base 10 (except 0) or base 60 - // value should not start with `_`; if (ch === '_') return false; for (; index < max; index++) { ch = data[index]; if (ch === '_') continue; if (ch === ':') break; + if (!isDecCode(data.charCodeAt(index))) { return false; } + hasDigits = true; - } + } // Should have digits and should not end with `_` + - // Should have digits and should not end with `_` - if (!hasDigits || ch === '_') return false; + if (!hasDigits || ch === '_') return false; // if !base60 - done; - // if !base60 - done; - if (ch !== ':') return true; + if (ch !== ':') return true; // base60 almost not used, no needs to optimize - // base60 almost not used, no needs to optimize return /^(:[0-5]?[0-9])+$/.test(data.slice(index)); } function constructYamlInteger(data) { - var value = data, sign = 1, ch, base, digits = []; + var value = data, + sign = 1, + ch, + base, + digits = []; if (value.indexOf('_') !== -1) { value = value.replace(/_/g, ''); @@ -605,25 +596,20 @@ var Redirects = (function () { value.split(':').forEach(function (v) { digits.unshift(parseInt(v, 10)); }); - value = 0; base = 1; - digits.forEach(function (d) { - value += (d * base); + value += d * base; base *= 60; }); - return sign * value; - } return sign * parseInt(value, 10); } function isInteger(object) { - return (Object.prototype.toString.call(object)) === '[object Number]' && - (object % 1 === 0 && !common.isNegativeZero(object)); + return Object.prototype.toString.call(object) === '[object Number]' && object % 1 === 0 && !common.isNegativeZero(object); } var int_1 = new type('tag:yaml.org,2002:int', { @@ -632,41 +618,44 @@ var Redirects = (function () { construct: constructYamlInteger, predicate: isInteger, represent: { - binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); }, - octal: function (obj) { return obj >= 0 ? '0' + obj.toString(8) : '-0' + obj.toString(8).slice(1); }, - decimal: function (obj) { return obj.toString(10); }, + binary: function binary(obj) { + return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); + }, + octal: function octal(obj) { + return obj >= 0 ? '0' + obj.toString(8) : '-0' + obj.toString(8).slice(1); + }, + decimal: function decimal(obj) { + return obj.toString(10); + }, + /* eslint-disable max-len */ - hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); } + hexadecimal: function hexadecimal(obj) { + return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); + } }, defaultStyle: 'decimal', styleAliases: { - binary: [ 2, 'bin' ], - octal: [ 8, 'oct' ], - decimal: [ 10, 'dec' ], - hexadecimal: [ 16, 'hex' ] + binary: [2, 'bin'], + octal: [8, 'oct'], + decimal: [10, 'dec'], + hexadecimal: [16, 'hex'] } }); - var YAML_FLOAT_PATTERN = new RegExp( - // 2.5e4, 2.5 and integers - '^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' + - // .2e4, .2 - // special case, seems not from spec - '|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' + - // 20:59 - '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*' + - // .inf - '|[-+]?\\.(?:inf|Inf|INF)' + - // .nan - '|\\.(?:nan|NaN|NAN))$'); + var YAML_FLOAT_PATTERN = new RegExp( // 2.5e4, 2.5 and integers + '^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' + // .2e4, .2 + // special case, seems not from spec + '|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' + // 20:59 + '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*' + // .inf + '|[-+]?\\.(?:inf|Inf|INF)' + // .nan + '|\\.(?:nan|NaN|NAN))$'); function resolveYamlFloat(data) { if (data === null) return false; - if (!YAML_FLOAT_PATTERN.test(data) || - // Quick hack to not allow integers end with `_` - // Probably should update regexp & check speed - data[data.length - 1] === '_') { + if (!YAML_FLOAT_PATTERN.test(data) || // Quick hack to not allow integers end with `_` + // Probably should update regexp & check speed + data[data.length - 1] === '_') { return false; } @@ -675,9 +664,8 @@ var Redirects = (function () { function constructYamlFloat(data) { var value, sign, base, digits; - - value = data.replace(/_/g, '').toLowerCase(); - sign = value[0] === '-' ? -1 : 1; + value = data.replace(/_/g, '').toLowerCase(); + sign = value[0] === '-' ? -1 : 1; digits = []; if ('+-'.indexOf(value[0]) >= 0) { @@ -685,31 +673,25 @@ var Redirects = (function () { } if (value === '.inf') { - return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; - + return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; } else if (value === '.nan') { return NaN; - } else if (value.indexOf(':') >= 0) { value.split(':').forEach(function (v) { digits.unshift(parseFloat(v, 10)); }); - value = 0.0; base = 1; - digits.forEach(function (d) { value += d * base; base *= 60; }); - return sign * value; - } + return sign * parseFloat(value, 10); } - var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; function representYamlFloat(object, style) { @@ -717,37 +699,49 @@ var Redirects = (function () { if (isNaN(object)) { switch (style) { - case 'lowercase': return '.nan'; - case 'uppercase': return '.NAN'; - case 'camelcase': return '.NaN'; + case 'lowercase': + return '.nan'; + + case 'uppercase': + return '.NAN'; + + case 'camelcase': + return '.NaN'; } } else if (Number.POSITIVE_INFINITY === object) { switch (style) { - case 'lowercase': return '.inf'; - case 'uppercase': return '.INF'; - case 'camelcase': return '.Inf'; + case 'lowercase': + return '.inf'; + + case 'uppercase': + return '.INF'; + + case 'camelcase': + return '.Inf'; } } else if (Number.NEGATIVE_INFINITY === object) { switch (style) { - case 'lowercase': return '-.inf'; - case 'uppercase': return '-.INF'; - case 'camelcase': return '-.Inf'; + case 'lowercase': + return '-.inf'; + + case 'uppercase': + return '-.INF'; + + case 'camelcase': + return '-.Inf'; } } else if (common.isNegativeZero(object)) { return '-0.0'; } - res = object.toString(10); - - // JS stringifier can build scientific format without dots: 5e-100, + res = object.toString(10); // JS stringifier can build scientific format without dots: 5e-100, // while YAML requres dot: 5.e-100. Fix it with simple hack return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res; } function isFloat(object) { - return (Object.prototype.toString.call(object) === '[object Number]') && - (object % 1 !== 0 || common.isNegativeZero(object)); + return Object.prototype.toString.call(object) === '[object Number]' && (object % 1 !== 0 || common.isNegativeZero(object)); } var float_1 = new type('tag:yaml.org,2002:float', { @@ -760,39 +754,28 @@ var Redirects = (function () { }); var json = new schema({ - include: [ - failsafe - ], - implicit: [ - _null, - bool, - int_1, - float_1 - ] + include: [failsafe], + implicit: [_null, bool, int_1, float_1] }); var core = new schema({ - include: [ - json - ] + include: [json] }); - var YAML_DATE_REGEXP = new RegExp( - '^([0-9][0-9][0-9][0-9])' + // [1] year - '-([0-9][0-9])' + // [2] month - '-([0-9][0-9])$'); // [3] day - - var YAML_TIMESTAMP_REGEXP = new RegExp( - '^([0-9][0-9][0-9][0-9])' + // [1] year - '-([0-9][0-9]?)' + // [2] month - '-([0-9][0-9]?)' + // [3] day - '(?:[Tt]|[ \\t]+)' + // ... - '([0-9][0-9]?)' + // [4] hour - ':([0-9][0-9])' + // [5] minute - ':([0-9][0-9])' + // [6] second - '(?:\\.([0-9]*))?' + // [7] fraction - '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour - '(?::([0-9][0-9]))?))?$'); // [11] tz_minute + var YAML_DATE_REGEXP = new RegExp('^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9])' + // [2] month + '-([0-9][0-9])$'); // [3] day + + var YAML_TIMESTAMP_REGEXP = new RegExp('^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9]?)' + // [2] month + '-([0-9][0-9]?)' + // [3] day + '(?:[Tt]|[ \\t]+)' + // ... + '([0-9][0-9]?)' + // [4] hour + ':([0-9][0-9])' + // [5] minute + ':([0-9][0-9])' + // [6] second + '(?:\\.([0-9]*))?' + // [7] fraction + '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour + '(?::([0-9][0-9]))?))?$'); // [11] tz_minute function resolveYamlTimestamp(data) { if (data === null) return false; @@ -802,55 +785,65 @@ var Redirects = (function () { } function constructYamlTimestamp(data) { - var match, year, month, day, hour, minute, second, fraction = 0, - delta = null, tz_hour, tz_minute, date; - + var match, + year, + month, + day, + hour, + minute, + second, + fraction = 0, + delta = null, + tz_hour, + tz_minute, + date; match = YAML_DATE_REGEXP.exec(data); if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); + if (match === null) throw new Error('Date resolve error'); // match: [1] year [2] month [3] day - if (match === null) throw new Error('Date resolve error'); + year = +match[1]; + month = +match[2] - 1; // JS month starts with 0 - // match: [1] year [2] month [3] day + day = +match[3]; - year = +(match[1]); - month = +(match[2]) - 1; // JS month starts with 0 - day = +(match[3]); - - if (!match[4]) { // no hour + if (!match[4]) { + // no hour return new Date(Date.UTC(year, month, day)); - } + } // match: [4] hour [5] minute [6] second [7] fraction - // match: [4] hour [5] minute [6] second [7] fraction - hour = +(match[4]); - minute = +(match[5]); - second = +(match[6]); + hour = +match[4]; + minute = +match[5]; + second = +match[6]; if (match[7]) { fraction = match[7].slice(0, 3); - while (fraction.length < 3) { // milli-seconds + + while (fraction.length < 3) { + // milli-seconds fraction += '0'; } + fraction = +fraction; - } + } // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute - // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute if (match[9]) { - tz_hour = +(match[10]); + tz_hour = +match[10]; tz_minute = +(match[11] || 0); delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds + if (match[9] === '-') delta = -delta; } date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); - if (delta) date.setTime(date.getTime() - delta); - return date; } - function representYamlTimestamp(object /*, style*/) { + function representYamlTimestamp(object + /*, style*/ + ) { return object.toISOString(); } @@ -872,84 +865,79 @@ var Redirects = (function () { }); function commonjsRequire () { - throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs'); + throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs'); } /*eslint-disable no-bitwise*/ + var NodeBuffer; try { // A trick for browserified version, to not include `Buffer` shim var _require = commonjsRequire; NodeBuffer = _require('buffer').Buffer; - } catch (__) {} - + } catch (__) {} // [ 64, 65, 66 ] -> [ padding, CR, LF ] - - // [ 64, 65, 66 ] -> [ padding, CR, LF ] var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r'; - function resolveYamlBinary(data) { if (data === null) return false; + var code, + idx, + bitlen = 0, + max = data.length, + map = BASE64_MAP; // Convert one by one. - var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP; - - // Convert one by one. for (idx = 0; idx < max; idx++) { - code = map.indexOf(data.charAt(idx)); + code = map.indexOf(data.charAt(idx)); // Skip CR/LF - // Skip CR/LF - if (code > 64) continue; + if (code > 64) continue; // Fail on illegal characters - // Fail on illegal characters if (code < 0) return false; - bitlen += 6; - } + } // If there are any bits left, source was corrupted + - // If there are any bits left, source was corrupted - return (bitlen % 8) === 0; + return bitlen % 8 === 0; } function constructYamlBinary(data) { - var idx, tailbits, - input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan - max = input.length, + var idx, + tailbits, + input = data.replace(/[\r\n=]/g, ''), + // remove CR/LF & padding to simplify scan + max = input.length, map = BASE64_MAP, bits = 0, - result = []; - - // Collect by 6*4 bits (3 bytes) + result = []; // Collect by 6*4 bits (3 bytes) for (idx = 0; idx < max; idx++) { - if ((idx % 4 === 0) && idx) { - result.push((bits >> 16) & 0xFF); - result.push((bits >> 8) & 0xFF); + if (idx % 4 === 0 && idx) { + result.push(bits >> 16 & 0xFF); + result.push(bits >> 8 & 0xFF); result.push(bits & 0xFF); } - bits = (bits << 6) | map.indexOf(input.charAt(idx)); - } + bits = bits << 6 | map.indexOf(input.charAt(idx)); + } // Dump tail - // Dump tail - tailbits = (max % 4) * 6; + tailbits = max % 4 * 6; if (tailbits === 0) { - result.push((bits >> 16) & 0xFF); - result.push((bits >> 8) & 0xFF); + result.push(bits >> 16 & 0xFF); + result.push(bits >> 8 & 0xFF); result.push(bits & 0xFF); } else if (tailbits === 18) { - result.push((bits >> 10) & 0xFF); - result.push((bits >> 2) & 0xFF); + result.push(bits >> 10 & 0xFF); + result.push(bits >> 2 & 0xFF); } else if (tailbits === 12) { - result.push((bits >> 4) & 0xFF); - } + result.push(bits >> 4 & 0xFF); + } // Wrap into Buffer for NodeJS and leave Array for browser + - // Wrap into Buffer for NodeJS and leave Array for browser if (NodeBuffer) { // Support node 6.+ Buffer API when available return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result); @@ -958,41 +946,43 @@ var Redirects = (function () { return result; } - function representYamlBinary(object /*, style*/) { - var result = '', bits = 0, idx, tail, + function representYamlBinary(object + /*, style*/ + ) { + var result = '', + bits = 0, + idx, + tail, max = object.length, - map = BASE64_MAP; - - // Convert every three bytes to 4 ASCII characters. + map = BASE64_MAP; // Convert every three bytes to 4 ASCII characters. for (idx = 0; idx < max; idx++) { - if ((idx % 3 === 0) && idx) { - result += map[(bits >> 18) & 0x3F]; - result += map[(bits >> 12) & 0x3F]; - result += map[(bits >> 6) & 0x3F]; + if (idx % 3 === 0 && idx) { + result += map[bits >> 18 & 0x3F]; + result += map[bits >> 12 & 0x3F]; + result += map[bits >> 6 & 0x3F]; result += map[bits & 0x3F]; } bits = (bits << 8) + object[idx]; - } + } // Dump tail - // Dump tail tail = max % 3; if (tail === 0) { - result += map[(bits >> 18) & 0x3F]; - result += map[(bits >> 12) & 0x3F]; - result += map[(bits >> 6) & 0x3F]; + result += map[bits >> 18 & 0x3F]; + result += map[bits >> 12 & 0x3F]; + result += map[bits >> 6 & 0x3F]; result += map[bits & 0x3F]; } else if (tail === 2) { - result += map[(bits >> 10) & 0x3F]; - result += map[(bits >> 4) & 0x3F]; - result += map[(bits << 2) & 0x3F]; + result += map[bits >> 10 & 0x3F]; + result += map[bits >> 4 & 0x3F]; + result += map[bits << 2 & 0x3F]; result += map[64]; } else if (tail === 1) { - result += map[(bits >> 2) & 0x3F]; - result += map[(bits << 4) & 0x3F]; + result += map[bits >> 2 & 0x3F]; + result += map[bits << 4 & 0x3F]; result += map[64]; result += map[64]; } @@ -1013,31 +1003,31 @@ var Redirects = (function () { }); var _hasOwnProperty = Object.prototype.hasOwnProperty; - var _toString = Object.prototype.toString; + var _toString = Object.prototype.toString; function resolveYamlOmap(data) { if (data === null) return true; - - var objectKeys = [], index, length, pair, pairKey, pairHasKey, + var objectKeys = [], + index, + length, + pair, + pairKey, + pairHasKey, object = data; for (index = 0, length = object.length; index < length; index += 1) { pair = object[index]; pairHasKey = false; - if (_toString.call(pair) !== '[object Object]') return false; for (pairKey in pair) { if (_hasOwnProperty.call(pair, pairKey)) { - if (!pairHasKey) pairHasKey = true; - else return false; + if (!pairHasKey) pairHasKey = true;else return false; } } if (!pairHasKey) return false; - - if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey); - else return false; + if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);else return false; } return true; @@ -1057,22 +1047,20 @@ var Redirects = (function () { function resolveYamlPairs(data) { if (data === null) return true; - - var index, length, pair, keys, result, + var index, + length, + pair, + keys, + result, object = data; - result = new Array(object.length); for (index = 0, length = object.length; index < length; index += 1) { pair = object[index]; - if (_toString$1.call(pair) !== '[object Object]') return false; - keys = Object.keys(pair); - if (keys.length !== 1) return false; - - result[index] = [ keys[0], pair[keys[0]] ]; + result[index] = [keys[0], pair[keys[0]]]; } return true; @@ -1080,18 +1068,18 @@ var Redirects = (function () { function constructYamlPairs(data) { if (data === null) return []; - - var index, length, pair, keys, result, + var index, + length, + pair, + keys, + result, object = data; - result = new Array(object.length); for (index = 0, length = object.length; index < length; index += 1) { pair = object[index]; - keys = Object.keys(pair); - - result[index] = [ keys[0], pair[keys[0]] ]; + result[index] = [keys[0], pair[keys[0]]]; } return result; @@ -1107,8 +1095,8 @@ var Redirects = (function () { function resolveYamlSet(data) { if (data === null) return true; - - var key, object = data; + var key, + object = data; for (key in object) { if (_hasOwnProperty$1.call(object, key)) { @@ -1130,19 +1118,9 @@ var Redirects = (function () { }); var default_safe = new schema({ - include: [ - core - ], - implicit: [ - timestamp, - merge - ], - explicit: [ - binary, - omap, - pairs, - set - ] + include: [core], + implicit: [timestamp, merge], + explicit: [binary, omap, pairs, set] }); function resolveJavascriptUndefined() { @@ -1173,18 +1151,15 @@ var Redirects = (function () { function resolveJavascriptRegExp(data) { if (data === null) return false; if (data.length === 0) return false; - var regexp = data, - tail = /\/([gim]*)$/.exec(data), - modifiers = ''; - - // if regexp starts with '/' it can have modifiers and must be properly closed + tail = /\/([gim]*)$/.exec(data), + modifiers = ''; // if regexp starts with '/' it can have modifiers and must be properly closed // `/foo/gim` - modifiers tail can be maximum 3 chars + if (regexp[0] === '/') { if (tail) modifiers = tail[1]; + if (modifiers.length > 3) return false; // if expression starts with /, is should be properly terminated - if (modifiers.length > 3) return false; - // if expression starts with /, is should be properly terminated if (regexp[regexp.length - modifiers.length - 1] !== '/') return false; } @@ -1193,10 +1168,9 @@ var Redirects = (function () { function constructJavascriptRegExp(data) { var regexp = data, - tail = /\/([gim]*)$/.exec(data), - modifiers = ''; + tail = /\/([gim]*)$/.exec(data), + modifiers = ''; // `/foo/gim` - tail can be maximum 4 chars - // `/foo/gim` - tail can be maximum 4 chars if (regexp[0] === '/') { if (tail) modifiers = tail[1]; regexp = regexp.slice(1, regexp.length - modifiers.length - 1); @@ -1205,13 +1179,13 @@ var Redirects = (function () { return new RegExp(regexp, modifiers); } - function representJavascriptRegExp(object /*, style*/) { + function representJavascriptRegExp(object + /*, style*/ + ) { var result = '/' + object.source + '/'; - if (object.global) result += 'g'; if (object.multiline) result += 'm'; if (object.ignoreCase) result += 'i'; - return result; } @@ -1227,39 +1201,35 @@ var Redirects = (function () { represent: representJavascriptRegExp }); - var esprima; - - // Browserified version does not have esprima + var esprima; // Browserified version does not have esprima // // 1. For node.js just require module as deps // 2. For browser try to require mudule via external AMD system. // If not found - try to fallback to window.esprima. If not // found too - then fail to parse. // + try { // workaround to exclude package from browserify list. var _require$1 = commonjsRequire; esprima = _require$1('esprima'); } catch (_) { /* eslint-disable no-redeclare */ + /* global window */ if (typeof window !== 'undefined') esprima = window.esprima; } - - function resolveJavascriptFunction(data) { if (data === null) return false; try { var source = '(' + data + ')', - ast = esprima.parse(source, { range: true }); + ast = esprima.parse(source, { + range: true + }); - if (ast.type !== 'Program' || - ast.body.length !== 1 || - ast.body[0].type !== 'ExpressionStatement' || - (ast.body[0].expression.type !== 'ArrowFunctionExpression' && - ast.body[0].expression.type !== 'FunctionExpression')) { + if (ast.type !== 'Program' || ast.body.length !== 1 || ast.body[0].type !== 'ExpressionStatement' || ast.body[0].expression.type !== 'ArrowFunctionExpression' && ast.body[0].expression.type !== 'FunctionExpression') { return false; } @@ -1271,39 +1241,38 @@ var Redirects = (function () { function constructJavascriptFunction(data) { /*jslint evil:true*/ - var source = '(' + data + ')', - ast = esprima.parse(source, { range: true }), + ast = esprima.parse(source, { + range: true + }), params = [], body; - if (ast.type !== 'Program' || - ast.body.length !== 1 || - ast.body[0].type !== 'ExpressionStatement' || - (ast.body[0].expression.type !== 'ArrowFunctionExpression' && - ast.body[0].expression.type !== 'FunctionExpression')) { + if (ast.type !== 'Program' || ast.body.length !== 1 || ast.body[0].type !== 'ExpressionStatement' || ast.body[0].expression.type !== 'ArrowFunctionExpression' && ast.body[0].expression.type !== 'FunctionExpression') { throw new Error('Failed to resolve function'); } ast.body[0].expression.params.forEach(function (param) { params.push(param.name); }); - - body = ast.body[0].expression.body.range; - - // Esprima's ranges include the first '{' and the last '}' characters on + body = ast.body[0].expression.body.range; // Esprima's ranges include the first '{' and the last '}' characters on // function expressions. So cut them out. + if (ast.body[0].expression.body.type === 'BlockStatement') { /*eslint-disable no-new-func*/ return new Function(params, source.slice(body[0] + 1, body[1] - 1)); - } - // ES6 arrow functions can omit the BlockStatement. In that case, just return + } // ES6 arrow functions can omit the BlockStatement. In that case, just return // the body. + /*eslint-disable no-new-func*/ + + return new Function(params, 'return ' + source.slice(body[0], body[1])); } - function representJavascriptFunction(object /*, style*/) { + function representJavascriptFunction(object + /*, style*/ + ) { return object.toString(); } @@ -1320,82 +1289,93 @@ var Redirects = (function () { }); var default_full = schema.DEFAULT = new schema({ - include: [ - default_safe - ], - explicit: [ - _undefined, - regexp, - _function - ] + include: [default_safe], + explicit: [_undefined, regexp, _function] }); /*eslint-disable max-len,no-use-before-define*/ - - - - - - var _hasOwnProperty$2 = Object.prototype.hasOwnProperty; - - - var CONTEXT_FLOW_IN = 1; - var CONTEXT_FLOW_OUT = 2; - var CONTEXT_BLOCK_IN = 3; + var CONTEXT_FLOW_IN = 1; + var CONTEXT_FLOW_OUT = 2; + var CONTEXT_BLOCK_IN = 3; var CONTEXT_BLOCK_OUT = 4; - - - var CHOMPING_CLIP = 1; + var CHOMPING_CLIP = 1; var CHOMPING_STRIP = 2; - var CHOMPING_KEEP = 3; - - - var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; + var CHOMPING_KEEP = 3; + var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; - var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; - var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; - var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; - + var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; + var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; + var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; - function _class(obj) { return Object.prototype.toString.call(obj); } + function _class(obj) { + return Object.prototype.toString.call(obj); + } function is_EOL(c) { - return (c === 0x0A/* LF */) || (c === 0x0D/* CR */); + return c === 0x0A + /* LF */ + || c === 0x0D + /* CR */ + ; } function is_WHITE_SPACE(c) { - return (c === 0x09/* Tab */) || (c === 0x20/* Space */); + return c === 0x09 + /* Tab */ + || c === 0x20 + /* Space */ + ; } function is_WS_OR_EOL(c) { - return (c === 0x09/* Tab */) || - (c === 0x20/* Space */) || - (c === 0x0A/* LF */) || - (c === 0x0D/* CR */); + return c === 0x09 + /* Tab */ + || c === 0x20 + /* Space */ + || c === 0x0A + /* LF */ + || c === 0x0D + /* CR */ + ; } function is_FLOW_INDICATOR(c) { - return c === 0x2C/* , */ || - c === 0x5B/* [ */ || - c === 0x5D/* ] */ || - c === 0x7B/* { */ || - c === 0x7D/* } */; + return c === 0x2C + /* , */ + || c === 0x5B + /* [ */ + || c === 0x5D + /* ] */ + || c === 0x7B + /* { */ + || c === 0x7D + /* } */ + ; } function fromHexCode(c) { var lc; - if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + if (0x30 + /* 0 */ + <= c && c <= 0x39 + /* 9 */ + ) { return c - 0x30; } - /*eslint-disable no-bitwise*/ + + lc = c | 0x20; - if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) { + if (0x61 + /* a */ + <= lc && lc <= 0x66 + /* f */ + ) { return lc - 0x61 + 10; } @@ -1403,14 +1383,33 @@ var Redirects = (function () { } function escapedHexLen(c) { - if (c === 0x78/* x */) { return 2; } - if (c === 0x75/* u */) { return 4; } - if (c === 0x55/* U */) { return 8; } + if (c === 0x78 + /* x */ + ) { + return 2; + } + + if (c === 0x75 + /* u */ + ) { + return 4; + } + + if (c === 0x55 + /* U */ + ) { + return 8; + } + return 0; } function fromDecimalCode(c) { - if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + if (0x30 + /* 0 */ + <= c && c <= 0x39 + /* 9 */ + ) { return c - 0x30; } @@ -1419,67 +1418,80 @@ var Redirects = (function () { function simpleEscapeSequence(c) { /* eslint-disable indent */ - return (c === 0x30/* 0 */) ? '\x00' : - (c === 0x61/* a */) ? '\x07' : - (c === 0x62/* b */) ? '\x08' : - (c === 0x74/* t */) ? '\x09' : - (c === 0x09/* Tab */) ? '\x09' : - (c === 0x6E/* n */) ? '\x0A' : - (c === 0x76/* v */) ? '\x0B' : - (c === 0x66/* f */) ? '\x0C' : - (c === 0x72/* r */) ? '\x0D' : - (c === 0x65/* e */) ? '\x1B' : - (c === 0x20/* Space */) ? ' ' : - (c === 0x22/* " */) ? '\x22' : - (c === 0x2F/* / */) ? '/' : - (c === 0x5C/* \ */) ? '\x5C' : - (c === 0x4E/* N */) ? '\x85' : - (c === 0x5F/* _ */) ? '\xA0' : - (c === 0x4C/* L */) ? '\u2028' : - (c === 0x50/* P */) ? '\u2029' : ''; + return c === 0x30 + /* 0 */ + ? '\x00' : c === 0x61 + /* a */ + ? '\x07' : c === 0x62 + /* b */ + ? '\x08' : c === 0x74 + /* t */ + ? '\x09' : c === 0x09 + /* Tab */ + ? '\x09' : c === 0x6E + /* n */ + ? '\x0A' : c === 0x76 + /* v */ + ? '\x0B' : c === 0x66 + /* f */ + ? '\x0C' : c === 0x72 + /* r */ + ? '\x0D' : c === 0x65 + /* e */ + ? '\x1B' : c === 0x20 + /* Space */ + ? ' ' : c === 0x22 + /* " */ + ? '\x22' : c === 0x2F + /* / */ + ? '/' : c === 0x5C + /* \ */ + ? '\x5C' : c === 0x4E + /* N */ + ? '\x85' : c === 0x5F + /* _ */ + ? '\xA0' : c === 0x4C + /* L */ + ? "\u2028" : c === 0x50 + /* P */ + ? "\u2029" : ''; } function charFromCodepoint(c) { if (c <= 0xFFFF) { return String.fromCharCode(c); - } - // Encode UTF-16 surrogate pair + } // Encode UTF-16 surrogate pair // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF - return String.fromCharCode( - ((c - 0x010000) >> 10) + 0xD800, - ((c - 0x010000) & 0x03FF) + 0xDC00 - ); + + + return String.fromCharCode((c - 0x010000 >> 10) + 0xD800, (c - 0x010000 & 0x03FF) + 0xDC00); } var simpleEscapeCheck = new Array(256); // integer, for fast access + var simpleEscapeMap = new Array(256); + for (var i = 0; i < 256; i++) { simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; simpleEscapeMap[i] = simpleEscapeSequence(i); } - function State(input, options) { this.input = input; - - this.filename = options['filename'] || null; - this.schema = options['schema'] || default_full; + this.filename = options['filename'] || null; + this.schema = options['schema'] || default_full; this.onWarning = options['onWarning'] || null; - this.legacy = options['legacy'] || false; - this.json = options['json'] || false; - this.listener = options['listener'] || null; - + this.legacy = options['legacy'] || false; + this.json = options['json'] || false; + this.listener = options['listener'] || null; this.implicitTypes = this.schema.compiledImplicit; - this.typeMap = this.schema.compiledTypeMap; - - this.length = input.length; - this.position = 0; - this.line = 0; - this.lineStart = 0; + this.typeMap = this.schema.compiledTypeMap; + this.length = input.length; + this.position = 0; + this.line = 0; + this.lineStart = 0; this.lineIndent = 0; - this.documents = []; - /* this.version; this.checkLineBreaks; @@ -1489,14 +1501,10 @@ var Redirects = (function () { this.anchor; this.kind; this.result;*/ - } - function generateError(state, message) { - return new exception( - message, - new mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart))); + return new exception(message, new mark(state.filename, state.input, state.position, state.line, state.position - state.lineStart)); } function throwError(state, message) { @@ -1509,11 +1517,8 @@ var Redirects = (function () { } } - var directiveHandlers = { - YAML: function handleYamlDirective(state, name, args) { - var match, major, minor; if (state.version !== null) { @@ -1538,15 +1543,13 @@ var Redirects = (function () { } state.version = args[0]; - state.checkLineBreaks = (minor < 2); + state.checkLineBreaks = minor < 2; if (minor !== 1 && minor !== 2) { throwWarning(state, 'unsupported YAML version of the document'); } }, - TAG: function handleTagDirective(state, name, args) { - var handle, prefix; if (args.length !== 2) { @@ -1572,7 +1575,6 @@ var Redirects = (function () { } }; - function captureSegment(state, start, end, checkJson) { var _position, _length, _character, _result; @@ -1582,8 +1584,8 @@ var Redirects = (function () { if (checkJson) { for (_position = 0, _length = _result.length; _position < _length; _position += 1) { _character = _result.charCodeAt(_position); - if (!(_character === 0x09 || - (0x20 <= _character && _character <= 0x10FFFF))) { + + if (!(_character === 0x09 || 0x20 <= _character && _character <= 0x10FFFF)) { throwError(state, 'expected valid JSON character'); } } @@ -1615,11 +1617,10 @@ var Redirects = (function () { } function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) { - var index, quantity; - - // The output is a plain object here, so keys can only be strings. + var index, quantity; // The output is a plain object here, so keys can only be strings. // We need to convert keyNode to a string, but doing so can hang the process // (deeply nested arrays that explode exponentially using aliases). + if (Array.isArray(keyNode)) { keyNode = Array.prototype.slice.call(keyNode); @@ -1632,16 +1633,15 @@ var Redirects = (function () { keyNode[index] = '[object Object]'; } } - } - - // Avoid code execution in load() via toString property + } // Avoid code execution in load() via toString property // (still use its own toString for arrays, timestamps, // and whatever user schema extensions happen to have @@toStringTag) + + if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') { keyNode = '[object Object]'; } - keyNode = String(keyNode); if (_result === null) { @@ -1657,13 +1657,12 @@ var Redirects = (function () { mergeMappings(state, _result, valueNode, overridableKeys); } } else { - if (!state.json && - !_hasOwnProperty$2.call(overridableKeys, keyNode) && - _hasOwnProperty$2.call(_result, keyNode)) { + if (!state.json && !_hasOwnProperty$2.call(overridableKeys, keyNode) && _hasOwnProperty$2.call(_result, keyNode)) { state.line = startLine || state.line; state.position = startPos || state.position; throwError(state, 'duplicated mapping key'); } + _result[keyNode] = valueNode; delete overridableKeys[keyNode]; } @@ -1673,17 +1672,23 @@ var Redirects = (function () { function readLineBreak(state) { var ch; - ch = state.input.charCodeAt(state.position); - if (ch === 0x0A/* LF */) { - state.position++; - } else if (ch === 0x0D/* CR */) { - state.position++; - if (state.input.charCodeAt(state.position) === 0x0A/* LF */) { + if (ch === 0x0A + /* LF */ + ) { state.position++; - } - } else { + } else if (ch === 0x0D + /* CR */ + ) { + state.position++; + + if (state.input.charCodeAt(state.position) === 0x0A + /* LF */ + ) { + state.position++; + } + } else { throwError(state, 'a line break is expected'); } @@ -1700,20 +1705,27 @@ var Redirects = (function () { ch = state.input.charCodeAt(++state.position); } - if (allowComments && ch === 0x23/* # */) { - do { - ch = state.input.charCodeAt(++state.position); - } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0); - } + if (allowComments && ch === 0x23 + /* # */ + ) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0x0A + /* LF */ + && ch !== 0x0D + /* CR */ + && ch !== 0); + } if (is_EOL(ch)) { readLineBreak(state); - ch = state.input.charCodeAt(state.position); lineBreaks++; state.lineIndent = 0; - while (ch === 0x20/* Space */) { + while (ch === 0x20 + /* Space */ + ) { state.lineIndent++; ch = state.input.charCodeAt(++state.position); } @@ -1732,17 +1744,15 @@ var Redirects = (function () { function testDocumentSeparator(state) { var _position = state.position, ch; - - ch = state.input.charCodeAt(_position); - - // Condition state.position === state.lineStart is tested + ch = state.input.charCodeAt(_position); // Condition state.position === state.lineStart is tested // in parent on each call, for efficiency. No needs to test here again. - if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) && - ch === state.input.charCodeAt(_position + 1) && - ch === state.input.charCodeAt(_position + 2)) { + if ((ch === 0x2D + /* - */ + || ch === 0x2E + /* . */ + ) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) { _position += 3; - ch = state.input.charCodeAt(_position); if (ch === 0 || is_WS_OR_EOL(ch)) { @@ -1761,7 +1771,6 @@ var Redirects = (function () { } } - function readPlainScalar(state, nodeIndent, withinFlowCollection) { var preceding, following, @@ -1777,30 +1786,43 @@ var Redirects = (function () { ch = state.input.charCodeAt(state.position); - if (is_WS_OR_EOL(ch) || - is_FLOW_INDICATOR(ch) || - ch === 0x23/* # */ || - ch === 0x26/* & */ || - ch === 0x2A/* * */ || - ch === 0x21/* ! */ || - ch === 0x7C/* | */ || - ch === 0x3E/* > */ || - ch === 0x27/* ' */ || - ch === 0x22/* " */ || - ch === 0x25/* % */ || - ch === 0x40/* @ */ || - ch === 0x60/* ` */) { - return false; - } + if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || ch === 0x23 + /* # */ + || ch === 0x26 + /* & */ + || ch === 0x2A + /* * */ + || ch === 0x21 + /* ! */ + || ch === 0x7C + /* | */ + || ch === 0x3E + /* > */ + || ch === 0x27 + /* ' */ + || ch === 0x22 + /* " */ + || ch === 0x25 + /* % */ + || ch === 0x40 + /* @ */ + || ch === 0x60 + /* ` */ + ) { + return false; + } - if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) { - following = state.input.charCodeAt(state.position + 1); + if (ch === 0x3F + /* ? */ + || ch === 0x2D + /* - */ + ) { + following = state.input.charCodeAt(state.position + 1); - if (is_WS_OR_EOL(following) || - withinFlowCollection && is_FLOW_INDICATOR(following)) { - return false; + if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) { + return false; + } } - } state.kind = 'scalar'; state.result = ''; @@ -1808,25 +1830,24 @@ var Redirects = (function () { hasPendingContent = false; while (ch !== 0) { - if (ch === 0x3A/* : */) { - following = state.input.charCodeAt(state.position + 1); + if (ch === 0x3A + /* : */ + ) { + following = state.input.charCodeAt(state.position + 1); - if (is_WS_OR_EOL(following) || - withinFlowCollection && is_FLOW_INDICATOR(following)) { - break; - } - - } else if (ch === 0x23/* # */) { - preceding = state.input.charCodeAt(state.position - 1); - - if (is_WS_OR_EOL(preceding)) { - break; - } + if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) { + break; + } + } else if (ch === 0x23 + /* # */ + ) { + preceding = state.input.charCodeAt(state.position - 1); - } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || - withinFlowCollection && is_FLOW_INDICATOR(ch)) { + if (is_WS_OR_EOL(preceding)) { + break; + } + } else if (state.position === state.lineStart && testDocumentSeparator(state) || withinFlowCollection && is_FLOW_INDICATOR(ch)) { break; - } else if (is_EOL(ch)) { _line = state.line; _lineStart = state.lineStart; @@ -1872,14 +1893,14 @@ var Redirects = (function () { } function readSingleQuotedScalar(state, nodeIndent) { - var ch, - captureStart, captureEnd; - + var ch, captureStart, captureEnd; ch = state.input.charCodeAt(state.position); - if (ch !== 0x27/* ' */) { - return false; - } + if (ch !== 0x27 + /* ' */ + ) { + return false; + } state.kind = 'scalar'; state.result = ''; @@ -1887,26 +1908,27 @@ var Redirects = (function () { captureStart = captureEnd = state.position; while ((ch = state.input.charCodeAt(state.position)) !== 0) { - if (ch === 0x27/* ' */) { - captureSegment(state, captureStart, state.position, true); - ch = state.input.charCodeAt(++state.position); - - if (ch === 0x27/* ' */) { - captureStart = state.position; - state.position++; - captureEnd = state.position; - } else { - return true; - } + if (ch === 0x27 + /* ' */ + ) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); - } else if (is_EOL(ch)) { + if (ch === 0x27 + /* ' */ + ) { + captureStart = state.position; + state.position++; + captureEnd = state.position; + } else { + return true; + } + } else if (is_EOL(ch)) { captureSegment(state, captureStart, captureEnd, true); writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); captureStart = captureEnd = state.position; - } else if (state.position === state.lineStart && testDocumentSeparator(state)) { throwError(state, 'unexpected end of the document within a single quoted scalar'); - } else { state.position++; captureEnd = state.position; @@ -1917,18 +1939,14 @@ var Redirects = (function () { } function readDoubleQuotedScalar(state, nodeIndent) { - var captureStart, - captureEnd, - hexLength, - hexResult, - tmp, - ch; - + var captureStart, captureEnd, hexLength, hexResult, tmp, ch; ch = state.input.charCodeAt(state.position); - if (ch !== 0x22/* " */) { - return false; - } + if (ch !== 0x22 + /* " */ + ) { + return false; + } state.kind = 'scalar'; state.result = ''; @@ -1936,56 +1954,50 @@ var Redirects = (function () { captureStart = captureEnd = state.position; while ((ch = state.input.charCodeAt(state.position)) !== 0) { - if (ch === 0x22/* " */) { - captureSegment(state, captureStart, state.position, true); - state.position++; - return true; - - } else if (ch === 0x5C/* \ */) { - captureSegment(state, captureStart, state.position, true); - ch = state.input.charCodeAt(++state.position); - - if (is_EOL(ch)) { - skipSeparationSpace(state, false, nodeIndent); - - // TODO: rework to inline fn with no type cast? - } else if (ch < 256 && simpleEscapeCheck[ch]) { - state.result += simpleEscapeMap[ch]; + if (ch === 0x22 + /* " */ + ) { + captureSegment(state, captureStart, state.position, true); state.position++; + return true; + } else if (ch === 0x5C + /* \ */ + ) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); - } else if ((tmp = escapedHexLen(ch)) > 0) { - hexLength = tmp; - hexResult = 0; - - for (; hexLength > 0; hexLength--) { - ch = state.input.charCodeAt(++state.position); - - if ((tmp = fromHexCode(ch)) >= 0) { - hexResult = (hexResult << 4) + tmp; - - } else { - throwError(state, 'expected hexadecimal character'); + if (is_EOL(ch)) { + skipSeparationSpace(state, false, nodeIndent); // TODO: rework to inline fn with no type cast? + } else if (ch < 256 && simpleEscapeCheck[ch]) { + state.result += simpleEscapeMap[ch]; + state.position++; + } else if ((tmp = escapedHexLen(ch)) > 0) { + hexLength = tmp; + hexResult = 0; + + for (; hexLength > 0; hexLength--) { + ch = state.input.charCodeAt(++state.position); + + if ((tmp = fromHexCode(ch)) >= 0) { + hexResult = (hexResult << 4) + tmp; + } else { + throwError(state, 'expected hexadecimal character'); + } } - } - state.result += charFromCodepoint(hexResult); - - state.position++; - - } else { - throwError(state, 'unknown escape sequence'); - } - - captureStart = captureEnd = state.position; + state.result += charFromCodepoint(hexResult); + state.position++; + } else { + throwError(state, 'unknown escape sequence'); + } - } else if (is_EOL(ch)) { + captureStart = captureEnd = state.position; + } else if (is_EOL(ch)) { captureSegment(state, captureStart, captureEnd, true); writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); captureStart = captureEnd = state.position; - } else if (state.position === state.lineStart && testDocumentSeparator(state)) { throwError(state, 'unexpected end of the document within a double quoted scalar'); - } else { state.position++; captureEnd = state.position; @@ -1998,9 +2010,9 @@ var Redirects = (function () { function readFlowCollection(state, nodeIndent) { var readNext = true, _line, - _tag = state.tag, + _tag = state.tag, _result, - _anchor = state.anchor, + _anchor = state.anchor, following, terminator, isPair, @@ -2014,15 +2026,23 @@ var Redirects = (function () { ch = state.input.charCodeAt(state.position); - if (ch === 0x5B/* [ */) { - terminator = 0x5D;/* ] */ - isMapping = false; - _result = []; - } else if (ch === 0x7B/* { */) { - terminator = 0x7D;/* } */ - isMapping = true; - _result = {}; - } else { + if (ch === 0x5B + /* [ */ + ) { + terminator = 0x5D; + /* ] */ + + isMapping = false; + _result = []; + } else if (ch === 0x7B + /* { */ + ) { + terminator = 0x7D; + /* } */ + + isMapping = true; + _result = {}; + } else { return false; } @@ -2034,7 +2054,6 @@ var Redirects = (function () { while (ch !== 0) { skipSeparationSpace(state, true, nodeIndent); - ch = state.input.charCodeAt(state.position); if (ch === terminator) { @@ -2051,31 +2070,34 @@ var Redirects = (function () { keyTag = keyNode = valueNode = null; isPair = isExplicitPair = false; - if (ch === 0x3F/* ? */) { - following = state.input.charCodeAt(state.position + 1); + if (ch === 0x3F + /* ? */ + ) { + following = state.input.charCodeAt(state.position + 1); - if (is_WS_OR_EOL(following)) { - isPair = isExplicitPair = true; - state.position++; - skipSeparationSpace(state, true, nodeIndent); + if (is_WS_OR_EOL(following)) { + isPair = isExplicitPair = true; + state.position++; + skipSeparationSpace(state, true, nodeIndent); + } } - } _line = state.line; composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); keyTag = state.tag; keyNode = state.result; skipSeparationSpace(state, true, nodeIndent); - ch = state.input.charCodeAt(state.position); - if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) { - isPair = true; - ch = state.input.charCodeAt(++state.position); - skipSeparationSpace(state, true, nodeIndent); - composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); - valueNode = state.result; - } + if ((isExplicitPair || state.line === _line) && ch === 0x3A + /* : */ + ) { + isPair = true; + ch = state.input.charCodeAt(++state.position); + skipSeparationSpace(state, true, nodeIndent); + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + valueNode = state.result; + } if (isMapping) { storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode); @@ -2086,13 +2108,14 @@ var Redirects = (function () { } skipSeparationSpace(state, true, nodeIndent); - ch = state.input.charCodeAt(state.position); - if (ch === 0x2C/* , */) { - readNext = true; - ch = state.input.charCodeAt(++state.position); - } else { + if (ch === 0x2C + /* , */ + ) { + readNext = true; + ch = state.input.charCodeAt(++state.position); + } else { readNext = false; } } @@ -2103,22 +2126,25 @@ var Redirects = (function () { function readBlockScalar(state, nodeIndent) { var captureStart, folding, - chomping = CHOMPING_CLIP, + chomping = CHOMPING_CLIP, didReadContent = false, detectedIndent = false, - textIndent = nodeIndent, - emptyLines = 0, + textIndent = nodeIndent, + emptyLines = 0, atMoreIndented = false, tmp, ch; - ch = state.input.charCodeAt(state.position); - if (ch === 0x7C/* | */) { - folding = false; - } else if (ch === 0x3E/* > */) { - folding = true; - } else { + if (ch === 0x7C + /* | */ + ) { + folding = false; + } else if (ch === 0x3E + /* > */ + ) { + folding = true; + } else { return false; } @@ -2128,14 +2154,19 @@ var Redirects = (function () { while (ch !== 0) { ch = state.input.charCodeAt(++state.position); - if (ch === 0x2B/* + */ || ch === 0x2D/* - */) { - if (CHOMPING_CLIP === chomping) { - chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP; - } else { - throwError(state, 'repeat of a chomping mode identifier'); - } - - } else if ((tmp = fromDecimalCode(ch)) >= 0) { + if (ch === 0x2B + /* + */ + || ch === 0x2D + /* - */ + ) { + if (CHOMPING_CLIP === chomping) { + chomping = ch === 0x2B + /* + */ + ? CHOMPING_KEEP : CHOMPING_STRIP; + } else { + throwError(state, 'repeat of a chomping mode identifier'); + } + } else if ((tmp = fromDecimalCode(ch)) >= 0) { if (tmp === 0) { throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one'); } else if (!detectedIndent) { @@ -2144,30 +2175,33 @@ var Redirects = (function () { } else { throwError(state, 'repeat of an indentation width identifier'); } - } else { break; } } if (is_WHITE_SPACE(ch)) { - do { ch = state.input.charCodeAt(++state.position); } - while (is_WHITE_SPACE(ch)); + do { + ch = state.input.charCodeAt(++state.position); + } while (is_WHITE_SPACE(ch)); - if (ch === 0x23/* # */) { - do { ch = state.input.charCodeAt(++state.position); } - while (!is_EOL(ch) && (ch !== 0)); - } + if (ch === 0x23 + /* # */ + ) { + do { + ch = state.input.charCodeAt(++state.position); + } while (!is_EOL(ch) && ch !== 0); + } } while (ch !== 0) { readLineBreak(state); state.lineIndent = 0; - ch = state.input.charCodeAt(state.position); - while ((!detectedIndent || state.lineIndent < textIndent) && - (ch === 0x20/* Space */)) { + while ((!detectedIndent || state.lineIndent < textIndent) && ch === 0x20 + /* Space */ + ) { state.lineIndent++; ch = state.input.charCodeAt(++state.position); } @@ -2179,50 +2213,44 @@ var Redirects = (function () { if (is_EOL(ch)) { emptyLines++; continue; - } + } // End of the scalar. - // End of the scalar. - if (state.lineIndent < textIndent) { + if (state.lineIndent < textIndent) { // Perform the chomping. if (chomping === CHOMPING_KEEP) { state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); } else if (chomping === CHOMPING_CLIP) { - if (didReadContent) { // i.e. only if the scalar is not empty. + if (didReadContent) { + // i.e. only if the scalar is not empty. state.result += '\n'; } - } + } // Break this `while` cycle and go to the funciton's epilogue. + - // Break this `while` cycle and go to the funciton's epilogue. break; - } + } // Folded style: use fancy rules to handle line breaks. - // Folded style: use fancy rules to handle line breaks. - if (folding) { + if (folding) { // Lines starting with white space characters (more-indented lines) are not folded. if (is_WHITE_SPACE(ch)) { - atMoreIndented = true; - // except for the first content line (cf. Example 8.1) - state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + atMoreIndented = true; // except for the first content line (cf. Example 8.1) - // End of more-indented block. + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); // End of more-indented block. } else if (atMoreIndented) { atMoreIndented = false; - state.result += common.repeat('\n', emptyLines + 1); - - // Just one line break - perceive as the same line. + state.result += common.repeat('\n', emptyLines + 1); // Just one line break - perceive as the same line. } else if (emptyLines === 0) { - if (didReadContent) { // i.e. only if we have already read some scalar content. + if (didReadContent) { + // i.e. only if we have already read some scalar content. state.result += ' '; - } + } // Several line breaks - perceive as different lines. - // Several line breaks - perceive as different lines. } else { state.result += common.repeat('\n', emptyLines); - } + } // Literal style: just add exact number of line breaks between content lines. - // Literal style: just add exact number of line breaks between content lines. } else { // Keep all line breaks except the header line break. state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); @@ -2233,7 +2261,7 @@ var Redirects = (function () { emptyLines = 0; captureStart = state.position; - while (!is_EOL(ch) && (ch !== 0)) { + while (!is_EOL(ch) && ch !== 0) { ch = state.input.charCodeAt(++state.position); } @@ -2245,11 +2273,11 @@ var Redirects = (function () { function readBlockSequence(state, nodeIndent) { var _line, - _tag = state.tag, - _anchor = state.anchor, - _result = [], + _tag = state.tag, + _anchor = state.anchor, + _result = [], following, - detected = false, + detected = false, ch; if (state.anchor !== null) { @@ -2259,10 +2287,11 @@ var Redirects = (function () { ch = state.input.charCodeAt(state.position); while (ch !== 0) { - - if (ch !== 0x2D/* - */) { - break; - } + if (ch !== 0x2D + /* - */ + ) { + break; + } following = state.input.charCodeAt(state.position + 1); @@ -2276,6 +2305,7 @@ var Redirects = (function () { if (skipSeparationSpace(state, true, -1)) { if (state.lineIndent <= nodeIndent) { _result.push(null); + ch = state.input.charCodeAt(state.position); continue; } @@ -2283,12 +2313,13 @@ var Redirects = (function () { _line = state.line; composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); + _result.push(state.result); - skipSeparationSpace(state, true, -1); + skipSeparationSpace(state, true, -1); ch = state.input.charCodeAt(state.position); - if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { + if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) { throwError(state, 'bad indentation of a sequence entry'); } else if (state.lineIndent < nodeIndent) { break; @@ -2302,6 +2333,7 @@ var Redirects = (function () { state.result = _result; return true; } + return false; } @@ -2310,15 +2342,15 @@ var Redirects = (function () { allowCompact, _line, _pos, - _tag = state.tag, - _anchor = state.anchor, - _result = {}, + _tag = state.tag, + _anchor = state.anchor, + _result = {}, overridableKeys = {}, - keyTag = null, - keyNode = null, - valueNode = null, + keyTag = null, + keyNode = null, + valueNode = null, atExplicitKey = false, - detected = false, + detected = false, ch; if (state.anchor !== null) { @@ -2330,41 +2362,41 @@ var Redirects = (function () { while (ch !== 0) { following = state.input.charCodeAt(state.position + 1); _line = state.line; // Save the current line. - _pos = state.position; - // + _pos = state.position; // // Explicit notation case. There are two separate blocks: // first for the key (denoted by "?") and second for the value (denoted by ":") // - if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) { - if (ch === 0x3F/* ? */) { - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); - keyTag = keyNode = valueNode = null; - } - - detected = true; - atExplicitKey = true; - allowCompact = true; + if ((ch === 0x3F + /* ? */ + || ch === 0x3A + /* : */ + ) && is_WS_OR_EOL(following)) { + if (ch === 0x3F + /* ? */ + ) { + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + keyTag = keyNode = valueNode = null; + } - } else if (atExplicitKey) { + detected = true; + atExplicitKey = true; + allowCompact = true; + } else if (atExplicitKey) { // i.e. 0x3A/* : */ === character after the explicit key. atExplicitKey = false; allowCompact = true; - } else { throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line'); } state.position += 1; - ch = following; - - // - // Implicit notation case. Flow-style node as the key first, then ":", and the value. - // + ch = following; // + // Implicit notation case. Flow-style node as the key first, then ":", and the value. + // } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { - if (state.line === _line) { ch = state.input.charCodeAt(state.position); @@ -2372,49 +2404,46 @@ var Redirects = (function () { ch = state.input.charCodeAt(++state.position); } - if (ch === 0x3A/* : */) { - ch = state.input.charCodeAt(++state.position); - - if (!is_WS_OR_EOL(ch)) { - throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); - } - - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); - keyTag = keyNode = valueNode = null; - } - - detected = true; - atExplicitKey = false; - allowCompact = false; - keyTag = state.tag; - keyNode = state.result; - - } else if (detected) { + if (ch === 0x3A + /* : */ + ) { + ch = state.input.charCodeAt(++state.position); + + if (!is_WS_OR_EOL(ch)) { + throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); + } + + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = false; + allowCompact = false; + keyTag = state.tag; + keyNode = state.result; + } else if (detected) { throwError(state, 'can not read an implicit mapping pair; a colon is missed'); - } else { state.tag = _tag; state.anchor = _anchor; return true; // Keep the result of `composeNode`. } - } else if (detected) { throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key'); - } else { state.tag = _tag; state.anchor = _anchor; return true; // Keep the result of `composeNode`. } - } else { - break; // Reading is done. Go to the epilogue. - } - - // + break; // Reading is done. Go to the epilogue. + } // // Common reading code for both explicit and implicit notations. // + + if (state.line === _line || state.lineIndent > nodeIndent) { if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { if (atExplicitKey) { @@ -2433,23 +2462,22 @@ var Redirects = (function () { ch = state.input.charCodeAt(state.position); } - if (state.lineIndent > nodeIndent && (ch !== 0)) { + if (state.lineIndent > nodeIndent && ch !== 0) { throwError(state, 'bad indentation of a mapping entry'); } else if (state.lineIndent < nodeIndent) { break; } - } - - // + } // // Epilogue. // - // Special case: last mapping's node contains only the key in explicit notation. + + if (atExplicitKey) { storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); - } + } // Expose the resulting mapping. + - // Expose the resulting mapping. if (detected) { state.tag = _tag; state.anchor = _anchor; @@ -2463,14 +2491,15 @@ var Redirects = (function () { function readTagProperty(state) { var _position, isVerbatim = false, - isNamed = false, + isNamed = false, tagHandle, tagName, ch; ch = state.input.charCodeAt(state.position); - - if (ch !== 0x21/* ! */) return false; + if (ch !== 0x21 + /* ! */ + ) return false; if (state.tag !== null) { throwError(state, 'duplication of a tag property'); @@ -2478,24 +2507,29 @@ var Redirects = (function () { ch = state.input.charCodeAt(++state.position); - if (ch === 0x3C/* < */) { - isVerbatim = true; - ch = state.input.charCodeAt(++state.position); - - } else if (ch === 0x21/* ! */) { - isNamed = true; - tagHandle = '!!'; - ch = state.input.charCodeAt(++state.position); - - } else { + if (ch === 0x3C + /* < */ + ) { + isVerbatim = true; + ch = state.input.charCodeAt(++state.position); + } else if (ch === 0x21 + /* ! */ + ) { + isNamed = true; + tagHandle = '!!'; + ch = state.input.charCodeAt(++state.position); + } else { tagHandle = '!'; } _position = state.position; if (isVerbatim) { - do { ch = state.input.charCodeAt(++state.position); } - while (ch !== 0 && ch !== 0x3E/* > */); + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0 && ch !== 0x3E + /* > */ + ); if (state.position < state.length) { tagName = state.input.slice(_position, state.position); @@ -2505,21 +2539,22 @@ var Redirects = (function () { } } else { while (ch !== 0 && !is_WS_OR_EOL(ch)) { - - if (ch === 0x21/* ! */) { - if (!isNamed) { - tagHandle = state.input.slice(_position - 1, state.position + 1); - - if (!PATTERN_TAG_HANDLE.test(tagHandle)) { - throwError(state, 'named tag handle cannot contain such characters'); + if (ch === 0x21 + /* ! */ + ) { + if (!isNamed) { + tagHandle = state.input.slice(_position - 1, state.position + 1); + + if (!PATTERN_TAG_HANDLE.test(tagHandle)) { + throwError(state, 'named tag handle cannot contain such characters'); + } + + isNamed = true; + _position = state.position + 1; + } else { + throwError(state, 'tag suffix cannot contain exclamation marks'); } - - isNamed = true; - _position = state.position + 1; - } else { - throwError(state, 'tag suffix cannot contain exclamation marks'); } - } ch = state.input.charCodeAt(++state.position); } @@ -2537,16 +2572,12 @@ var Redirects = (function () { if (isVerbatim) { state.tag = tagName; - } else if (_hasOwnProperty$2.call(state.tagMap, tagHandle)) { state.tag = state.tagMap[tagHandle] + tagName; - } else if (tagHandle === '!') { state.tag = '!' + tagName; - } else if (tagHandle === '!!') { state.tag = 'tag:yaml.org,2002:' + tagName; - } else { throwError(state, 'undeclared tag handle "' + tagHandle + '"'); } @@ -2555,12 +2586,12 @@ var Redirects = (function () { } function readAnchorProperty(state) { - var _position, - ch; + var _position, ch; ch = state.input.charCodeAt(state.position); - - if (ch !== 0x26/* & */) return false; + if (ch !== 0x26 + /* & */ + ) return false; if (state.anchor !== null) { throwError(state, 'duplication of an anchor property'); @@ -2582,13 +2613,12 @@ var Redirects = (function () { } function readAlias(state) { - var _position, alias, - ch; + var _position, alias, ch; ch = state.input.charCodeAt(state.position); - - if (ch !== 0x2A/* * */) return false; - + if (ch !== 0x2A + /* * */ + ) return false; ch = state.input.charCodeAt(++state.position); _position = state.position; @@ -2615,8 +2645,9 @@ var Redirects = (function () { var allowBlockStyles, allowBlockScalars, allowBlockCollections, - indentStatus = 1, // 1: this>parent, 0: this=parent, -1: thisparent, 0: this=parent, -1: this tag; it should be "' + type.kind + '", not "' + state.kind + '"'); } - if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched + if (!type.resolve(state.result)) { + // `state.result` updated in resolver if matched throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag'); } else { state.result = type.construct(state.result); + if (state.anchor !== null) { state.anchorMap[state.anchor] = state.result; } @@ -2768,7 +2794,8 @@ var Redirects = (function () { if (state.listener !== null) { state.listener('close', state); } - return state.tag !== null || state.anchor !== null || hasContent; + + return state.tag !== null || state.anchor !== null || hasContent; } function readDocument(state) { @@ -2786,12 +2813,13 @@ var Redirects = (function () { while ((ch = state.input.charCodeAt(state.position)) !== 0) { skipSeparationSpace(state, true, -1); - ch = state.input.charCodeAt(state.position); - if (state.lineIndent > 0 || ch !== 0x25/* % */) { - break; - } + if (state.lineIndent > 0 || ch !== 0x25 + /* % */ + ) { + break; + } hasDirectives = true; ch = state.input.charCodeAt(++state.position); @@ -2813,14 +2841,17 @@ var Redirects = (function () { ch = state.input.charCodeAt(++state.position); } - if (ch === 0x23/* # */) { - do { ch = state.input.charCodeAt(++state.position); } - while (ch !== 0 && !is_EOL(ch)); - break; - } + if (ch === 0x23 + /* # */ + ) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0 && !is_EOL(ch)); - if (is_EOL(ch)) break; + break; + } + if (is_EOL(ch)) break; _position = state.position; while (ch !== 0 && !is_WS_OR_EOL(ch)) { @@ -2841,87 +2872,91 @@ var Redirects = (function () { skipSeparationSpace(state, true, -1); - if (state.lineIndent === 0 && - state.input.charCodeAt(state.position) === 0x2D/* - */ && - state.input.charCodeAt(state.position + 1) === 0x2D/* - */ && - state.input.charCodeAt(state.position + 2) === 0x2D/* - */) { - state.position += 3; - skipSeparationSpace(state, true, -1); - - } else if (hasDirectives) { + if (state.lineIndent === 0 && state.input.charCodeAt(state.position) === 0x2D + /* - */ + && state.input.charCodeAt(state.position + 1) === 0x2D + /* - */ + && state.input.charCodeAt(state.position + 2) === 0x2D + /* - */ + ) { + state.position += 3; + skipSeparationSpace(state, true, -1); + } else if (hasDirectives) { throwError(state, 'directives end mark is expected'); } composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); skipSeparationSpace(state, true, -1); - if (state.checkLineBreaks && - PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { + if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { throwWarning(state, 'non-ASCII line breaks are interpreted as content'); } state.documents.push(state.result); if (state.position === state.lineStart && testDocumentSeparator(state)) { + if (state.input.charCodeAt(state.position) === 0x2E + /* . */ + ) { + state.position += 3; + skipSeparationSpace(state, true, -1); + } - if (state.input.charCodeAt(state.position) === 0x2E/* . */) { - state.position += 3; - skipSeparationSpace(state, true, -1); - } return; } - if (state.position < (state.length - 1)) { + if (state.position < state.length - 1) { throwError(state, 'end of the stream or a document separator is expected'); } else { return; } } - function loadDocuments(input, options) { input = String(input); options = options || {}; if (input.length !== 0) { - // Add tailing `\n` if not exists - if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ && - input.charCodeAt(input.length - 1) !== 0x0D/* CR */) { - input += '\n'; - } + if (input.charCodeAt(input.length - 1) !== 0x0A + /* LF */ + && input.charCodeAt(input.length - 1) !== 0x0D + /* CR */ + ) { + input += '\n'; + } // Strip BOM + - // Strip BOM if (input.charCodeAt(0) === 0xFEFF) { input = input.slice(1); } } var state = new State(input, options); - var nullpos = input.indexOf('\0'); if (nullpos !== -1) { state.position = nullpos; throwError(state, 'null byte is not allowed in input'); - } + } // Use 0 as string terminator. That significantly simplifies bounds check. + - // Use 0 as string terminator. That significantly simplifies bounds check. state.input += '\0'; - while (state.input.charCodeAt(state.position) === 0x20/* Space */) { + while (state.input.charCodeAt(state.position) === 0x20 + /* Space */ + ) { state.lineIndent += 1; state.position += 1; } - while (state.position < (state.length - 1)) { + while (state.position < state.length - 1) { readDocument(state); } return state.documents; } - function loadAll(input, iterator, options) { if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') { options = iterator; @@ -2939,7 +2974,6 @@ var Redirects = (function () { } } - function load(input, options) { var documents = loadDocuments(input, options); @@ -2949,100 +2983,136 @@ var Redirects = (function () { } else if (documents.length === 1) { return documents[0]; } + throw new exception('expected a single document in the stream, but found more'); } - function safeLoadAll(input, iterator, options) { if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') { options = iterator; iterator = null; } - return loadAll(input, iterator, common.extend({ schema: default_safe }, options)); + return loadAll(input, iterator, common.extend({ + schema: default_safe + }, options)); } - function safeLoad(input, options) { - return load(input, common.extend({ schema: default_safe }, options)); + return load(input, common.extend({ + schema: default_safe + }, options)); } - - var loadAll_1 = loadAll; - var load_1 = load; + var loadAll_1 = loadAll; + var load_1 = load; var safeLoadAll_1 = safeLoadAll; - var safeLoad_1 = safeLoad; - + var safeLoad_1 = safeLoad; var loader = { - loadAll: loadAll_1, - load: load_1, - safeLoadAll: safeLoadAll_1, - safeLoad: safeLoad_1 + loadAll: loadAll_1, + load: load_1, + safeLoadAll: safeLoadAll_1, + safeLoad: safeLoad_1 }; /*eslint-disable no-use-before-define*/ + var _toString$2 = Object.prototype.toString; + var _hasOwnProperty$3 = Object.prototype.hasOwnProperty; + var CHAR_TAB = 0x09; + /* Tab */ + + var CHAR_LINE_FEED = 0x0A; + /* LF */ + var CHAR_CARRIAGE_RETURN = 0x0D; + /* CR */ + var CHAR_SPACE = 0x20; + /* Space */ + var CHAR_EXCLAMATION = 0x21; + /* ! */ - var _toString$2 = Object.prototype.toString; - var _hasOwnProperty$3 = Object.prototype.hasOwnProperty; + var CHAR_DOUBLE_QUOTE = 0x22; + /* " */ - var CHAR_TAB = 0x09; /* Tab */ - var CHAR_LINE_FEED = 0x0A; /* LF */ - var CHAR_CARRIAGE_RETURN = 0x0D; /* CR */ - var CHAR_SPACE = 0x20; /* Space */ - var CHAR_EXCLAMATION = 0x21; /* ! */ - var CHAR_DOUBLE_QUOTE = 0x22; /* " */ - var CHAR_SHARP = 0x23; /* # */ - var CHAR_PERCENT = 0x25; /* % */ - var CHAR_AMPERSAND = 0x26; /* & */ - var CHAR_SINGLE_QUOTE = 0x27; /* ' */ - var CHAR_ASTERISK = 0x2A; /* * */ - var CHAR_COMMA = 0x2C; /* , */ - var CHAR_MINUS = 0x2D; /* - */ - var CHAR_COLON = 0x3A; /* : */ - var CHAR_EQUALS = 0x3D; /* = */ - var CHAR_GREATER_THAN = 0x3E; /* > */ - var CHAR_QUESTION = 0x3F; /* ? */ - var CHAR_COMMERCIAL_AT = 0x40; /* @ */ - var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */ - var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */ - var CHAR_GRAVE_ACCENT = 0x60; /* ` */ - var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */ - var CHAR_VERTICAL_LINE = 0x7C; /* | */ - var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */ + var CHAR_SHARP = 0x23; + /* # */ - var ESCAPE_SEQUENCES = {}; + var CHAR_PERCENT = 0x25; + /* % */ + + var CHAR_AMPERSAND = 0x26; + /* & */ + + var CHAR_SINGLE_QUOTE = 0x27; + /* ' */ + + var CHAR_ASTERISK = 0x2A; + /* * */ + + var CHAR_COMMA = 0x2C; + /* , */ + + var CHAR_MINUS = 0x2D; + /* - */ + + var CHAR_COLON = 0x3A; + /* : */ + + var CHAR_EQUALS = 0x3D; + /* = */ + + var CHAR_GREATER_THAN = 0x3E; + /* > */ + + var CHAR_QUESTION = 0x3F; + /* ? */ + + var CHAR_COMMERCIAL_AT = 0x40; + /* @ */ + + var CHAR_LEFT_SQUARE_BRACKET = 0x5B; + /* [ */ - ESCAPE_SEQUENCES[0x00] = '\\0'; - ESCAPE_SEQUENCES[0x07] = '\\a'; - ESCAPE_SEQUENCES[0x08] = '\\b'; - ESCAPE_SEQUENCES[0x09] = '\\t'; - ESCAPE_SEQUENCES[0x0A] = '\\n'; - ESCAPE_SEQUENCES[0x0B] = '\\v'; - ESCAPE_SEQUENCES[0x0C] = '\\f'; - ESCAPE_SEQUENCES[0x0D] = '\\r'; - ESCAPE_SEQUENCES[0x1B] = '\\e'; - ESCAPE_SEQUENCES[0x22] = '\\"'; - ESCAPE_SEQUENCES[0x5C] = '\\\\'; - ESCAPE_SEQUENCES[0x85] = '\\N'; - ESCAPE_SEQUENCES[0xA0] = '\\_'; + var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; + /* ] */ + + var CHAR_GRAVE_ACCENT = 0x60; + /* ` */ + + var CHAR_LEFT_CURLY_BRACKET = 0x7B; + /* { */ + + var CHAR_VERTICAL_LINE = 0x7C; + /* | */ + + var CHAR_RIGHT_CURLY_BRACKET = 0x7D; + /* } */ + + var ESCAPE_SEQUENCES = {}; + ESCAPE_SEQUENCES[0x00] = '\\0'; + ESCAPE_SEQUENCES[0x07] = '\\a'; + ESCAPE_SEQUENCES[0x08] = '\\b'; + ESCAPE_SEQUENCES[0x09] = '\\t'; + ESCAPE_SEQUENCES[0x0A] = '\\n'; + ESCAPE_SEQUENCES[0x0B] = '\\v'; + ESCAPE_SEQUENCES[0x0C] = '\\f'; + ESCAPE_SEQUENCES[0x0D] = '\\r'; + ESCAPE_SEQUENCES[0x1B] = '\\e'; + ESCAPE_SEQUENCES[0x22] = '\\"'; + ESCAPE_SEQUENCES[0x5C] = '\\\\'; + ESCAPE_SEQUENCES[0x85] = '\\N'; + ESCAPE_SEQUENCES[0xA0] = '\\_'; ESCAPE_SEQUENCES[0x2028] = '\\L'; ESCAPE_SEQUENCES[0x2029] = '\\P'; - - var DEPRECATED_BOOLEANS_SYNTAX = [ - 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', - 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF' - ]; + var DEPRECATED_BOOLEANS_SYNTAX = ['y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF']; function compileStyleMap(schema, map) { var result, keys, index, length, tag, style, type; - if (map === null) return {}; - result = {}; keys = Object.keys(map); @@ -3053,6 +3123,7 @@ var Redirects = (function () { if (tag.slice(0, 2) === '!!') { tag = 'tag:yaml.org,2002:' + tag.slice(2); } + type = schema.compiledTypeMap['fallback'][tag]; if (type && _hasOwnProperty$3.call(type.styleAliases, style)) { @@ -3067,7 +3138,6 @@ var Redirects = (function () { function encodeHex(character) { var string, handle, length; - string = character.toString(16).toUpperCase(); if (character <= 0xFF) { @@ -3087,29 +3157,26 @@ var Redirects = (function () { } function State$1(options) { - this.schema = options['schema'] || default_full; - this.indent = Math.max(1, (options['indent'] || 2)); + this.schema = options['schema'] || default_full; + this.indent = Math.max(1, options['indent'] || 2); this.noArrayIndent = options['noArrayIndent'] || false; - this.skipInvalid = options['skipInvalid'] || false; - this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']); - this.styleMap = compileStyleMap(this.schema, options['styles'] || null); - this.sortKeys = options['sortKeys'] || false; - this.lineWidth = options['lineWidth'] || 80; - this.noRefs = options['noRefs'] || false; - this.noCompatMode = options['noCompatMode'] || false; - this.condenseFlow = options['condenseFlow'] || false; - + this.skipInvalid = options['skipInvalid'] || false; + this.flowLevel = common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']; + this.styleMap = compileStyleMap(this.schema, options['styles'] || null); + this.sortKeys = options['sortKeys'] || false; + this.lineWidth = options['lineWidth'] || 80; + this.noRefs = options['noRefs'] || false; + this.noCompatMode = options['noCompatMode'] || false; + this.condenseFlow = options['condenseFlow'] || false; this.implicitTypes = this.schema.compiledImplicit; this.explicitTypes = this.schema.compiledExplicit; - this.tag = null; this.result = ''; - this.duplicates = []; this.usedDuplicates = null; - } + } // Indents every line in a string. Empty lines (\n only) are not indented. + - // Indents every line in a string. Empty lines (\n only) are not indented. function indentString(string, spaces) { var ind = common.repeat(' ', spaces), position = 0, @@ -3120,6 +3187,7 @@ var Redirects = (function () { while (position < length) { next = string.indexOf('\n', position); + if (next === -1) { line = string.slice(position); position = length; @@ -3129,7 +3197,6 @@ var Redirects = (function () { } if (line.length && line !== '\n') result += ind; - result += line; } @@ -3152,125 +3219,96 @@ var Redirects = (function () { } return false; - } + } // [33] s-white ::= s-space | s-tab + - // [33] s-white ::= s-space | s-tab function isWhitespace(c) { return c === CHAR_SPACE || c === CHAR_TAB; - } - - // Returns true if the character can be printed without escaping. + } // Returns true if the character can be printed without escaping. // From YAML 1.2: "any allowed characters known to be non-printable // should also be escaped. [However,] This isn’t mandatory" // Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. - function isPrintable(c) { - return (0x00020 <= c && c <= 0x00007E) - || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) - || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */) - || (0x10000 <= c && c <= 0x10FFFF); - } - // [34] ns-char ::= nb-char - s-white + + function isPrintable(c) { + return 0x00020 <= c && c <= 0x00007E || 0x000A1 <= c && c <= 0x00D7FF && c !== 0x2028 && c !== 0x2029 || 0x0E000 <= c && c <= 0x00FFFD && c !== 0xFEFF + /* BOM */ + || 0x10000 <= c && c <= 0x10FFFF; + } // [34] ns-char ::= nb-char - s-white // [27] nb-char ::= c-printable - b-char - c-byte-order-mark // [26] b-char ::= b-line-feed | b-carriage-return // [24] b-line-feed ::= #xA /* LF */ // [25] b-carriage-return ::= #xD /* CR */ // [3] c-byte-order-mark ::= #xFEFF + + function isNsChar(c) { - return isPrintable(c) && !isWhitespace(c) - // byte-order-mark - && c !== 0xFEFF - // b-char - && c !== CHAR_CARRIAGE_RETURN - && c !== CHAR_LINE_FEED; - } + return isPrintable(c) && !isWhitespace(c) // byte-order-mark + && c !== 0xFEFF // b-char + && c !== CHAR_CARRIAGE_RETURN && c !== CHAR_LINE_FEED; + } // Simplified test for values allowed after the first character in plain style. + - // Simplified test for values allowed after the first character in plain style. function isPlainSafe(c, prev) { // Uses a subset of nb-char - c-flow-indicator - ":" - "#" // where nb-char ::= c-printable - b-char - c-byte-order-mark. - return isPrintable(c) && c !== 0xFEFF - // - c-flow-indicator - && c !== CHAR_COMMA - && c !== CHAR_LEFT_SQUARE_BRACKET - && c !== CHAR_RIGHT_SQUARE_BRACKET - && c !== CHAR_LEFT_CURLY_BRACKET - && c !== CHAR_RIGHT_CURLY_BRACKET - // - ":" - "#" - // /* An ns-char preceding */ "#" - && c !== CHAR_COLON - && ((c !== CHAR_SHARP) || (prev && isNsChar(prev))); - } - - // Simplified test for values allowed as the first character in plain style. + return isPrintable(c) && c !== 0xFEFF // - c-flow-indicator + && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET // - ":" - "#" + // /* An ns-char preceding */ "#" + && c !== CHAR_COLON && (c !== CHAR_SHARP || prev && isNsChar(prev)); + } // Simplified test for values allowed as the first character in plain style. + + function isPlainSafeFirst(c) { // Uses a subset of ns-char - c-indicator // where ns-char = nb-char - s-white. - return isPrintable(c) && c !== 0xFEFF - && !isWhitespace(c) // - s-white - // - (c-indicator ::= - // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” - && c !== CHAR_MINUS - && c !== CHAR_QUESTION - && c !== CHAR_COLON - && c !== CHAR_COMMA - && c !== CHAR_LEFT_SQUARE_BRACKET - && c !== CHAR_RIGHT_SQUARE_BRACKET - && c !== CHAR_LEFT_CURLY_BRACKET - && c !== CHAR_RIGHT_CURLY_BRACKET - // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” - && c !== CHAR_SHARP - && c !== CHAR_AMPERSAND - && c !== CHAR_ASTERISK - && c !== CHAR_EXCLAMATION - && c !== CHAR_VERTICAL_LINE - && c !== CHAR_EQUALS - && c !== CHAR_GREATER_THAN - && c !== CHAR_SINGLE_QUOTE - && c !== CHAR_DOUBLE_QUOTE - // | “%” | “@” | “`”) - && c !== CHAR_PERCENT - && c !== CHAR_COMMERCIAL_AT - && c !== CHAR_GRAVE_ACCENT; - } - - // Determines whether block indentation indicator is required. + return isPrintable(c) && c !== 0xFEFF && !isWhitespace(c) // - s-white + // - (c-indicator ::= + // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” + && c !== CHAR_MINUS && c !== CHAR_QUESTION && c !== CHAR_COLON && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” + && c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && c !== CHAR_EXCLAMATION && c !== CHAR_VERTICAL_LINE && c !== CHAR_EQUALS && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && c !== CHAR_DOUBLE_QUOTE // | “%” | “@” | “`”) + && c !== CHAR_PERCENT && c !== CHAR_COMMERCIAL_AT && c !== CHAR_GRAVE_ACCENT; + } // Determines whether block indentation indicator is required. + + function needIndentIndicator(string) { var leadingSpaceRe = /^\n* /; return leadingSpaceRe.test(string); } - var STYLE_PLAIN = 1, - STYLE_SINGLE = 2, + var STYLE_PLAIN = 1, + STYLE_SINGLE = 2, STYLE_LITERAL = 3, - STYLE_FOLDED = 4, - STYLE_DOUBLE = 5; - - // Determines which scalar styles are possible and returns the preferred style. + STYLE_FOLDED = 4, + STYLE_DOUBLE = 5; // Determines which scalar styles are possible and returns the preferred style. // lineWidth = -1 => no limit. // Pre-conditions: str.length > 0. // Post-conditions: // STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. // STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). // STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). + function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) { var i; var char, prev_char; var hasLineBreak = false; var hasFoldableLine = false; // only checked if shouldTrackWidth + var shouldTrackWidth = lineWidth !== -1; var previousLineBreak = -1; // count the first line correctly - var plain = isPlainSafeFirst(string.charCodeAt(0)) - && !isWhitespace(string.charCodeAt(string.length - 1)); + + var plain = isPlainSafeFirst(string.charCodeAt(0)) && !isWhitespace(string.charCodeAt(string.length - 1)); if (singleLineOnly) { // Case: no block styles. // Check for disallowed characters to rule out plain and single. for (i = 0; i < string.length; i++) { char = string.charCodeAt(i); + if (!isPrintable(char)) { return STYLE_DOUBLE; } + prev_char = i > 0 ? string.charCodeAt(i - 1) : null; plain = plain && isPlainSafe(char, prev_char); } @@ -3278,58 +3316,59 @@ var Redirects = (function () { // Case: block styles permitted. for (i = 0; i < string.length; i++) { char = string.charCodeAt(i); + if (char === CHAR_LINE_FEED) { - hasLineBreak = true; - // Check if any line can be folded. + hasLineBreak = true; // Check if any line can be folded. + if (shouldTrackWidth) { - hasFoldableLine = hasFoldableLine || - // Foldable line = too long, and not more-indented. - (i - previousLineBreak - 1 > lineWidth && - string[previousLineBreak + 1] !== ' '); + hasFoldableLine = hasFoldableLine || // Foldable line = too long, and not more-indented. + i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== ' '; previousLineBreak = i; } } else if (!isPrintable(char)) { return STYLE_DOUBLE; } + prev_char = i > 0 ? string.charCodeAt(i - 1) : null; plain = plain && isPlainSafe(char, prev_char); - } - // in case the end is missing a \n - hasFoldableLine = hasFoldableLine || (shouldTrackWidth && - (i - previousLineBreak - 1 > lineWidth && - string[previousLineBreak + 1] !== ' ')); - } - // Although every style can represent \n without escaping, prefer block styles + } // in case the end is missing a \n + + + hasFoldableLine = hasFoldableLine || shouldTrackWidth && i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== ' '; + } // Although every style can represent \n without escaping, prefer block styles // for multiline, since they're more readable and they don't add empty lines. // Also prefer folding a super-long line. + + if (!hasLineBreak && !hasFoldableLine) { // Strings interpretable as another type have to be quoted; // e.g. the string 'true' vs. the boolean true. - return plain && !testAmbiguousType(string) - ? STYLE_PLAIN : STYLE_SINGLE; - } - // Edge case: block indentation indicator can only have one digit. + return plain && !testAmbiguousType(string) ? STYLE_PLAIN : STYLE_SINGLE; + } // Edge case: block indentation indicator can only have one digit. + + if (indentPerLevel > 9 && needIndentIndicator(string)) { return STYLE_DOUBLE; - } - // At this point we know block styles are valid. + } // At this point we know block styles are valid. // Prefer literal style unless we want to fold. - return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; - } - // Note: line breaking/folding is implemented for only the folded style. + + return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; + } // Note: line breaking/folding is implemented for only the folded style. // NB. We drop the last trailing newline (if any) of a returned block scalar // since the dumper adds its own newline. This always works: // • No ending newline => unaffected; already using strip "-" chomping. // • Ending newline => removed then restored. // Importantly, this keeps the "+" chomp indicator from gaining an extra line. + + function writeScalar(state, string, level, iskey) { - state.dump = (function () { + state.dump = function () { if (string.length === 0) { return "''"; } - if (!state.noCompatMode && - DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) { + + if (!state.noCompatMode && DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) { return "'" + string + "'"; } @@ -3341,13 +3380,12 @@ var Redirects = (function () { // state.lineWidth > 40 + state.indent: width decreases until the lower bound. // This behaves better than a constant minimum width which disallows narrower options, // or an indent threshold which causes the width to suddenly increase. - var lineWidth = state.lineWidth === -1 - ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); - // Without knowing if keys are implicit/explicit, assume implicit for safety. - var singleLineOnly = iskey - // No block styles in flow mode. - || (state.flowLevel > -1 && level >= state.flowLevel); + var lineWidth = state.lineWidth === -1 ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); // Without knowing if keys are implicit/explicit, assume implicit for safety. + + var singleLineOnly = iskey // No block styles in flow mode. + || state.flowLevel > -1 && level >= state.flowLevel; + function testAmbiguity(string) { return testImplicitResolving(state, string); } @@ -3355,108 +3393,111 @@ var Redirects = (function () { switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) { case STYLE_PLAIN: return string; + case STYLE_SINGLE: return "'" + string.replace(/'/g, "''") + "'"; + case STYLE_LITERAL: - return '|' + blockHeader(string, state.indent) - + dropEndingNewline(indentString(string, indent)); + return '|' + blockHeader(string, state.indent) + dropEndingNewline(indentString(string, indent)); + case STYLE_FOLDED: - return '>' + blockHeader(string, state.indent) - + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); + return '>' + blockHeader(string, state.indent) + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); + case STYLE_DOUBLE: return '"' + escapeString(string) + '"'; + default: throw new exception('impossible error: invalid scalar style'); } - }()); - } + }(); + } // Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. + - // Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. function blockHeader(string, indentPerLevel) { - var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''; + var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''; // note the special case: the string '\n' counts as a "trailing" empty line. - // note the special case: the string '\n' counts as a "trailing" empty line. - var clip = string[string.length - 1] === '\n'; + var clip = string[string.length - 1] === '\n'; var keep = clip && (string[string.length - 2] === '\n' || string === '\n'); - var chomp = keep ? '+' : (clip ? '' : '-'); - + var chomp = keep ? '+' : clip ? '' : '-'; return indentIndicator + chomp + '\n'; - } + } // (See the note for writeScalar.) + - // (See the note for writeScalar.) function dropEndingNewline(string) { return string[string.length - 1] === '\n' ? string.slice(0, -1) : string; - } - - // Note: a long line without a suitable break point will exceed the width limit. + } // Note: a long line without a suitable break point will exceed the width limit. // Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. + + function foldString(string, width) { // In folded style, $k$ consecutive newlines output as $k+1$ newlines— // unless they're before or after a more-indented line, or at the very // beginning or end, in which case $k$ maps to $k$. // Therefore, parse each chunk as newline(s) followed by a content line. - var lineRe = /(\n+)([^\n]*)/g; + var lineRe = /(\n+)([^\n]*)/g; // first line (possibly an empty line) - // first line (possibly an empty line) - var result = (function () { + var result = function () { var nextLF = string.indexOf('\n'); nextLF = nextLF !== -1 ? nextLF : string.length; lineRe.lastIndex = nextLF; return foldLine(string.slice(0, nextLF), width); - }()); - // If we haven't reached the first content line yet, don't add an extra \n. + }(); // If we haven't reached the first content line yet, don't add an extra \n. + + var prevMoreIndented = string[0] === '\n' || string[0] === ' '; - var moreIndented; + var moreIndented; // rest of the lines - // rest of the lines var match; - while ((match = lineRe.exec(string))) { - var prefix = match[1], line = match[2]; - moreIndented = (line[0] === ' '); - result += prefix - + (!prevMoreIndented && !moreIndented && line !== '' - ? '\n' : '') - + foldLine(line, width); + + while (match = lineRe.exec(string)) { + var prefix = match[1], + line = match[2]; + moreIndented = line[0] === ' '; + result += prefix + (!prevMoreIndented && !moreIndented && line !== '' ? '\n' : '') + foldLine(line, width); prevMoreIndented = moreIndented; } return result; - } - - // Greedy line breaking. + } // Greedy line breaking. // Picks the longest line under the limit each time, // otherwise settles for the shortest line over the limit. // NB. More-indented lines *cannot* be folded, as that would add an extra \n. + + function foldLine(line, width) { - if (line === '' || line[0] === ' ') return line; + if (line === '' || line[0] === ' ') return line; // Since a more-indented line adds a \n, breaks can't be followed by a space. - // Since a more-indented line adds a \n, breaks can't be followed by a space. var breakRe = / [^ ]/g; // note: the match index will always be <= length-2. - var match; - // start is an inclusive index. end, curr, and next are exclusive. - var start = 0, end, curr = 0, next = 0; - var result = ''; - // Invariants: 0 <= start <= length-1. + var match; // start is an inclusive index. end, curr, and next are exclusive. + + var start = 0, + end, + curr = 0, + next = 0; + var result = ''; // Invariants: 0 <= start <= length-1. // 0 <= curr <= next <= max(0, length-2). curr - start <= width. // Inside the loop: // A match implies length >= 2, so curr and next are <= length-2. - while ((match = breakRe.exec(line))) { - next = match.index; - // maintain invariant: curr - start <= width + + while (match = breakRe.exec(line)) { + next = match.index; // maintain invariant: curr - start <= width + if (next - start > width) { - end = (curr > start) ? curr : next; // derive end <= length-2 - result += '\n' + line.slice(start, end); - // skip the space that was output as \n - start = end + 1; // derive start <= length-1 + end = curr > start ? curr : next; // derive end <= length-2 + + result += '\n' + line.slice(start, end); // skip the space that was output as \n + + start = end + 1; // derive start <= length-1 } - curr = next; - } - // By the invariants, start <= length-1, so there is something left over. + curr = next; + } // By the invariants, start <= length-1, so there is something left over. // It is either the whole string or a part starting from non-whitespace. - result += '\n'; - // Insert a break if the remainder is too long and there is a break available. + + + result += '\n'; // Insert a break if the remainder is too long and there is a break available. + if (line.length - start > width && curr > start) { result += line.slice(start, curr) + '\n' + line.slice(curr + 1); } else { @@ -3464,30 +3505,35 @@ var Redirects = (function () { } return result.slice(1); // drop extra \n joiner - } + } // Escapes a double-quoted string. + - // Escapes a double-quoted string. function escapeString(string) { var result = ''; var char, nextChar; var escapeSeq; for (var i = 0; i < string.length; i++) { - char = string.charCodeAt(i); - // Check for surrogate pairs (reference Unicode 3.0 section "3.7 Surrogates"). - if (char >= 0xD800 && char <= 0xDBFF/* high surrogate */) { - nextChar = string.charCodeAt(i + 1); - if (nextChar >= 0xDC00 && nextChar <= 0xDFFF/* low surrogate */) { - // Combine the surrogate pair and store it escaped. - result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000); - // Advance index one extra since we already used that char here. - i++; continue; + char = string.charCodeAt(i); // Check for surrogate pairs (reference Unicode 3.0 section "3.7 Surrogates"). + + if (char >= 0xD800 && char <= 0xDBFF + /* high surrogate */ + ) { + nextChar = string.charCodeAt(i + 1); + + if (nextChar >= 0xDC00 && nextChar <= 0xDFFF + /* low surrogate */ + ) { + // Combine the surrogate pair and store it escaped. + result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000); // Advance index one extra since we already used that char here. + + i++; + continue; + } } - } + escapeSeq = ESCAPE_SEQUENCES[char]; - result += !escapeSeq && isPrintable(char) - ? string[i] - : escapeSeq || encodeHex(char); + result += !escapeSeq && isPrintable(char) ? string[i] : escapeSeq || encodeHex(char); } return result; @@ -3495,7 +3541,7 @@ var Redirects = (function () { function writeFlowSequence(state, level, object) { var _result = '', - _tag = state.tag, + _tag = state.tag, index, length; @@ -3513,7 +3559,7 @@ var Redirects = (function () { function writeBlockSequence(state, level, object, compact) { var _result = '', - _tag = state.tag, + _tag = state.tag, index, length; @@ -3539,8 +3585,8 @@ var Redirects = (function () { } function writeFlowMapping(state, level, object) { - var _result = '', - _tag = state.tag, + var _result = '', + _tag = state.tag, objectKeyList = Object.keys(object), index, length, @@ -3549,12 +3595,9 @@ var Redirects = (function () { pairBuffer; for (index = 0, length = objectKeyList.length; index < length; index += 1) { - pairBuffer = ''; if (index !== 0) pairBuffer += ', '; - if (state.condenseFlow) pairBuffer += '"'; - objectKey = objectKeyList[index]; objectValue = object[objectKey]; @@ -3563,16 +3606,14 @@ var Redirects = (function () { } if (state.dump.length > 1024) pairBuffer += '? '; - pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' '); if (!writeNode(state, level, objectValue, false, false)) { continue; // Skip this pair because of invalid value. } - pairBuffer += state.dump; + pairBuffer += state.dump; // Both key and value are valid. - // Both key and value are valid. _result += pairBuffer; } @@ -3581,17 +3622,16 @@ var Redirects = (function () { } function writeBlockMapping(state, level, object, compact) { - var _result = '', - _tag = state.tag, + var _result = '', + _tag = state.tag, objectKeyList = Object.keys(object), index, length, objectKey, objectValue, explicitPair, - pairBuffer; + pairBuffer; // Allow sorting keys so that the output file is deterministic - // Allow sorting keys so that the output file is deterministic if (state.sortKeys === true) { // Default sorting objectKeyList.sort(); @@ -3617,8 +3657,7 @@ var Redirects = (function () { continue; // Skip this pair because of invalid key. } - explicitPair = (state.tag !== null && state.tag !== '?') || - (state.dump && state.dump.length > 1024); + explicitPair = state.tag !== null && state.tag !== '?' || state.dump && state.dump.length > 1024; if (explicitPair) { if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { @@ -3644,9 +3683,8 @@ var Redirects = (function () { pairBuffer += ': '; } - pairBuffer += state.dump; + pairBuffer += state.dump; // Both key and value are valid. - // Both key and value are valid. _result += pairBuffer; } @@ -3662,10 +3700,7 @@ var Redirects = (function () { for (index = 0, length = typeList.length; index < length; index += 1) { type = typeList[index]; - if ((type.instanceOf || type.predicate) && - (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) && - (!type.predicate || type.predicate(object))) { - + if ((type.instanceOf || type.predicate) && (!type.instanceOf || typeof object === 'object' && object instanceof type.instanceOf) && (!type.predicate || type.predicate(object))) { state.tag = explicit ? type.tag : '?'; if (type.represent) { @@ -3687,11 +3722,11 @@ var Redirects = (function () { } return false; - } - - // Serializes `object` and writes it to global `result`. + } // Serializes `object` and writes it to global `result`. // Returns true on success, or false on invalid object. // + + function writeNode(state, level, object, block, compact, iskey) { state.tag = null; state.dump = object; @@ -3703,7 +3738,7 @@ var Redirects = (function () { var type = _toString$2.call(state.dump); if (block) { - block = (state.flowLevel < 0 || state.flowLevel > level); + block = state.flowLevel < 0 || state.flowLevel > level; } var objectOrArray = type === '[object Object]' || type === '[object Array]', @@ -3715,7 +3750,7 @@ var Redirects = (function () { duplicate = duplicateIndex !== -1; } - if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) { + if (state.tag !== null && state.tag !== '?' || duplicate || state.indent !== 2 && level > 0) { compact = false; } @@ -3725,27 +3760,33 @@ var Redirects = (function () { if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { state.usedDuplicates[duplicateIndex] = true; } + if (type === '[object Object]') { - if (block && (Object.keys(state.dump).length !== 0)) { + if (block && Object.keys(state.dump).length !== 0) { writeBlockMapping(state, level, state.dump, compact); + if (duplicate) { state.dump = '&ref_' + duplicateIndex + state.dump; } } else { writeFlowMapping(state, level, state.dump); + if (duplicate) { state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; } } } else if (type === '[object Array]') { - var arrayLevel = (state.noArrayIndent && (level > 0)) ? level - 1 : level; - if (block && (state.dump.length !== 0)) { + var arrayLevel = state.noArrayIndent && level > 0 ? level - 1 : level; + + if (block && state.dump.length !== 0) { writeBlockSequence(state, arrayLevel, state.dump, compact); + if (duplicate) { state.dump = '&ref_' + duplicateIndex + state.dump; } } else { writeFlowSequence(state, arrayLevel, state.dump); + if (duplicate) { state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; } @@ -3772,22 +3813,21 @@ var Redirects = (function () { duplicatesIndexes = [], index, length; - inspectNode(object, objects, duplicatesIndexes); for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { state.duplicates.push(objects[duplicatesIndexes[index]]); } + state.usedDuplicates = new Array(length); } function inspectNode(object, objects, duplicatesIndexes) { - var objectKeyList, - index, - length; + var objectKeyList, index, length; if (object !== null && typeof object === 'object') { index = objects.indexOf(object); + if (index !== -1) { if (duplicatesIndexes.indexOf(index) === -1) { duplicatesIndexes.push(index); @@ -3812,26 +3852,23 @@ var Redirects = (function () { function dump(input, options) { options = options || {}; - var state = new State$1(options); - if (!state.noRefs) getDuplicateReferences(input, state); - if (writeNode(state, 0, input, true, true)) return state.dump + '\n'; - return ''; } function safeDump(input, options) { - return dump(input, common.extend({ schema: default_safe }, options)); + return dump(input, common.extend({ + schema: default_safe + }, options)); } - var dump_1 = dump; + var dump_1 = dump; var safeDump_1 = safeDump; - var dumper = { - dump: dump_1, - safeDump: safeDump_1 + dump: dump_1, + safeDump: safeDump_1 }; function deprecated(name) { @@ -3840,55 +3877,51 @@ var Redirects = (function () { }; } - - var Type$1 = type; - var Schema$1 = schema; - var FAILSAFE_SCHEMA = failsafe; - var JSON_SCHEMA = json; - var CORE_SCHEMA = core; + var Type$1 = type; + var Schema$1 = schema; + var FAILSAFE_SCHEMA = failsafe; + var JSON_SCHEMA = json; + var CORE_SCHEMA = core; var DEFAULT_SAFE_SCHEMA = default_safe; var DEFAULT_FULL_SCHEMA = default_full; - var load$1 = loader.load; - var loadAll$1 = loader.loadAll; - var safeLoad$1 = loader.safeLoad; - var safeLoadAll$1 = loader.safeLoadAll; - var dump$1 = dumper.dump; - var safeDump$1 = dumper.safeDump; - var YAMLException$1 = exception; - - // Deprecated schema names from JS-YAML 2.0.x + var load$1 = loader.load; + var loadAll$1 = loader.loadAll; + var safeLoad$1 = loader.safeLoad; + var safeLoadAll$1 = loader.safeLoadAll; + var dump$1 = dumper.dump; + var safeDump$1 = dumper.safeDump; + var YAMLException$1 = exception; // Deprecated schema names from JS-YAML 2.0.x + var MINIMAL_SCHEMA = failsafe; - var SAFE_SCHEMA = default_safe; - var DEFAULT_SCHEMA = default_full; + var SAFE_SCHEMA = default_safe; + var DEFAULT_SCHEMA = default_full; // Deprecated functions from JS-YAML 1.x.x - // Deprecated functions from JS-YAML 1.x.x - var scan = deprecated('scan'); - var parse = deprecated('parse'); - var compose = deprecated('compose'); + var scan = deprecated('scan'); + var parse = deprecated('parse'); + var compose = deprecated('compose'); var addConstructor = deprecated('addConstructor'); - var jsYaml = { - Type: Type$1, - Schema: Schema$1, - FAILSAFE_SCHEMA: FAILSAFE_SCHEMA, - JSON_SCHEMA: JSON_SCHEMA, - CORE_SCHEMA: CORE_SCHEMA, - DEFAULT_SAFE_SCHEMA: DEFAULT_SAFE_SCHEMA, - DEFAULT_FULL_SCHEMA: DEFAULT_FULL_SCHEMA, - load: load$1, - loadAll: loadAll$1, - safeLoad: safeLoad$1, - safeLoadAll: safeLoadAll$1, - dump: dump$1, - safeDump: safeDump$1, - YAMLException: YAMLException$1, - MINIMAL_SCHEMA: MINIMAL_SCHEMA, - SAFE_SCHEMA: SAFE_SCHEMA, - DEFAULT_SCHEMA: DEFAULT_SCHEMA, - scan: scan, - parse: parse, - compose: compose, - addConstructor: addConstructor + Type: Type$1, + Schema: Schema$1, + FAILSAFE_SCHEMA: FAILSAFE_SCHEMA, + JSON_SCHEMA: JSON_SCHEMA, + CORE_SCHEMA: CORE_SCHEMA, + DEFAULT_SAFE_SCHEMA: DEFAULT_SAFE_SCHEMA, + DEFAULT_FULL_SCHEMA: DEFAULT_FULL_SCHEMA, + load: load$1, + loadAll: loadAll$1, + safeLoad: safeLoad$1, + safeLoadAll: safeLoadAll$1, + dump: dump$1, + safeDump: safeDump$1, + YAMLException: YAMLException$1, + MINIMAL_SCHEMA: MINIMAL_SCHEMA, + SAFE_SCHEMA: SAFE_SCHEMA, + DEFAULT_SCHEMA: DEFAULT_SCHEMA, + scan: scan, + parse: parse, + compose: compose, + addConstructor: addConstructor }; var jsYaml$1 = jsYaml; diff --git a/dist/redirects.js.map b/dist/redirects.js.map index 56239b36d..e19b6ee78 100644 --- a/dist/redirects.js.map +++ b/dist/redirects.js.map @@ -1 +1 @@ -{"version":3,"file":"redirects.js","sources":["../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../src/redirects/redirects.js"],"sourcesContent":["function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n // base 10 (except 0) or base 60\n\n // value should not start with `_`;\n if (ch === '_') return false;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n // Should have digits and should not end with `_`\n if (!hasDigits || ch === '_') return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n octal: function (obj) { return obj >= 0 ? '0' + obj.toString(8) : '-0' + obj.toString(8).slice(1); },\n decimal: function (obj) { return obj.toString(10); },\n /* eslint-disable max-len */\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n // 20:59\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data) ||\n // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === '_') {\n return false;\n }\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) {\n // Support node 6.+ Buffer API when available\n return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result);\n }\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /* eslint-disable no-redeclare */\n /* global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n ast.body[0].expression.type !== 'FunctionExpression')) {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n ast.body[0].expression.type !== 'FunctionExpression')) {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n if (ast.body[0].expression.body.type === 'BlockStatement') {\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n }\n // ES6 arrow functions can omit the BlockStatement. In that case, just return\n // the body.\n /*eslint-disable no-new-func*/\n return new Function(params, 'return ' + source.slice(body[0], body[1]));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n /* eslint-disable indent */\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n );\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) {\n var index, quantity;\n\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys');\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]';\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]';\n }\n\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n state.line = startLine || state.line;\n state.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _pos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n _pos = state.position;\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"! [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for ! tag; it should be \"scalar\", not \"' + state.kind + '\"');\n }\n\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n var nullpos = input.indexOf('\\0');\n\n if (nullpos !== -1) {\n state.position = nullpos;\n throwError(state, 'null byte is not allowed in input');\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n var documents = loadDocuments(input, options);\n\n if (typeof iterator !== 'function') {\n return documents;\n }\n\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, iterator, options) {\n if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN = 0x0D; /* CR */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_EQUALS = 0x3D; /* = */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.noArrayIndent = options['noArrayIndent'] || false;\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n this.condenseFlow = options['condenseFlow'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// [24] b-line-feed ::= #xA /* LF */\n// [25] b-carriage-return ::= #xD /* CR */\n// [3] c-byte-order-mark ::= #xFEFF\nfunction isNsChar(c) {\n return isPrintable(c) && !isWhitespace(c)\n // byte-order-mark\n && c !== 0xFEFF\n // b-char\n && c !== CHAR_CARRIAGE_RETURN\n && c !== CHAR_LINE_FEED;\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c, prev) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n // /* An ns-char preceding */ \"#\"\n && c !== CHAR_COLON\n && ((c !== CHAR_SHARP) || (prev && isNsChar(prev)));\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_EQUALS\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n var leadingSpaceRe = /^\\n* /;\n return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char, prev_char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n plain = plain && isPlainSafe(char, prev_char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n plain = plain && isPlainSafe(char, prev_char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char, nextChar;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n // Check for surrogate pairs (reference Unicode 3.0 section \"3.7 Surrogates\").\n if (char >= 0xD800 && char <= 0xDBFF/* high surrogate */) {\n nextChar = string.charCodeAt(i + 1);\n if (nextChar >= 0xDC00 && nextChar <= 0xDFFF/* low surrogate */) {\n // Combine the surrogate pair and store it escaped.\n result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000);\n // Advance index one extra since we already used that char here.\n i++; continue;\n }\n }\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ',' + (!state.condenseFlow ? ' ' : '');\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-';\n } else {\n _result += '- ';\n }\n\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n pairBuffer = '';\n if (index !== 0) pairBuffer += ', ';\n\n if (state.condenseFlow) pairBuffer += '\"';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n var arrayLevel = (state.noArrayIndent && (level > 0)) ? level - 1 : level;\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, arrayLevel, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, arrayLevel, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import jsYaml from 'js-yaml';\n\n/**\n * Redirect - object used to redirect some requests\n * e.g.\n * {\n * title: 1x1-transparent.gif\n * comment: http://probablyprogramming.com/2009/03/15/the-tiniest-gif-ever\n * contentType: image/gif;base64\n * content: R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\n * }\n * @typedef {Object} Redirect\n * @property {string} title\n * @property {string} comment\n * @property {string} content\n * @property {string} contentType\n */\n\nclass Redirects {\n /**\n * Converts rawYaml into JS object with sources titles used as keys\n * @param rawYaml\n * @returns {Object} - return object with titles in the keys and RedirectSources\n * in the values\n */\n constructor(rawYaml) {\n try {\n const arrOfRedirects = jsYaml.safeLoad(rawYaml);\n this.redirects = arrOfRedirects.reduce((acc, redirect) => {\n return {\n ...acc,\n [redirect.title]: redirect,\n };\n }, {});\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(`Was unable to load YAML into JS due to: ${e.message}`);\n throw e;\n }\n }\n\n /**\n * Returns redirect source object\n * @param {string} title\n * @return {Redirect}\n */\n getRedirect(title) {\n if (Object.prototype.hasOwnProperty.call(this.redirects, title)) {\n return this.redirects[title];\n }\n\n // look title among aliases\n const values = Object.keys(this.redirects)\n .map((key) => this.redirects[key]);\n return values.find((redirect) => {\n const { aliases } = redirect;\n if (!aliases) {\n return false;\n }\n return aliases.indexOf(title) > -1;\n });\n }\n}\n\nexport default Redirects;\n"],"names":["YAMLException","type","Type","Schema","require$$0","require$$1","require$$2","require$$3","require$$4","require","_toString","_hasOwnProperty","require$$5","require$$6","_require","DEFAULT_FULL_SCHEMA","Mark","DEFAULT_SAFE_SCHEMA","State","require$$7","yaml","Redirects","rawYaml","arrOfRedirects","jsYaml","safeLoad","redirects","reduce","acc","redirect","title","e","console","log","message","Object","prototype","hasOwnProperty","call","values","keys","map","key","find","aliases","indexOf"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"redirects.js","sources":["../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../src/redirects/redirects.js"],"sourcesContent":["function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n // base 10 (except 0) or base 60\n\n // value should not start with `_`;\n if (ch === '_') return false;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n // Should have digits and should not end with `_`\n if (!hasDigits || ch === '_') return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n octal: function (obj) { return obj >= 0 ? '0' + obj.toString(8) : '-0' + obj.toString(8).slice(1); },\n decimal: function (obj) { return obj.toString(10); },\n /* eslint-disable max-len */\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n // 20:59\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data) ||\n // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === '_') {\n return false;\n }\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) {\n // Support node 6.+ Buffer API when available\n return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result);\n }\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /* eslint-disable no-redeclare */\n /* global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n ast.body[0].expression.type !== 'FunctionExpression')) {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n ast.body[0].expression.type !== 'FunctionExpression')) {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n if (ast.body[0].expression.body.type === 'BlockStatement') {\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n }\n // ES6 arrow functions can omit the BlockStatement. In that case, just return\n // the body.\n /*eslint-disable no-new-func*/\n return new Function(params, 'return ' + source.slice(body[0], body[1]));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n /* eslint-disable indent */\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n );\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) {\n var index, quantity;\n\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys');\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]';\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]';\n }\n\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n state.line = startLine || state.line;\n state.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _pos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n _pos = state.position;\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"! [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for ! tag; it should be \"scalar\", not \"' + state.kind + '\"');\n }\n\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n var nullpos = input.indexOf('\\0');\n\n if (nullpos !== -1) {\n state.position = nullpos;\n throwError(state, 'null byte is not allowed in input');\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n var documents = loadDocuments(input, options);\n\n if (typeof iterator !== 'function') {\n return documents;\n }\n\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, iterator, options) {\n if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN = 0x0D; /* CR */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_EQUALS = 0x3D; /* = */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.noArrayIndent = options['noArrayIndent'] || false;\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n this.condenseFlow = options['condenseFlow'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// [24] b-line-feed ::= #xA /* LF */\n// [25] b-carriage-return ::= #xD /* CR */\n// [3] c-byte-order-mark ::= #xFEFF\nfunction isNsChar(c) {\n return isPrintable(c) && !isWhitespace(c)\n // byte-order-mark\n && c !== 0xFEFF\n // b-char\n && c !== CHAR_CARRIAGE_RETURN\n && c !== CHAR_LINE_FEED;\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c, prev) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n // /* An ns-char preceding */ \"#\"\n && c !== CHAR_COLON\n && ((c !== CHAR_SHARP) || (prev && isNsChar(prev)));\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_EQUALS\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n var leadingSpaceRe = /^\\n* /;\n return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char, prev_char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n plain = plain && isPlainSafe(char, prev_char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n plain = plain && isPlainSafe(char, prev_char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char, nextChar;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n // Check for surrogate pairs (reference Unicode 3.0 section \"3.7 Surrogates\").\n if (char >= 0xD800 && char <= 0xDBFF/* high surrogate */) {\n nextChar = string.charCodeAt(i + 1);\n if (nextChar >= 0xDC00 && nextChar <= 0xDFFF/* low surrogate */) {\n // Combine the surrogate pair and store it escaped.\n result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000);\n // Advance index one extra since we already used that char here.\n i++; continue;\n }\n }\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ',' + (!state.condenseFlow ? ' ' : '');\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-';\n } else {\n _result += '- ';\n }\n\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n pairBuffer = '';\n if (index !== 0) pairBuffer += ', ';\n\n if (state.condenseFlow) pairBuffer += '\"';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n var arrayLevel = (state.noArrayIndent && (level > 0)) ? level - 1 : level;\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, arrayLevel, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, arrayLevel, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import jsYaml from 'js-yaml';\n\n/**\n * Redirect - object used to redirect some requests\n * e.g.\n * {\n * title: 1x1-transparent.gif\n * comment: http://probablyprogramming.com/2009/03/15/the-tiniest-gif-ever\n * contentType: image/gif;base64\n * content: R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\n * }\n * @typedef {Object} Redirect\n * @property {string} title\n * @property {string} comment\n * @property {string} content\n * @property {string} contentType\n */\n\nclass Redirects {\n /**\n * Converts rawYaml into JS object with sources titles used as keys\n * @param rawYaml\n * @returns {Object} - return object with titles in the keys and RedirectSources\n * in the values\n */\n constructor(rawYaml) {\n try {\n const arrOfRedirects = jsYaml.safeLoad(rawYaml);\n this.redirects = arrOfRedirects.reduce((acc, redirect) => {\n return {\n ...acc,\n [redirect.title]: redirect,\n };\n }, {});\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(`Was unable to load YAML into JS due to: ${e.message}`);\n throw e;\n }\n }\n\n /**\n * Returns redirect source object\n * @param {string} title\n * @return {Redirect}\n */\n getRedirect(title) {\n if (Object.prototype.hasOwnProperty.call(this.redirects, title)) {\n return this.redirects[title];\n }\n\n // look title among aliases\n const values = Object.keys(this.redirects)\n .map((key) => this.redirects[key]);\n return values.find((redirect) => {\n const { aliases } = redirect;\n if (!aliases) {\n return false;\n }\n return aliases.indexOf(title) > -1;\n });\n }\n}\n\nexport default Redirects;\n"],"names":["_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","_createClass","protoProps","staticProps","prototype","isNothing","subject","isObject","toArray","sequence","Array","isArray","extend","source","index","sourceKeys","keys","repeat","string","count","result","cycle","isNegativeZero","number","Number","NEGATIVE_INFINITY","YAMLException","reason","mark","Error","call","name","message","toString","captureStackTrace","constructor","stack","create","compact","Mark","buffer","position","line","column","getSnippet","indent","maxLength","head","start","tail","end","snippet","indexOf","charAt","slice","common","where","TYPE_CONSTRUCTOR_OPTIONS","YAML_NODE_KINDS","compileStyleAliases","map","forEach","style","alias","String","Type","tag","options","kind","resolve","construct","data","instanceOf","predicate","represent","defaultStyle","styleAliases","compileList","schema","exclude","include","includedSchema","currentType","previousType","previousIndex","push","filter","type","compileMap","scalar","mapping","fallback","collectType","arguments","Schema","definition","implicit","explicit","loadKind","compiledImplicit","compiledExplicit","compiledTypeMap","DEFAULT","createSchema","schemas","types","every","require$$0","require$$1","require$$2","resolveYamlNull","max","constructYamlNull","isNull","object","canonical","lowercase","uppercase","camelcase","resolveYamlBoolean","constructYamlBoolean","isBoolean","isHexCode","c","isOctCode","isDecCode","resolveYamlInteger","hasDigits","ch","charCodeAt","test","constructYamlInteger","sign","base","digits","replace","parseInt","split","v","unshift","d","isInteger","binary","octal","decimal","hexadecimal","toUpperCase","YAML_FLOAT_PATTERN","RegExp","resolveYamlFloat","constructYamlFloat","toLowerCase","POSITIVE_INFINITY","NaN","parseFloat","SCIENTIFIC_WITHOUT_DOT","representYamlFloat","res","isNaN","isFloat","require$$3","require$$4","YAML_DATE_REGEXP","YAML_TIMESTAMP_REGEXP","resolveYamlTimestamp","exec","constructYamlTimestamp","match","year","month","day","hour","minute","second","fraction","delta","tz_hour","tz_minute","date","Date","UTC","setTime","getTime","representYamlTimestamp","toISOString","resolveYamlMerge","NodeBuffer","_require","require","Buffer","__","BASE64_MAP","resolveYamlBinary","code","idx","bitlen","constructYamlBinary","tailbits","input","bits","from","representYamlBinary","isBinary","isBuffer","_hasOwnProperty","hasOwnProperty","_toString","resolveYamlOmap","objectKeys","pair","pairKey","pairHasKey","constructYamlOmap","resolveYamlPairs","constructYamlPairs","resolveYamlSet","constructYamlSet","require$$5","require$$6","resolveJavascriptUndefined","constructJavascriptUndefined","undefined","representJavascriptUndefined","isUndefined","resolveJavascriptRegExp","regexp","modifiers","constructJavascriptRegExp","representJavascriptRegExp","global","multiline","ignoreCase","isRegExp","esprima","_","window","resolveJavascriptFunction","ast","parse","range","body","expression","err","constructJavascriptFunction","params","param","Function","representJavascriptFunction","isFunction","CONTEXT_FLOW_IN","CONTEXT_FLOW_OUT","CONTEXT_BLOCK_IN","CONTEXT_BLOCK_OUT","CHOMPING_CLIP","CHOMPING_STRIP","CHOMPING_KEEP","PATTERN_NON_PRINTABLE","PATTERN_NON_ASCII_LINE_BREAKS","PATTERN_FLOW_INDICATORS","PATTERN_TAG_HANDLE","PATTERN_TAG_URI","_class","is_EOL","is_WHITE_SPACE","is_WS_OR_EOL","is_FLOW_INDICATOR","fromHexCode","lc","escapedHexLen","fromDecimalCode","simpleEscapeSequence","charFromCodepoint","fromCharCode","simpleEscapeCheck","simpleEscapeMap","State","filename","DEFAULT_FULL_SCHEMA","onWarning","legacy","json","listener","implicitTypes","typeMap","lineStart","lineIndent","documents","generateError","state","throwError","throwWarning","directiveHandlers","YAML","handleYamlDirective","args","major","minor","version","checkLineBreaks","TAG","handleTagDirective","handle","prefix","tagMap","captureSegment","checkJson","_position","_length","_character","_result","mergeMappings","destination","overridableKeys","quantity","storeMappingPair","keyTag","keyNode","valueNode","startLine","startPos","readLineBreak","skipSeparationSpace","allowComments","checkIndent","lineBreaks","testDocumentSeparator","writeFoldedLines","readPlainScalar","nodeIndent","withinFlowCollection","preceding","following","captureStart","captureEnd","hasPendingContent","_line","_lineStart","_lineIndent","_kind","readSingleQuotedScalar","readDoubleQuotedScalar","hexLength","hexResult","tmp","readFlowCollection","readNext","_tag","_anchor","anchor","terminator","isPair","isExplicitPair","isMapping","anchorMap","composeNode","readBlockScalar","folding","chomping","didReadContent","detectedIndent","textIndent","emptyLines","atMoreIndented","readBlockSequence","detected","readBlockMapping","flowIndent","allowCompact","_pos","atExplicitKey","readTagProperty","isVerbatim","isNamed","tagHandle","tagName","readAnchorProperty","readAlias","parentIndent","nodeContext","allowToSeek","allowBlockStyles","allowBlockScalars","allowBlockCollections","indentStatus","atNewLine","hasContent","typeIndex","typeQuantity","blockIndent","readDocument","documentStart","directiveName","directiveArgs","hasDirectives","loadDocuments","nullpos","loadAll","iterator","load","safeLoadAll","DEFAULT_SAFE_SCHEMA","safeLoad","CHAR_TAB","CHAR_LINE_FEED","CHAR_CARRIAGE_RETURN","CHAR_SPACE","CHAR_EXCLAMATION","CHAR_DOUBLE_QUOTE","CHAR_SHARP","CHAR_PERCENT","CHAR_AMPERSAND","CHAR_SINGLE_QUOTE","CHAR_ASTERISK","CHAR_COMMA","CHAR_MINUS","CHAR_COLON","CHAR_EQUALS","CHAR_GREATER_THAN","CHAR_QUESTION","CHAR_COMMERCIAL_AT","CHAR_LEFT_SQUARE_BRACKET","CHAR_RIGHT_SQUARE_BRACKET","CHAR_GRAVE_ACCENT","CHAR_LEFT_CURLY_BRACKET","CHAR_VERTICAL_LINE","CHAR_RIGHT_CURLY_BRACKET","ESCAPE_SEQUENCES","DEPRECATED_BOOLEANS_SYNTAX","compileStyleMap","encodeHex","character","Math","noArrayIndent","skipInvalid","flowLevel","styleMap","sortKeys","lineWidth","noRefs","noCompatMode","condenseFlow","explicitTypes","duplicates","usedDuplicates","indentString","spaces","ind","next","generateNextLine","level","testImplicitResolving","str","isWhitespace","isPrintable","isNsChar","isPlainSafe","prev","isPlainSafeFirst","needIndentIndicator","leadingSpaceRe","STYLE_PLAIN","STYLE_SINGLE","STYLE_LITERAL","STYLE_FOLDED","STYLE_DOUBLE","chooseScalarStyle","singleLineOnly","indentPerLevel","testAmbiguousType","char","prev_char","hasLineBreak","hasFoldableLine","shouldTrackWidth","previousLineBreak","plain","writeScalar","iskey","dump","min","testAmbiguity","blockHeader","dropEndingNewline","foldString","escapeString","indentIndicator","clip","keep","chomp","width","lineRe","nextLF","lastIndex","foldLine","prevMoreIndented","moreIndented","breakRe","curr","nextChar","escapeSeq","writeFlowSequence","writeNode","writeBlockSequence","writeFlowMapping","objectKeyList","objectKey","objectValue","pairBuffer","writeBlockMapping","explicitPair","sort","detectType","typeList","block","objectOrArray","duplicateIndex","duplicate","arrayLevel","getDuplicateReferences","objects","duplicatesIndexes","inspectNode","safeDump","deprecated","loader","dumper","require$$7","yaml","Redirects","rawYaml","arrOfRedirects","jsYaml","redirects","reduce","acc","redirect","title","e","console","log","values","find","aliases"],"mappings":"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"} \ No newline at end of file diff --git a/dist/scriptlets.js b/dist/scriptlets.js index 2895852ea..a50410351 100644 --- a/dist/scriptlets.js +++ b/dist/scriptlets.js @@ -4846,8 +4846,6 @@ AmazonApstag.names = ['amazon-apstag', 'ubo-amazon_apstag.js', 'amazon_apstag.js']; AmazonApstag.injections = [hit, noopFunc]; - - var redirectsList = /*#__PURE__*/Object.freeze({ __proto__: null, noeval: noeval, diff --git a/dist/scriptlets.js.map b/dist/scriptlets.js.map index 73e368770..c1e092eb3 100644 --- a/dist/scriptlets.js.map +++ b/dist/scriptlets.js.map @@ -1 +1 @@ -{"version":3,"file":"scriptlets.js","sources":["../src/helpers/random-id.js","../src/helpers/set-property-access.js","../src/helpers/get-property-in-chain.js","../src/helpers/string-utils.js","../src/helpers/create-on-error-handler.js","../src/helpers/noop.js","../src/helpers/hit.js","../src/helpers/observer.js","../src/helpers/match-stack.js","../src/helpers/index.js","../src/helpers/injector.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../src/helpers/parse-rule.js","../src/scriptlets/abort-on-property-read.js","../src/scriptlets/abort-on-property-write.js","../src/scriptlets/prevent-setTimeout.js","../src/scriptlets/prevent-setInterval.js","../src/scriptlets/prevent-window-open.js","../src/scriptlets/abort-current-inline-script.js","../src/scriptlets/set-constant.js","../src/scriptlets/remove-cookie.js","../src/scriptlets/prevent-addEventListener.js","../src/scriptlets/prevent-bab.js","../src/scriptlets/nowebrtc.js","../src/scriptlets/log-addEventListener.js","../src/scriptlets/log-eval.js","../src/scriptlets/log.js","../src/scriptlets/noeval.js","../src/scriptlets/prevent-eval-if.js","../src/scriptlets/prevent-fab-3.2.0.js","../src/scriptlets/set-popads-dummy.js","../src/scriptlets/prevent-popads-net.js","../src/scriptlets/prevent-adfly.js","../src/scriptlets/debug-on-property-read.js","../src/scriptlets/debug-on-property-write.js","../src/scriptlets/debug-current-inline-script.js","../src/scriptlets/remove-attr.js","../src/scriptlets/remove-class.js","../src/scriptlets/disable-newtab-links.js","../src/scriptlets/adjust-setInterval.js","../src/scriptlets/adjust-setTimeout.js","../src/scriptlets/dir-string.js","../src/scriptlets/json-prune.js","../src/scriptlets/prevent-requestAnimationFrame.js","../src/scriptlets/set-cookie.js","../src/scriptlets/scriptletsList.js","../src/helpers/validator.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/toArray.js","../src/helpers/converter.js","../src/redirects/google-analytics.js","../src/redirects/google-analytics-ga.js","../src/redirects/googlesyndication-adsbygoogle.js","../src/redirects/googletagmanager-gtm.js","../src/redirects/googletagservices-gpt.js","../src/redirects/scorecardresearch-beacon.js","../src/redirects/metrika-yandex-tag.js","../src/redirects/metrika-yandex-watch.js","../src/redirects/amazon-apstag.js","../src/redirects/index.js","../src/scriptlets/index.js","../src/scriptlets/scriptletsWrapper.js"],"sourcesContent":["/**\n * Generate random six symbols id\n */\nexport function randomId() {\n return Math.random().toString(36).substr(2, 9);\n}\n","/**\n * Set getter and setter to property if it's configurable\n * @param {Object} object target object with property\n * @param {string} property property name\n * @param {Object} descriptor contains getter and setter functions\n * @returns {boolean} is operation successful\n */\nexport function setPropertyAccess(object, property, descriptor) {\n const currentDescriptor = Object.getOwnPropertyDescriptor(object, property);\n if (currentDescriptor && !currentDescriptor.configurable) {\n return false;\n }\n Object.defineProperty(object, property, descriptor);\n return true;\n}\n","/**\n * @typedef Chain\n * @property {Object} base\n * @property {string} prop\n * @property {string} [chain]\n */\n\n/**\n * Check is property exist in base object recursively\n *\n * If property doesn't exist in base object,\n * defines this property (for addProp = true)\n * and returns base, property name and remaining part of property chain\n *\n * @param {Object} base\n * @param {string} chain\n * @param {boolean} [addProp=true]\n * defines is nonexistent base property should be assigned as 'undefined'\n * @returns {Chain}\n */\nexport function getPropertyInChain(base, chain, addProp = true) {\n const pos = chain.indexOf('.');\n if (pos === -1) {\n return { base, prop: chain };\n }\n const prop = chain.slice(0, pos);\n const own = base[prop];\n chain = chain.slice(pos + 1);\n if (own !== undefined) {\n return getPropertyInChain(own, chain, addProp);\n }\n\n if (!addProp) {\n return false;\n }\n\n Object.defineProperty(base, prop, { configurable: true });\n return { base: own, prop, chain };\n}\n","/**\n * Escapes special chars in string\n * @param {string} str\n * @returns {string}\n */\nexport const escapeRegExp = (str) => str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n/**\n * Converts search string to the regexp\n * TODO think about nested dependencies, but be careful with dependency loops\n * @param {string} str search string\n * @returns {RegExp}\n */\nexport const toRegExp = (str) => {\n if (str[0] === '/' && str[str.length - 1] === '/') {\n return new RegExp(str.slice(1, -1));\n }\n const escaped = str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n return new RegExp(escaped);\n};\n\n/**\n * Get string before regexp first match\n * @param {string} str\n * @param {RegExp} rx\n */\nexport const getBeforeRegExp = (str, rx) => {\n const index = str.search(rx);\n return str.substring(0, index);\n};\n\nexport const startsWith = (str, prefix) => {\n return str && str.indexOf(prefix) === 0;\n};\n\nexport const endsWith = (str, prefix) => {\n return str && str.indexOf(prefix) === str.length - 1;\n};\n\nexport const substringAfter = (str, separator) => {\n if (!str) {\n return str;\n }\n const index = str.indexOf(separator);\n return index < 0 ? '' : str.substring(index + separator.length);\n};\n\nexport const substringBefore = (str, separator) => {\n if (!str || !separator) {\n return str;\n }\n const index = str.indexOf(separator);\n return index < 0 ? str : str.substring(0, index);\n};\n\n/**\n * Wrap str in single qoutes and replaces single quotes to doudle one\n * @param {string} str\n */\nexport const wrapInSingleQuotes = (str) => {\n if ((str[0] === '\\'' && str[str.length - 1] === '\\'')\n || (str[0] === '\"' && str[str.length - 1] === '\"')) {\n str = str.substring(1, str.length - 1);\n }\n // eslint-disable-next-line no-useless-escape\n str = str.replace(/\\'/g, '\"');\n\n return `'${str}'`;\n};\n\n/**\n * Returns substring enclosed in the widest braces\n * @param {string} str\n */\nexport const getStringInBraces = (str) => {\n const firstIndex = str.indexOf('(');\n const lastIndex = str.lastIndexOf(')');\n return str.substring(firstIndex + 1, lastIndex);\n};\n","/**\n * Generates function which silents global errors on page generated by scriptlet\n * If error doesn't belong to our error we transfer it to the native onError handler\n * @param {string} rid - unique identifier of scriptlet\n * @return {onError}\n */\nexport function createOnErrorHandler(rid) {\n // eslint-disable-next-line consistent-return\n const nativeOnError = window.onerror;\n return function onError(error, ...args) {\n if (typeof error === 'string' && error.indexOf(rid) !== -1) {\n return true;\n }\n if (nativeOnError instanceof Function) {\n return nativeOnError.apply(this, [error, ...args]);\n }\n return false;\n };\n}\n","/**\n * Noop function\n */\nexport const noopFunc = () => { };\n\n/**\n * Function returns null\n */\nexport const noopNull = () => null;\n\n/**\n * Function returns true\n */\nexport const trueFunc = () => true;\n\n/**\n * Function returns false\n */\nexport const falseFunc = () => false;\n\n/**\n * Function returns this\n */\nexport function noopThis() {\n return this;\n}\n\n/**\n * Function returns empty array\n */\nexport const noopArray = () => [];\n\n/**\n * Function returns empty string\n */\nexport const noopStr = () => '';\n","/* eslint-disable no-console, no-underscore-dangle */\n/**\n * Hit used only for debug purposes now\n * @param {Source} source\n * @param {string} [message] - optional message;\n * use LOG_MARKER = 'log: ' at the start of a message\n * for logging scriptlets\n */\nexport const hit = (source, message) => {\n if (source.verbose !== true) {\n return;\n }\n\n try {\n const log = console.log.bind(console);\n const trace = console.trace.bind(console);\n\n let prefix = source.ruleText || '';\n\n if (source.domainName) {\n const AG_SCRIPTLET_MARKER = '#%#//';\n const UBO_SCRIPTLET_MARKER = '##+js';\n let ruleStartIndex;\n if (source.ruleText.indexOf(AG_SCRIPTLET_MARKER) > -1) {\n ruleStartIndex = source.ruleText.indexOf(AG_SCRIPTLET_MARKER);\n } else if (source.ruleText.indexOf(UBO_SCRIPTLET_MARKER) > -1) {\n ruleStartIndex = source.ruleText.indexOf(UBO_SCRIPTLET_MARKER);\n }\n // delete all domains from ruleText and leave just rule part\n const rulePart = source.ruleText.slice(ruleStartIndex);\n // prepare applied scriptlet rule for specific domain\n prefix = `${source.domainName}${rulePart}`;\n }\n\n // Used to check if scriptlet uses 'hit' function for logging\n const LOG_MARKER = 'log: ';\n\n if (message) {\n if (message.indexOf(LOG_MARKER) === -1) {\n log(`${prefix} message:\\n${message}`);\n } else {\n log(message.slice(LOG_MARKER.length));\n }\n }\n\n log(`${prefix} trace start`);\n if (trace) {\n trace();\n }\n log(`${prefix} trace end`);\n } catch (e) {\n // try catch for Edge 15\n // In according to this issue https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/14495220/\n // console.log throws an error\n }\n\n // This is necessary for unit-tests only!\n if (typeof window.__debug === 'function') {\n window.__debug(source);\n }\n};\n","/**\n * DOM tree changes observer. Used for 'remove-attr' and 'remove-class' scriptlets\n * @param {Function} callback\n * @param {Boolean} observeAttrs - optional parameter - should observer check attibutes changes\n */\nexport const observeDOMChanges = (callback, observeAttrs = false, attrsToObserv = []) => {\n /**\n * Returns a wrapper, passing the call to 'method' at maximum once per 'delay' milliseconds.\n * Those calls that fall into the \"cooldown\" period, are ignored\n * @param {Function} method\n * @param {Number} delay - milliseconds\n */\n const throttle = (method, delay) => {\n let wait = false;\n let savedArgs;\n const wrapper = (...args) => {\n if (wait) {\n savedArgs = args;\n return;\n }\n method(...args);\n wait = true;\n setTimeout(() => {\n wait = false;\n if (savedArgs) {\n wrapper(savedArgs);\n savedArgs = null;\n }\n }, delay);\n };\n return wrapper;\n };\n\n /**\n * 'delay' in milliseconds for 'throttle' method\n */\n const THROTTLE_DELAY_MS = 20;\n /**\n * Used for remove-class\n */\n // eslint-disable-next-line no-use-before-define\n const observer = new MutationObserver(throttle(callbackWrapper, THROTTLE_DELAY_MS));\n\n const connect = () => {\n if (attrsToObserv.length > 0) {\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n attributes: observeAttrs,\n attributeFilter: attrsToObserv,\n });\n } else {\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n attributes: observeAttrs,\n });\n }\n };\n const disconnect = () => {\n observer.disconnect();\n };\n function callbackWrapper() {\n disconnect();\n callback();\n connect();\n }\n\n connect();\n};\n","/**\n * Checks if the stackTrace contains stackRegexp\n * // https://github.com/AdguardTeam/Scriptlets/issues/82\n * @param {string} stackRegexp - stack regexp\n * @param {string} stackTrace - script error stack trace\n * @returns {boolean}\n */\n\nexport const matchStackTrace = (stackRegexp, stackTrace) => {\n const refinedStackTrace = stackTrace\n .split('\\n')\n .slice(2) // get rid of our own functions in the stack trace\n .map((line) => line.trim()) // trim the lines\n .join('\\n');\n\n return stackRegexp.test(refinedStackTrace);\n};\n","/**\n * This file must export all used dependencies\n */\nexport * from './random-id';\nexport * from './set-property-access';\nexport * from './get-property-in-chain';\nexport * from './string-utils';\nexport * from './create-on-error-handler';\nexport * from './noop';\nexport * from './hit';\nexport * from './observer';\nexport * from './match-stack';\n","import * as dependencies from '.';\n\n/**\n * Concat dependencies to scriptlet code\n * @param {string} scriptlet string view of scriptlet\n */\nexport function attachDependencies(scriptlet) {\n const { injections = [] } = scriptlet;\n return injections.reduce((accum, dep) => `${accum}\\n${dependencies[dep.name]}`, scriptlet.toString());\n}\n\n/**\n * Add scriptlet call to existing code\n * @param {Function} scriptlet\n * @param {string} code\n */\nexport function addCall(scriptlet, code) {\n return `${code};\n const updatedArgs = args ? [].concat(source).concat(args) : [source];\n ${scriptlet.name}.apply(this, updatedArgs);\n `;\n}\n\n/**\n * Wrap function into IIFE (Immediately invoked function expression)\n *\n * @param {Source} source - object with scriptlet properties\n * @param {string} code - scriptlet source code with dependencies\n *\n * @returns {string} full scriptlet code\n *\n * @example\n * const source = {\n * args: [\"aaa\", \"bbb\"],\n * name: 'noeval',\n * };\n * const code = \"function noeval(source, args) { alert(source); } noeval.apply(this, args);\"\n * const result = wrapInIIFE(source, code);\n *\n * // result\n * `(function(source, args) {\n * function noeval(source) { alert(source); }\n * noeval.apply(this, args);\n * )({\"args\": [\"aaa\", \"bbb\"], \"name\":\"noeval\"}, [\"aaa\", \"bbb\"])`\n */\nexport function passSourceAndProps(source, code) {\n if (source.hit) {\n source.hit = source.hit.toString();\n }\n const sourceString = JSON.stringify(source);\n const argsString = source.args ? `[${source.args.map(JSON.stringify)}]` : undefined;\n const params = argsString ? `${sourceString}, ${argsString}` : sourceString;\n return `(function(source, args){\\n${code}\\n})(${params});`;\n}\n\n/**\n * Wrap code in no name function\n * @param {string} code which must be wrapped\n */\nexport function wrapInNonameFunc(code) {\n return `function(source, args){\\n${code}\\n}`;\n}\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","/**\n * Iterate over iterable argument and evaluate current state with transitions\n * @param {string} init first transition name\n * @param {Array|Collection|string} iterable\n * @param {Object} transitions transtion functions\n * @param {any} args arguments which should be passed to transition functions\n */\nfunction iterateWithTransitions(iterable, transitions, init, args) {\n let state = init || Object.keys(transitions)[0];\n for (let i = 0; i < iterable.length; i += 1) {\n state = transitions[state](iterable, i, args);\n }\n return state;\n}\n\n/**\n * AdGuard scriptlet rule mask\n */\nexport const ADG_SCRIPTLET_MASK = '#//scriptlet';\n\n/**\n * Helper to accumulate an array of strings char by char\n */\nconst wordSaver = () => {\n let str = '';\n const strs = [];\n const saveSymb = (s) => {\n str += s;\n return str;\n };\n const saveStr = () => {\n strs.push(str);\n str = '';\n };\n const getAll = () => [...strs];\n\n return { saveSymb, saveStr, getAll };\n};\n\nconst substringAfter = (str, separator) => {\n if (!str) {\n return str;\n }\n const index = str.indexOf(separator);\n return index < 0 ? '' : str.substring(index + separator.length);\n};\n\n/**\n * Parse and validate scriptlet rule\n * @param {*} ruleText\n * @returns {{name: string, args: Array}}\n */\nexport const parseRule = (ruleText) => {\n ruleText = substringAfter(ruleText, ADG_SCRIPTLET_MASK);\n /**\n * Transition names\n */\n const TRANSITION = {\n OPENED: 'opened',\n PARAM: 'param',\n CLOSED: 'closed',\n };\n\n /**\n * Transition function: the current index position in start, end or between params\n * @param {string} rule\n * @param {number} index\n * @param {Object} Object\n * @property {Object} Object.sep contains prop symb with current separator char\n */\n const opened = (rule, index, { sep }) => {\n const char = rule[index];\n let transition;\n switch (char) {\n case ' ':\n case '(':\n case ',': {\n transition = TRANSITION.OPENED;\n break;\n }\n case '\\'':\n case '\"': {\n sep.symb = char;\n transition = TRANSITION.PARAM;\n break;\n }\n case ')': {\n transition = index === rule.length - 1\n ? TRANSITION.CLOSED\n : TRANSITION.OPENED;\n break;\n }\n default: {\n throw new Error('The rule is not a scriptlet');\n }\n }\n\n return transition;\n };\n /**\n * Transition function: the current index position inside param\n * @param {string} rule\n * @param {number} index\n * @param {Object} Object\n * @property {Object} Object.sep contains prop `symb` with current separator char\n * @property {Object} Object.saver helper which allow to save strings by car by char\n */\n const param = (rule, index, { saver, sep }) => {\n const char = rule[index];\n switch (char) {\n case '\\'':\n case '\"': {\n const preIndex = index - 1;\n const before = rule[preIndex];\n if (char === sep.symb && before !== '\\\\') {\n sep.symb = null;\n saver.saveStr();\n return TRANSITION.OPENED;\n }\n }\n // eslint-disable-next-line no-fallthrough\n default: {\n saver.saveSymb(char);\n return TRANSITION.PARAM;\n }\n }\n };\n const transitions = {\n [TRANSITION.OPENED]: opened,\n [TRANSITION.PARAM]: param,\n [TRANSITION.CLOSED]: () => { },\n };\n const sep = { symb: null };\n const saver = wordSaver();\n const state = iterateWithTransitions(ruleText, transitions, TRANSITION.OPENED, { sep, saver });\n\n if (state !== 'closed') {\n throw new Error(`Invalid scriptlet rule ${ruleText}`);\n }\n\n const args = saver.getAll();\n return {\n name: args[0],\n args: args.slice(1),\n };\n};\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet abort-on-property-read\n *\n * @description\n * Aborts a script when it attempts to **read** the specified property.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#abort-on-property-readjs-\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/6b2a309054cc23432102b85d13f12559639ef495/lib/content/snippets.js#L864\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('abort-on-property-read', property[, stack])\n * ```\n *\n * - `property` - required, path to a property (joined with `.` if needed). The property must be attached to `window`\n * - `stack` - optional, string or regular expression that must match the current function call stack trace\n *\n * **Examples**\n * ```\n * ! Aborts script when it tries to access `window.alert`\n * example.org#%#//scriptlet('abort-on-property-read', 'alert')\n *\n * ! Aborts script when it tries to access `navigator.language`\n * example.org#%#//scriptlet('abort-on-property-read', 'navigator.language')\n *\n * ! Aborts script when it tries to access `window.adblock` and it's error stack trace contains `test.js`\n * example.org#%#//scriptlet('abort-on-property-read', 'adblock', 'test.js')\n * ```\n */\n/* eslint-enable max-len */\nexport function abortOnPropertyRead(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n\n const rid = randomId();\n const abort = () => {\n hit(source);\n throw new ReferenceError(rid);\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, {\n get: abort,\n set: () => {\n },\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\nabortOnPropertyRead.names = [\n 'abort-on-property-read',\n 'abort-on-property-read.js',\n 'ubo-abort-on-property-read.js',\n 'aopr.js',\n 'ubo-aopr.js',\n 'abp-abort-on-property-read',\n];\nabortOnPropertyRead.injections = [\n randomId,\n toRegExp,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n matchStackTrace,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet abort-on-property-write\n *\n * @description\n * Aborts a script when it attempts to **write** the specified property.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#abort-on-property-writejs-\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/6b2a309054cc23432102b85d13f12559639ef495/lib/content/snippets.js#L896\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('abort-on-property-write', property[, stack])\n * ```\n *\n * - `property` - required, path to a property (joined with `.` if needed). The property must be attached to `window`\n * - `stack` - optional, string or regular expression that must match the current function call stack trace\n *\n * **Examples**\n * ```\n * ! Aborts script when it tries to set `window.adblock` value\n * example.org#%#//scriptlet('abort-on-property-write', 'adblock')\n *\n * ! Aborts script when it tries to set `window.adblock` value and it's error stack trace contains `checking.js`\n * example.org#%#//scriptlet('abort-on-property-write', 'adblock', 'checking.js')\n * ```\n */\n/* eslint-enable max-len */\nexport function abortOnPropertyWrite(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n\n const rid = randomId();\n const abort = () => {\n hit(source);\n throw new ReferenceError(rid);\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, { set: abort });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid).bind();\n}\n\nabortOnPropertyWrite.names = [\n 'abort-on-property-write',\n 'abort-on-property-write.js',\n 'ubo-abort-on-property-write.js',\n 'aopw.js',\n 'ubo-aopw.js',\n 'abp-abort-on-property-write',\n];\n\nabortOnPropertyWrite.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n];\n","import {\n hit, noopFunc, toRegExp, startsWith,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-setTimeout\n *\n * @description\n * Prevents a `setTimeout` call if:\n * 1) the text of the callback is matching the specified search string/regexp which does not start with `!`;\n * otherwise mismatched calls should be defused;\n * 2) the timeout is matching the specified delay; otherwise mismatched calls should be defused.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#no-settimeout-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout'[, search[, delay]])\n * ```\n *\n * Call with no arguments will log calls to setTimeout while debugging (`log-setTimeout` superseding),\n * so production filter lists' rules definitely require at least one of the parameters:\n * - `search` - optional, string or regular expression.\n * If starts with `!`, scriptlet will not match the stringified callback but all other will be defused.\n * If do not start with `!`, the stringified callback will be matched.\n * If not set, prevents all `setTimeout` calls due to specified `delay`.\n * - `delay` - optional, must be an integer.\n * If starts with `!`, scriptlet will not match the delay but all other will be defused.\n * If do not start with `!`, the delay passed to the `setTimeout` call will be matched.\n *\n * **Examples**\n * 1. Prevents `setTimeout` calls if the callback matches `/\\.test/` regardless of the delay.\n * ```bash\n * example.org#%#//scriptlet('prevent-setTimeout', '/\\.test/')\n * ```\n *\n * For instance, the following call will be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"value\";\n * }, 100);\n * ```\n *\n * 2. Prevents `setTimeout` calls if the callback does not contain `value`.\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout', '!value')\n * ```\n *\n * For instance, only the first of the following calls will be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"test -- prevented\";\n * }, 300);\n * setTimeout(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setTimeout(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n *\n * 3. Prevents `setTimeout` calls if the callback contains `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout', 'value', '!300')\n * ```\n *\n * For instance, only the first of the following calls will not be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"value 1 -- executed\";\n * }, 300);\n * setTimeout(function () {\n * window.test = \"value 2 -- prevented\";\n * }, 400);\n * setTimeout(function () {\n * window.test = \"value 3 -- prevented\";\n * }, 500);\n * ```\n *\n * 4. Prevents `setTimeout` calls if the callback does not contain `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout', '!value', '!300')\n * ```\n *\n * For instance, only the second of the following calls will be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"test -- executed\";\n * }, 300);\n * setTimeout(function () {\n * window.test = \"test -- prevented\";\n * }, 400);\n * setTimeout(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setTimeout(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n */\n/* eslint-enable max-len */\nexport function preventSetTimeout(source, match, delay) {\n const nativeTimeout = window.setTimeout;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const log = console.log.bind(console); // eslint-disable-line no-console\n\n // logs setTimeouts to console if no arguments have been specified\n const shouldLog = ((typeof match === 'undefined') && (typeof delay === 'undefined'));\n\n const INVERT_MARKER = '!';\n\n const isNotMatch = startsWith(match, INVERT_MARKER);\n if (isNotMatch) {\n match = match.slice(1);\n }\n const isNotDelay = startsWith(delay, INVERT_MARKER);\n if (isNotDelay) {\n delay = delay.slice(1);\n }\n\n delay = parseInt(delay, 10);\n delay = nativeIsNaN(delay) ? null : delay;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n const timeoutWrapper = (callback, timeout, ...args) => {\n let shouldPrevent = false;\n if (shouldLog) {\n hit(source);\n log(`setTimeout(\"${callback.toString()}\", ${timeout})`);\n } else if (!delay) {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch;\n } else if (match === '/.?/') {\n shouldPrevent = (timeout === delay) !== isNotDelay;\n } else {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch\n && (timeout === delay) !== isNotDelay;\n }\n\n if (shouldPrevent) {\n hit(source);\n return nativeTimeout(noopFunc, timeout);\n }\n\n return nativeTimeout.apply(window, [callback, timeout, ...args]);\n };\n window.setTimeout = timeoutWrapper;\n}\n\npreventSetTimeout.names = [\n 'prevent-setTimeout',\n 'no-setTimeout-if.js', // new implementation of setTimeout-defuser.js\n 'ubo-no-setTimeout-if.js',\n 'setTimeout-defuser.js', // old name should be supported as well\n 'ubo-setTimeout-defuser.js',\n 'nostif.js', // new short name of no-setTimeout-if\n 'ubo-nostif.js',\n 'std.js', // old short scriptlet name\n 'ubo-std.js',\n];\n\npreventSetTimeout.injections = [toRegExp, startsWith, hit, noopFunc];\n","import {\n hit, noopFunc, toRegExp, startsWith,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-setInterval\n *\n * @description\n * Prevents a `setInterval` call if:\n * 1) the text of the callback is matching the specified `search` string/regexp which does not start with `!`;\n * otherwise mismatched calls should be defused;\n * 2) the interval is matching the specified `delay`; otherwise mismatched calls should be defused.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#no-setinterval-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-setInterval'[, search[, delay]])\n * ```\n *\n * Call with no arguments will log calls to setInterval while debugging (`log-setInterval` superseding),\n * so production filter lists' rules definitely require at least one of the parameters:\n * - `search` - optional, string or regular expression.\n * If starts with `!`, scriptlet will not match the stringified callback but all other will be defused.\n * If do not start with `!`, the stringified callback will be matched.\n * If not set, prevents all `setInterval` calls due to specified `delay`.\n * - `delay` - optional, must be an integer.\n * If starts with `!`, scriptlet will not match the delay but all other will be defused.\n * If do not start with `!`, the delay passed to the `setInterval` call will be matched.\n *\n * **Examples**\n * 1. Prevents `setInterval` calls if the callback matches `/\\.test/` regardless of the delay.\n * ```bash\n * example.org#%#//scriptlet('prevent-setInterval', '/\\.test/')\n * ```\n *\n * For instance, the following call will be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"value\";\n * }, 100);\n * ```\n *\n * 2. Prevents `setInterval` calls if the callback does not contain `value`.\n * ```\n * example.org#%#//scriptlet('prevent-setInterval', '!value')\n * ```\n *\n * For instance, only the first of the following calls will be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"test -- prevented\";\n * }, 300);\n * setInterval(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setInterval(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n *\n * 3. Prevents `setInterval` calls if the callback contains `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setInterval', 'value', '!300')\n * ```\n *\n * For instance, only the first of the following calls will not be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"value 1 -- executed\";\n * }, 300);\n * setInterval(function () {\n * window.test = \"value 2 -- prevented\";\n * }, 400);\n * setInterval(function () {\n * window.test = \"value 3 -- prevented\";\n * }, 500);\n * ```\n *\n * 4. Prevents `setInterval` calls if the callback does not contain `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setInterval', '!value', '!300')\n * ```\n *\n * For instance, only the second of the following calls will be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"test -- executed\";\n * }, 300);\n * setInterval(function () {\n * window.test = \"test -- prevented\";\n * }, 400);\n * setInterval(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setInterval(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n */\n/* eslint-enable max-len */\nexport function preventSetInterval(source, match, delay) {\n const nativeInterval = window.setInterval;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const log = console.log.bind(console); // eslint-disable-line no-console\n\n // logs setIntervals to console if no arguments have been specified\n const shouldLog = ((typeof match === 'undefined') && (typeof delay === 'undefined'));\n\n const INVERT_MARKER = '!';\n\n const isNotMatch = startsWith(match, INVERT_MARKER);\n if (isNotMatch) {\n match = match.slice(1);\n }\n const isNotDelay = startsWith(delay, INVERT_MARKER);\n if (isNotDelay) {\n delay = delay.slice(1);\n }\n\n delay = parseInt(delay, 10);\n delay = nativeIsNaN(delay) ? null : delay;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n const intervalWrapper = (callback, interval, ...args) => {\n let shouldPrevent = false;\n if (shouldLog) {\n hit(source);\n log(`setInterval(\"${callback.toString()}\", ${interval})`);\n } else if (!delay) {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch;\n } else if (match === '/.?/') {\n shouldPrevent = (interval === delay) !== isNotDelay;\n } else {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch\n && (interval === delay) !== isNotDelay;\n }\n\n if (shouldPrevent) {\n hit(source);\n return nativeInterval(noopFunc, interval);\n }\n\n return nativeInterval.apply(window, [callback, interval, ...args]);\n };\n window.setInterval = intervalWrapper;\n}\n\npreventSetInterval.names = [\n 'prevent-setInterval',\n 'no-setInterval-if.js', // new implementation of setInterval-defuser.js\n 'ubo-no-setInterval-if.js',\n 'setInterval-defuser.js', // old name should be supported as well\n 'ubo-setInterval-defuser.js',\n 'nosiif.js', // new short name of no-setInterval-if\n 'ubo-nosiif.js',\n 'sid.js', // old short scriptlet name\n 'ubo-sid.js',\n];\n\npreventSetInterval.injections = [toRegExp, startsWith, hit, noopFunc];\n","import {\n toRegExp,\n substringBefore,\n substringAfter,\n startsWith,\n endsWith,\n hit,\n noopFunc,\n trueFunc,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-window-open\n *\n * @description\n * Prevents `window.open` calls when URL either matches or not matches the specified string/regexp. Using it without parameters prevents all `window.open` calls.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#windowopen-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-window-open'[, match[, search[, replacement]]])\n * ```\n *\n * - `match` - optional, defaults to \"matching\", any positive number or nothing for \"matching\", 0 or empty string for \"not matching\"\n * - `search` - optional, string or regexp for matching the URL passed to `window.open` call; defaults to search all `window.open` call\n * - `replacement` - optional, string to return prop value or property instead of window.open; defaults to return noopFunc\n *\n * **Example**\n * 1. Prevent all `window.open` calls:\n * ```\n * example.org#%#//scriptlet('prevent-window-open')\n * ```\n *\n * 2. Prevent `window.open` for all URLs containing `example`:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '1', 'example')\n * ```\n *\n * 3. Prevent `window.open` for all URLs matching RegExp `/example\\./`:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '1', '/example\\./')\n * ```\n *\n * 4. Prevent `window.open` for all URLs **NOT** containing `example`:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '0', 'example')\n * ```\n * 5. Prevent all `window.open` calls and return 'trueFunc' instead of it if website checks it:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', , , 'trueFunc')\n * ```\n * 6. Prevent all `window.open` and returns callback\n * which returns object with property 'propName'=noopFunc\n * as a property of window.open if website checks it:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '1', , '{propName=noopFunc}')\n * ```\n */\n/* eslint-enable max-len */\nexport function preventWindowOpen(source, match = 1, search, replacement) {\n // Default value of 'match' is needed to prevent all `window.open` calls\n // if the scriptlet is used without parameters\n const nativeOpen = window.open;\n\n // unary plus converts 'match' to a number\n // e.g.: +'1' -> 1; +false -> 0\n match = +match > 0;\n\n search = search\n ? toRegExp(search)\n : toRegExp('/.?/');\n\n // eslint-disable-next-line consistent-return\n const openWrapper = (str, ...args) => {\n if (match !== search.test(str)) {\n return nativeOpen.apply(window, [str, ...args]);\n }\n\n hit(source);\n\n let result;\n\n // defaults to return noopFunc instead of window.open\n if (!replacement) {\n result = noopFunc;\n } else if (replacement === 'trueFunc') {\n result = trueFunc;\n } else if (replacement.indexOf('=') > -1) {\n // We should return noopFunc instead of window.open\n // but with some property if website checks it (examples 5, 6)\n // https://github.com/AdguardTeam/Scriptlets/issues/71\n const isProp = startsWith(replacement, '{') && endsWith(replacement, '}');\n if (isProp) {\n const propertyPart = replacement.slice(1, -1);\n const propertyName = substringBefore(propertyPart, '=');\n const propertyValue = substringAfter(propertyPart, '=');\n if (propertyValue === 'noopFunc') {\n result = () => {\n const resObj = { };\n resObj[propertyName] = noopFunc;\n return resObj;\n };\n }\n }\n }\n\n return result;\n };\n\n window.open = openWrapper;\n}\n\npreventWindowOpen.names = [\n 'prevent-window-open',\n 'window.open-defuser.js',\n 'ubo-window.open-defuser.js',\n];\n\npreventWindowOpen.injections = [\n toRegExp,\n startsWith,\n endsWith,\n substringBefore,\n substringAfter,\n hit,\n noopFunc,\n trueFunc,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet abort-current-inline-script\n *\n * @description\n * Aborts an inline script when it attempts to **read** the specified property\n * AND when the contents of the `\n * ```\n *\n * 3. Aborts inline scripts which are trying to access `window.alert` and match this regexp: `/Hello.+world/`.\n * ```\n * example.org#%#//scriptlet('abort-current-inline-script', 'alert', '/Hello.+world/')\n * ```\n *\n * For instance, the following scripts will be aborted:\n * ```html\n * \n * ```\n * ```html\n * \n * ```\n *\n * This script will not be aborted:\n * ```html\n * \n * ```\n */\n/* eslint-enable max-len */\nexport function abortCurrentInlineScript(source, property, search) {\n const searchRegexp = search ? toRegExp(search) : toRegExp('/.?/');\n const rid = randomId();\n\n const getCurrentScript = () => {\n if (!document.currentScript) { // eslint-disable-line compat/compat\n const scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n }\n return document.currentScript; // eslint-disable-line compat/compat\n };\n\n const ourScript = getCurrentScript();\n\n const abort = () => {\n const scriptEl = getCurrentScript();\n if (!scriptEl) {\n return;\n }\n let content = scriptEl.textContent;\n\n // We are using Node.prototype.textContent property descriptor\n // to get the real script content\n // even when document.currentScript.textContent is replaced.\n // https://github.com/AdguardTeam/Scriptlets/issues/57#issuecomment-593638991\n try {\n const textContentGetter = Object.getOwnPropertyDescriptor(Node.prototype, 'textContent').get;\n content = textContentGetter.call(scriptEl);\n } catch (e) { } // eslint-disable-line no-empty\n\n if (scriptEl instanceof HTMLScriptElement\n && content.length > 0\n && scriptEl !== ourScript\n && searchRegexp.test(content)) {\n hit(source);\n throw new ReferenceError(rid);\n }\n };\n\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n\n // The scriptlet might be executed before the chain property has been created\n // (for instance, document.body before the HTML body was loaded).\n // In this case we're checking whether the base element exists or not\n // and if not, we simply exit without overriding anything.\n // e.g. https://github.com/AdguardTeam/Scriptlets/issues/57#issuecomment-575841092\n if (base instanceof Object === false && base === null) {\n const props = property.split('.');\n const propIndex = props.indexOf(prop);\n const baseName = props[propIndex - 1];\n console.log(`The scriptlet had been executed before the ${baseName} was loaded.`); // eslint-disable-line no-console\n return;\n }\n\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n let currentValue = base[prop];\n setPropertyAccess(base, prop, {\n set: (value) => {\n abort();\n currentValue = value;\n },\n get: () => {\n abort();\n return currentValue;\n },\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\nabortCurrentInlineScript.names = [\n 'abort-current-inline-script',\n 'abort-current-inline-script.js',\n 'ubo-abort-current-inline-script.js',\n 'acis.js',\n 'ubo-acis.js',\n 'abp-abort-current-inline-script',\n];\n\nabortCurrentInlineScript.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n];\n","import {\n hit,\n noopFunc,\n trueFunc,\n falseFunc,\n getPropertyInChain,\n setPropertyAccess,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet set-constant\n *\n * @description\n * Creates a constant property and assigns it one of the values from the predefined list.\n *\n * > Actually, it's not a constant. Please note, that it can be rewritten with a value of a different type.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#set-constantjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('set-constant', property, value)\n * ```\n *\n * - `property` - required, path to a property (joined with `.` if needed). The property must be attached to `window`.\n * - `value` - required. Possible values:\n * - positive decimal integer `<= 32767`\n * - one of the predefined constants:\n * - `undefined`\n * - `false`\n * - `true`\n * - `null`\n * - `noopFunc` - function with empty body\n * - `trueFunc` - function returning true\n * - `falseFunc` - function returning false\n * - `''` - empty string\n * - `-1` - number value `-1`\n *\n * **Examples**\n * ```\n * ! window.firstConst === false // this comparision will return true\n * example.org#%#//scriptlet('set-constant', 'firstConst', 'false')\n *\n * ! window.secondConst() === true // call to the secondConst will return true\n * example.org#%#//scriptlet('set-constant', 'secondConst', 'trueFunc')\n * ```\n */\n/* eslint-enable max-len */\nexport function setConstant(source, property, value) {\n if (!property) {\n return;\n }\n\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n\n let constantValue;\n if (value === 'undefined') {\n constantValue = undefined;\n } else if (value === 'false') {\n constantValue = false;\n } else if (value === 'true') {\n constantValue = true;\n } else if (value === 'null') {\n constantValue = null;\n } else if (value === 'noopFunc') {\n constantValue = noopFunc;\n } else if (value === 'trueFunc') {\n constantValue = trueFunc;\n } else if (value === 'falseFunc') {\n constantValue = falseFunc;\n } else if (/^\\d+$/.test(value)) {\n constantValue = parseFloat(value);\n if (nativeIsNaN(constantValue)) {\n return;\n }\n if (Math.abs(constantValue) > 0x7FFF) {\n return;\n }\n } else if (value === '-1') {\n constantValue = -1;\n } else if (value === '') {\n constantValue = '';\n } else {\n return;\n }\n\n let canceled = false;\n const mustCancel = (value) => {\n if (canceled) {\n return canceled;\n }\n canceled = value !== undefined\n && constantValue !== undefined\n && typeof value !== typeof constantValue;\n return canceled;\n };\n\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n if (mustCancel(base[prop])) { return; }\n\n hit(source);\n setPropertyAccess(base, prop, {\n get: () => constantValue,\n set: (a) => {\n if (mustCancel(a)) {\n constantValue = a;\n }\n },\n });\n };\n\n setChainPropAccess(window, property);\n}\n\nsetConstant.names = [\n 'set-constant',\n 'set-constant.js',\n 'ubo-set-constant.js',\n 'set.js',\n 'ubo-set.js',\n];\nsetConstant.injections = [\n getPropertyInChain,\n setPropertyAccess,\n hit,\n noopFunc,\n trueFunc,\n falseFunc,\n];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet remove-cookie\n *\n * @description\n * Removes current page cookies by passed string matching with name. For current domain and subdomains. Runs on load and before unload.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#cookie-removerjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('remove-cookie'[, match])\n * ```\n *\n * - `match` - optional, string or regex matching the cookie name. If not specified all accessible cookies will be removed.\n *\n * **Examples**\n * 1. Removes all cookies:\n * ```\n * example.org#%#//scriptlet('remove-cookie')\n * ```\n *\n * 2. Removes cookies which name contains `example` string.\n * ```\n * example.org#%#//scriptlet('remove-cookie', 'example')\n * ```\n *\n * For instance this cookie will be removed\n * ```javascript\n * document.cookie = '__example=randomValue';\n * ```\n */\n/* eslint-enable max-len */\nexport function removeCookie(source, match) {\n const regex = match ? toRegExp(match) : toRegExp('/.?/');\n\n const removeCookieFromHost = (cookieName, hostName) => {\n const cookieSpec = `${cookieName}=`;\n const domain1 = `; domain=${hostName}`;\n const domain2 = `; domain=.${hostName}`;\n const path = '; path=/';\n const expiration = '; expires=Thu, 01 Jan 1970 00:00:00 GMT';\n document.cookie = cookieSpec + expiration;\n document.cookie = cookieSpec + domain1 + expiration;\n document.cookie = cookieSpec + domain2 + expiration;\n document.cookie = cookieSpec + path + expiration;\n document.cookie = cookieSpec + domain1 + path + expiration;\n document.cookie = cookieSpec + domain2 + path + expiration;\n hit(source);\n };\n\n const rmCookie = () => {\n document.cookie.split(';').forEach((cookieStr) => {\n const pos = cookieStr.indexOf('=');\n if (pos === -1) {\n return;\n }\n\n const cookieName = cookieStr.slice(0, pos).trim();\n if (!regex.test(cookieName)) {\n return;\n }\n\n const hostParts = document.location.hostname.split('.');\n for (let i = 0; i <= hostParts.length - 1; i += 1) {\n const hostName = hostParts.slice(i).join('.');\n if (hostName) {\n removeCookieFromHost(cookieName, hostName);\n }\n }\n });\n };\n rmCookie();\n window.addEventListener('beforeunload', rmCookie);\n}\n\nremoveCookie.names = [\n 'remove-cookie',\n 'cookie-remover.js',\n 'ubo-cookie-remover.js',\n];\n\nremoveCookie.injections = [toRegExp, hit];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-addEventListener\n *\n * @description\n * Prevents adding event listeners for the specified events and callbacks.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#addeventlistener-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-addEventListener'[, eventSearch[, functionSearch]])\n * ```\n *\n * - `eventSearch` - optional, string or regex matching the event name. If not specified, the scriptlets prevents all event listeners\n * - `functionSearch` - optional, string or regex matching the event listener function body. If not set, the scriptlet prevents all event listeners with event name matching `eventSearch`\n *\n * **Examples**\n * 1. Prevent all `click` listeners:\n * ```\n * example.org#%#//scriptlet('prevent-addEventListener', 'click')\n * ```\n\n2. Prevent 'click' listeners with the callback body containing `searchString`.\n * ```\n * example.org#%#//scriptlet('prevent-addEventListener', 'click', 'searchString')\n * ```\n *\n * For instance, this listener will not be called:\n * ```javascript\n * el.addEventListener('click', () => {\n * window.test = 'searchString';\n * });\n * ```\n */\n/* eslint-enable max-len */\nexport function preventAddEventListener(source, eventSearch, funcSearch) {\n const eventSearchRegexp = eventSearch ? toRegExp(eventSearch) : toRegExp('/.?/');\n const funcSearchRegexp = funcSearch ? toRegExp(funcSearch) : toRegExp('/.?/');\n\n const nativeAddEventListener = window.EventTarget.prototype.addEventListener;\n function addEventListenerWrapper(eventName, callback, ...args) {\n // The scriptlet might cause a website broke\n // if the website uses test addEventListener with callback = null\n // https://github.com/AdguardTeam/Scriptlets/issues/76\n let funcToCheck = callback;\n if (callback && typeof callback === 'function') {\n funcToCheck = callback.toString();\n }\n\n if (eventSearchRegexp.test(eventName.toString()) && funcSearchRegexp.test(funcToCheck)) {\n hit(source);\n return undefined;\n }\n return nativeAddEventListener.apply(this, [eventName, callback, ...args]);\n }\n\n window.EventTarget.prototype.addEventListener = addEventListenerWrapper;\n}\n\npreventAddEventListener.names = [\n 'prevent-addEventListener',\n 'addEventListener-defuser.js',\n 'ubo-addEventListener-defuser.js',\n 'aeld.js',\n 'ubo-aeld.js',\n];\n\npreventAddEventListener.injections = [toRegExp, hit];\n","/* eslint-disable consistent-return, no-eval */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet prevent-bab\n *\n * @description\n * Prevents BlockAdblock script from detecting an ad blocker.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#bab-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-bab')\n * ```\n */\nexport function preventBab(source) {\n const nativeSetTimeout = window.setTimeout;\n const babRegex = /\\.bab_elementid.$/;\n\n window.setTimeout = (callback, ...args) => {\n if (typeof callback !== 'string' || !babRegex.test(callback)) {\n return nativeSetTimeout.call(this, callback, ...args);\n }\n hit(source);\n };\n\n const signatures = [\n ['blockadblock'],\n ['babasbm'],\n [/getItem\\('babn'\\)/],\n ['getElementById', 'String.fromCharCode', 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 'charAt', 'DOMContentLoaded', 'AdBlock', 'addEventListener', 'doScroll', 'fromCharCode', '<<2|r>>4', 'sessionStorage', 'clientWidth', 'localStorage', 'Math', 'random'],\n ];\n const check = (str) => {\n for (let i = 0; i < signatures.length; i += 1) {\n const tokens = signatures[i];\n let match = 0;\n for (let j = 0; j < tokens.length; j += 1) {\n const token = tokens[j];\n const found = token instanceof RegExp ? token.test(str) : str.indexOf(token) > -1;\n if (found) {\n match += 1;\n }\n }\n if (match / tokens.length >= 0.8) {\n return true;\n }\n }\n return false;\n };\n\n const nativeEval = window.eval;\n window.eval = (str) => {\n if (!check(str)) {\n return nativeEval(str);\n }\n hit(source);\n const bodyEl = document.body;\n if (bodyEl) {\n bodyEl.style.removeProperty('visibility');\n }\n const el = document.getElementById('babasbmsgx');\n if (el) {\n el.parentNode.removeChild(el);\n }\n };\n}\n\npreventBab.names = [\n 'prevent-bab',\n 'nobab.js',\n 'ubo-nobab.js',\n 'bab-defuser.js',\n 'ubo-bab-defuser.js',\n];\n\npreventBab.injections = [hit];\n","/* eslint-disable no-unused-vars, no-extra-bind, func-names */\nimport { hit, noopFunc } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet nowebrtc\n *\n * @description\n * Disables WebRTC by overriding `RTCPeerConnection`. The overriden function will log every attempt to create a new connection.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#nowebrtcjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('nowebrtc')\n * ```\n */\n/* eslint-enable max-len */\nexport function nowebrtc(source) {\n let propertyName = '';\n if (window.RTCPeerConnection) {\n propertyName = 'RTCPeerConnection';\n } else if (window.webkitRTCPeerConnection) {\n propertyName = 'webkitRTCPeerConnection';\n }\n\n if (propertyName === '') {\n return;\n }\n\n const rtcReplacement = (config) => {\n hit(source, `Document tried to create an RTCPeerConnection: ${config}`);\n };\n rtcReplacement.prototype = {\n close: noopFunc,\n createDataChannel: noopFunc,\n createOffer: noopFunc,\n setRemoteDescription: noopFunc,\n };\n const rtc = window[propertyName];\n window[propertyName] = rtcReplacement;\n if (rtc.prototype) {\n rtc.prototype.createDataChannel = function (a, b) {\n return {\n close: noopFunc,\n send: noopFunc,\n };\n }.bind(null);\n }\n}\n\nnowebrtc.names = [\n 'nowebrtc',\n 'nowebrtc.js',\n 'ubo-nowebrtc.js',\n];\n\nnowebrtc.injections = [hit, noopFunc];\n","/* eslint-disable no-console */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet log-addEventListener\n *\n * @description\n * Logs all addEventListener calls to the console.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#addeventlistener-loggerjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('log-addEventListener')\n * ```\n */\nexport function logAddEventListener(source) {\n const log = console.log.bind(console);\n const nativeAddEventListener = window.EventTarget.prototype.addEventListener;\n function addEventListenerWrapper(eventName, callback, ...args) {\n hit(source);\n // The scriptlet might cause a website broke\n // if the website uses test addEventListener with callback = null\n // https://github.com/AdguardTeam/Scriptlets/issues/76\n let callbackToLog = callback;\n if (callback && typeof callback === 'function') {\n callbackToLog = callback.toString();\n }\n log(`addEventListener(\"${eventName}\", ${callbackToLog})`);\n return nativeAddEventListener.apply(this, [eventName, callback, ...args]);\n }\n window.EventTarget.prototype.addEventListener = addEventListenerWrapper;\n}\n\nlogAddEventListener.names = [\n 'log-addEventListener',\n 'addEventListener-logger.js',\n 'ubo-addEventListener-logger.js',\n 'aell.js',\n 'ubo-aell.js',\n];\n\nlogAddEventListener.injections = [hit];\n","/* eslint-disable no-console, no-eval */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet log-eval\n *\n * @description\n * Logs all `eval()` or `new Function()` calls to the console.\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('log-eval')\n * ```\n */\nexport function logEval(source) {\n const log = console.log.bind(console);\n // wrap eval function\n const nativeEval = window.eval;\n function evalWrapper(str) {\n hit(source);\n log(`eval(\"${str}\")`);\n return nativeEval(str);\n }\n window.eval = evalWrapper;\n\n // wrap new Function\n const nativeFunction = window.Function;\n\n function FunctionWrapper(...args) {\n hit(source);\n log(`new Function(${args.join(', ')})`);\n return nativeFunction.apply(this, [...args]);\n }\n\n FunctionWrapper.prototype = Object.create(nativeFunction.prototype);\n FunctionWrapper.prototype.constructor = FunctionWrapper;\n\n window.Function = FunctionWrapper;\n}\n\nlogEval.names = [\n 'log-eval',\n];\n\nlogEval.injections = [hit];\n","/**\n * @scriptlet log\n *\n * @description\n * A simple scriptlet which only purpose is to print arguments to console.\n * This scriptlet can be helpful for debugging and troubleshooting other scriptlets.\n *\n * **Example**\n * ```\n * example.org#%#//scriptlet('log', 'arg1', 'arg2')\n * ```\n */\nexport function log(...args) {\n console.log(args); // eslint-disable-line no-console\n}\nlog.names = ['log'];\n","/* eslint-disable no-eval, no-extra-bind */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet noeval\n *\n * @description\n * Prevents page to use eval.\n * Notifies about attempts in the console\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#noevaljs-\n *\n * It also can be used as `$redirect` rules sometimes.\n * See [redirect description](../wiki/about-redirects.md#noeval).\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('noeval')\n * ```\n */\nexport function noeval(source) {\n window.eval = function evalWrapper(s) {\n hit(source, `AdGuard has prevented eval:\\n${s}`);\n }.bind();\n}\n\nnoeval.names = [\n 'noeval',\n 'noeval.js',\n 'silent-noeval.js',\n 'ubo-noeval.js',\n 'ubo-silent-noeval.js',\n];\n\nnoeval.injections = [hit];\n","/* eslint-disable no-eval, no-extra-bind, func-names */\n\nimport { toRegExp, hit } from '../helpers';\n\n/**\n * @scriptlet prevent-eval-if\n *\n * @description\n * Prevents page to use eval matching payload.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#noeval-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-eval-if'[, search])\n * ```\n *\n * - `search` - optional, string or regexp for matching stringified eval payload.\n * If 'search is not specified — all stringified eval payload will be matched\n *\n * **Examples**\n * ```\n * ! Prevents eval if it matches 'test'\n * example.org#%#//scriptlet('prevent-eval-if', 'test')\n * ```\n *\n * @param {string|RegExp} [search] string or regexp matching stringified eval payload\n */\nexport function preventEvalIf(source, search) {\n search = search ? toRegExp(search) : toRegExp('/.?/');\n\n const nativeEval = window.eval;\n window.eval = function (payload) {\n if (!search.test(payload.toString())) {\n return nativeEval.call(window, payload);\n }\n hit(source, payload);\n return undefined;\n }.bind(window);\n}\n\npreventEvalIf.names = [\n 'prevent-eval-if',\n 'noeval-if.js',\n 'ubo-noeval-if.js',\n];\n\npreventEvalIf.injections = [toRegExp, hit];\n","/* eslint-disable no-console, func-names, no-multi-assign */\nimport { hit, noopFunc, noopThis } from '../helpers';\n\n/**\n * @scriptlet prevent-fab-3.2.0\n *\n * @description\n * Prevents execution of the FAB script v3.2.0.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#fuckadblockjs-320-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-fab-3.2.0')\n * ```\n */\nexport function preventFab(source) {\n hit(source);\n\n // redefines Fab function for adblock detection\n const Fab = function () {};\n Fab.prototype.check = noopFunc;\n Fab.prototype.clearEvent = noopFunc;\n Fab.prototype.emitEvent = noopFunc;\n Fab.prototype.on = function (a, b) {\n if (!a) {\n b();\n }\n return this;\n };\n Fab.prototype.onDetected = noopThis;\n Fab.prototype.onNotDetected = function (a) {\n a();\n return this;\n };\n Fab.prototype.setOption = noopFunc;\n\n const fab = new Fab();\n const getSetFab = {\n get() { return Fab; },\n set() {},\n };\n const getsetfab = {\n get() { return fab; },\n set() {},\n };\n\n // redefined Fab data properties which if 'FuckAdBlock' variable exists\n if (Object.prototype.hasOwnProperty.call(window, 'FuckAdBlock')) {\n window.FuckAdBlock = Fab;\n } else {\n // or redefined Fab accessor properties\n Object.defineProperty(window, 'FuckAdBlock', getSetFab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'BlockAdBlock')) {\n window.BlockAdBlock = Fab;\n } else {\n Object.defineProperty(window, 'BlockAdBlock', getSetFab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'SniffAdBlock')) {\n window.SniffAdBlock = Fab;\n } else {\n Object.defineProperty(window, 'SniffAdBlock', getSetFab);\n }\n\n if (Object.prototype.hasOwnProperty.call(window, 'fuckAdBlock')) {\n window.fuckAdBlock = fab;\n } else {\n Object.defineProperty(window, 'fuckAdBlock', getsetfab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'blockAdBlock')) {\n window.blockAdBlock = fab;\n } else {\n Object.defineProperty(window, 'blockAdBlock', getsetfab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'sniffAdBlock')) {\n window.sniffAdBlock = fab;\n } else {\n Object.defineProperty(window, 'sniffAdBlock', getsetfab);\n }\n}\n\npreventFab.names = [\n 'prevent-fab-3.2.0',\n 'nofab.js',\n 'ubo-nofab.js',\n 'fuckadblock.js-3.2.0',\n 'ubo-fuckadblock.js-3.2.0',\n];\n\npreventFab.injections = [hit, noopFunc, noopThis];\n","/* eslint-disable no-console, func-names, no-multi-assign */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet set-popads-dummy\n *\n * @description\n * Sets static properties PopAds and popns.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#popads-dummyjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('set-popads-dummy')\n * ```\n */\nexport function setPopadsDummy(source) {\n delete window.PopAds;\n delete window.popns;\n Object.defineProperties(window, {\n PopAds: {\n get: () => {\n hit(source);\n return {};\n },\n },\n popns: {\n get: () => {\n hit(source);\n return {};\n },\n },\n });\n}\n\nsetPopadsDummy.names = [\n 'set-popads-dummy',\n 'popads-dummy.js',\n 'ubo-popads-dummy.js',\n];\n\nsetPopadsDummy.injections = [hit];\n","import {\n hit, createOnErrorHandler, randomId,\n} from '../helpers';\n\n/**\n * @scriptlet prevent-popads-net\n *\n * @description\n * Aborts on property write (PopAds, popns), throws reference error with random id.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#popadsnetjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-popads-net')\n * ```\n */\nexport function preventPopadsNet(source) {\n const rid = randomId();\n\n const throwError = () => {\n throw new ReferenceError(rid);\n };\n\n delete window.PopAds;\n delete window.popns;\n Object.defineProperties(window, {\n PopAds: { set: throwError },\n popns: { set: throwError },\n });\n\n window.onerror = createOnErrorHandler(rid).bind();\n hit(source);\n}\n\npreventPopadsNet.names = [\n 'prevent-popads-net',\n 'popads.net.js',\n 'ubo-popads.net.js',\n];\n\npreventPopadsNet.injections = [createOnErrorHandler, randomId, hit];\n","/* eslint-disable func-names */\nimport { hit, setPropertyAccess } from '../helpers';\n\n/**\n * @scriptlet prevent-adfly\n *\n * @description\n * Prevents anti-adblock scripts on adfly short links.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#adfly-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-adfly')\n * ```\n */\nexport function preventAdfly(source) {\n const isDigit = (data) => /^\\d$/.test(data);\n const handler = function (encodedURL) {\n let evenChars = '';\n let oddChars = '';\n for (let i = 0; i < encodedURL.length; i += 1) {\n if (i % 2 === 0) {\n evenChars += encodedURL.charAt(i);\n } else {\n oddChars = encodedURL.charAt(i) + oddChars;\n }\n }\n\n let data = (evenChars + oddChars).split('');\n\n for (let i = 0; i < data.length; i += 1) {\n if (isDigit(data[i])) {\n for (let ii = i + 1; ii < data.length; ii += 1) {\n if (isDigit(data[ii])) {\n // eslint-disable-next-line no-bitwise\n const temp = parseInt(data[i], 10) ^ parseInt(data[ii], 10);\n if (temp < 10) {\n data[i] = temp.toString();\n }\n i = ii;\n break;\n }\n }\n }\n }\n data = data.join('');\n const decodedURL = window.atob(data).slice(16, -16);\n /* eslint-disable compat/compat */\n if (window.stop) {\n window.stop();\n }\n /* eslint-enable compat/compat */\n window.onbeforeunload = null;\n window.location.href = decodedURL;\n };\n\n let val;\n // Do not apply handler more than one time\n let applyHandler = true;\n\n const result = setPropertyAccess(window, 'ysmm', {\n configurable: false,\n set: (value) => {\n if (applyHandler) {\n applyHandler = false;\n try {\n if (typeof value === 'string') {\n handler(value);\n }\n } catch (err) { } // eslint-disable-line no-empty\n }\n val = value;\n },\n get: () => val,\n });\n\n if (result) {\n hit(source);\n } else {\n window.console.error('Failed to set up prevent-adfly scriptlet');\n }\n}\n\npreventAdfly.names = [\n 'prevent-adfly',\n 'adfly-defuser.js',\n 'ubo-adfly-defuser.js',\n];\n\npreventAdfly.injections = [setPropertyAccess, hit];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n noopFunc,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet debug-on-property-read\n *\n * @description\n * This scriptlet is basically the same as [abort-on-property-read](#abort-on-property-read), but instead of aborting it starts the debugger.\n *\n * **It is not supposed to be used in production filter lists!**\n *\n * **Syntax**\n * ```\n * ! Aborts script when it tries to access `window.alert`\n * example.org#%#//scriptlet('debug-on-property-read', 'alert')\n * ```\n */\n/* eslint-enable max-len */\nexport function debugOnPropertyRead(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n const rid = randomId();\n const abort = () => {\n hit(source);\n debugger; // eslint-disable-line no-debugger\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, {\n get: abort,\n set: noopFunc,\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\ndebugOnPropertyRead.names = [\n 'debug-on-property-read',\n];\ndebugOnPropertyRead.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n noopFunc,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet debug-on-property-write\n *\n * @description\n * This scriptlet is basically the same as [abort-on-property-write](#abort-on-property-write), but instead of aborting it starts the debugger.\n *\n * **It is not supposed to be used in production filter lists!**\n *\n * **Syntax**\n * ```\n * ! Aborts script when it tries to write in property `window.test`\n * example.org#%#//scriptlet('debug-on-property-write', 'test')\n * ```\n */\n/* eslint-enable max-len */\nexport function debugOnPropertyWrite(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n const rid = randomId();\n const abort = () => {\n hit(source);\n debugger; // eslint-disable-line no-debugger\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, { set: abort });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid).bind();\n}\n\ndebugOnPropertyWrite.names = [\n 'debug-on-property-write',\n];\n\ndebugOnPropertyWrite.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet debug-current-inline-script\n *\n * @description\n * This scriptlet is basically the same as [abort-current-inline-script](#abort-current-inline-script), but instead of aborting it starts the debugger.\n *\n * **It is not supposed to be used in production filter lists!**\n *\n * **Syntax**\n *```\n * ! Aborts script when it tries to access `window.alert`\n * example.org#%#//scriptlet('debug-current-inline-script', 'alert')\n * ```\n */\n/* eslint-enable max-len */\nexport function debugCurrentInlineScript(source, property, search = null) {\n const regex = search ? toRegExp(search) : null;\n const rid = randomId();\n\n const getCurrentScript = () => {\n if (!document.currentScript) { // eslint-disable-line compat/compat\n const scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n }\n return document.currentScript; // eslint-disable-line compat/compat\n };\n\n const ourScript = getCurrentScript();\n\n const abort = () => {\n const scriptEl = getCurrentScript();\n if (scriptEl instanceof HTMLScriptElement\n && scriptEl.textContent.length > 0\n && scriptEl !== ourScript\n && (!regex || regex.test(scriptEl.textContent))) {\n hit(source);\n debugger; // eslint-disable-line no-debugger\n }\n };\n\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n let currentValue = base[prop];\n setPropertyAccess(base, prop, {\n set: (value) => {\n abort();\n currentValue = value;\n },\n get: () => {\n abort();\n return currentValue;\n },\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\ndebugCurrentInlineScript.names = [\n 'debug-current-inline-script',\n];\n\ndebugCurrentInlineScript.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n];\n","import { hit, observeDOMChanges } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet remove-attr\n *\n * @description\n * Removes the specified attributes from DOM nodes. This scriptlet runs once when the page loads\n * and after that periodically in order to DOM tree changes.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#remove-attrjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('remove-attr', attrs[, selector])\n * ```\n *\n * - `attrs` — required, attribute or list of attributes joined by '|'\n * - `selector` — optional, CSS selector, specifies DOM nodes from which the attributes will be removed\n *\n * **Examples**\n * 1. Removes by attribute\n * ```\n * example.org#%#//scriptlet('remove-attr', 'example|test')\n * ```\n *\n * ```html\n * \n *
Some text
\n *\n * \n *
Some text
\n * ```\n *\n * 2. Removes with specified selector\n * ```\n * example.org#%#//scriptlet('remove-attr', 'example', 'div[class=\"inner\"]')\n * ```\n *\n * ```html\n * \n *
\n *
Some text
\n *
\n *\n * \n *
\n *
Some text
\n *
\n * ```\n */\n/* eslint-enable max-len */\nexport function removeAttr(source, attrs, selector) {\n if (!attrs) { return; }\n attrs = attrs.split(/\\s*\\|\\s*/);\n if (!selector) {\n selector = `[${attrs.join('],[')}]`;\n }\n\n const rmattr = () => {\n const nodes = [].slice.call(document.querySelectorAll(selector));\n let removed = false;\n nodes.forEach((node) => {\n attrs.forEach((attr) => {\n node.removeAttribute(attr);\n removed = true;\n });\n });\n if (removed) {\n hit(source);\n }\n };\n\n rmattr();\n\n // 'true' for observing attributes\n observeDOMChanges(rmattr, true);\n}\n\nremoveAttr.names = [\n 'remove-attr',\n 'remove-attr.js',\n 'ubo-remove-attr.js',\n 'ra.js',\n 'ubo-ra.js',\n];\n\nremoveAttr.injections = [hit, observeDOMChanges];\n","import { hit, observeDOMChanges } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet remove-class\n *\n * @description\n * Removes the specified classes from DOM nodes. This scriptlet runs once after the page loads\n * and after that periodically in order to DOM tree changes.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#remove-classjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('remove-class', classes[, selector])\n * ```\n *\n * - `classes` — required, class or list of classes separated by '|'\n * - `selector` — optional, CSS selector, specifies DOM nodes from which the classes will be removed.\n * If there is no `selector`, each class of `classes` independently will be removed from all nodes which has one\n *\n * **Examples**\n * 1. Removes by classes\n * ```\n * example.org#%#//scriptlet('remove-class', 'example|test')\n * ```\n *\n * ```html\n * \n *
Some text
\n *
Some text
\n *
Some text
\n *\n * \n *
Some text
\n *
Some text
\n *
Some text
\n * ```\n *\n * 2. Removes with specified selector\n * ```\n * example.org#%#//scriptlet('remove-class', 'branding', 'div[class^=\"inner\"]')\n * ```\n *\n * ```html\n * \n *
\n *
Some text
\n *
\n *\n * \n *
\n *
Some text
\n *
\n * ```\n */\n/* eslint-enable max-len */\n\nexport function removeClass(source, classNames, selector) {\n if (!classNames) { return; }\n classNames = classNames.split(/\\s*\\|\\s*/);\n let selectors = [];\n if (!selector) {\n selectors = classNames.map((className) => {\n return `.${className}`;\n });\n }\n\n const removeClassHandler = () => {\n const nodes = new Set();\n if (selector) {\n const foundedNodes = [].slice.call(document.querySelectorAll(selector));\n foundedNodes.forEach((n) => nodes.add(n));\n } else if (selectors.length > 0) {\n selectors.forEach((s) => {\n const elements = document.querySelectorAll(s);\n for (let i = 0; i < elements.length; i += 1) {\n const element = elements[i];\n nodes.add(element);\n }\n });\n }\n\n let removed = false;\n\n nodes.forEach((node) => {\n classNames.forEach((className) => {\n if (node.classList.contains(className)) {\n node.classList.remove(className);\n removed = true;\n }\n });\n });\n\n if (removed) {\n hit(source);\n }\n };\n\n removeClassHandler();\n\n const CLASS_ATTR_NAME = ['class'];\n // 'true' for observing attributes\n // 'class' for observing only classes\n observeDOMChanges(removeClassHandler, true, CLASS_ATTR_NAME);\n}\n\nremoveClass.names = [\n 'remove-class',\n 'remove-class.js',\n 'ubo-remove-class.js',\n 'rc.js',\n 'ubo-rc.js',\n];\n\nremoveClass.injections = [hit, observeDOMChanges];\n","import { hit } from '../helpers';\n\n/**\n * @scriptlet disable-newtab-links\n *\n * @description\n * Prevents opening new tabs and windows if there is `target` attribute in element.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#disable-newtab-linksjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('disable-newtab-links')\n * ```\n */\nexport function disableNewtabLinks(source) {\n document.addEventListener('click', (ev) => {\n let { target } = ev;\n while (target !== null) {\n if (target.localName === 'a' && target.hasAttribute('target')) {\n ev.stopPropagation();\n ev.preventDefault();\n hit(source);\n break;\n }\n target = target.parentNode;\n }\n });\n}\n\ndisableNewtabLinks.names = [\n 'disable-newtab-links',\n 'disable-newtab-links.js',\n 'ubo-disable-newtab-links.js',\n];\n\ndisableNewtabLinks.injections = [\n hit,\n];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet adjust-setInterval\n *\n * @description\n * Adjusts interval for specified setInterval() callbacks.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#nano-setinterval-boosterjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('adjust-setInterval'[, match [, interval[, boost]]])\n * ```\n *\n * - `match` - optional, string/regular expression, matching in stringified callback function\n * - `interval` - optional, defaults to 1000, decimal integer, matching setInterval delay\n * - `boost` - optional, default to 0.05, float, capped at 50 times for up and down (0.02...50), interval multiplier\n *\n * **Examples**\n * 1. Adjust all setInterval() x20 times where interval equal 1000ms:\n * ```\n * example.org#%#//scriptlet('adjust-setInterval')\n * ```\n *\n * 2. Adjust all setInterval() x20 times where callback mathed with `example` and interval equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', 'example')\n * ```\n *\n * 3. Adjust all setInterval() x20 times where callback mathed with `example` and interval equal 400ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', 'example', '400')\n * ```\n *\n * 4. Slow down setInterval() x2 times where callback matched with `example` and interval equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', 'example', '', '2')\n * ```\n * 5. Adjust all setInterval() x50 times where interval equal 2000ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', '', '2000', '0.02')\n * ```\n */\n/* eslint-enable max-len */\nexport function adjustSetInterval(source, match, interval, boost) {\n const nativeInterval = window.setInterval;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const nativeIsFinite = Number.isFinite || window.isFinite; // eslint-disable-line compat/compat\n\n interval = parseInt(interval, 10);\n interval = nativeIsNaN(interval) ? 1000 : interval;\n\n boost = parseFloat(boost);\n boost = nativeIsNaN(boost) || !nativeIsFinite(boost) ? 0.05 : boost;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n if (boost < 0.02) {\n boost = 0.02;\n }\n if (boost > 50) {\n boost = 50;\n }\n\n const intervalWrapper = (cb, d, ...args) => {\n if (d === interval && match.test(cb.toString())) {\n d *= boost;\n hit(source);\n }\n return nativeInterval.apply(window, [cb, d, ...args]);\n };\n window.setInterval = intervalWrapper;\n}\n\nadjustSetInterval.names = [\n 'adjust-setInterval',\n 'nano-setInterval-booster.js',\n 'ubo-nano-setInterval-booster.js',\n 'nano-sib.js',\n 'ubo-nano-sib.js',\n];\n\nadjustSetInterval.injections = [toRegExp, hit];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet adjust-setTimeout\n *\n * @description\n * Adjusts timeout for specified setTimout() callbacks.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#nano-settimeout-boosterjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout'[, match [, timeout[, boost]]])\n * ```\n *\n * - `match` - optional, string/regular expression, matching in stringified callback function\n * - `timeout` - optional, defaults to 1000, decimal integer, matching setTimout delay\n * - `boost` - optional, default to 0.05, float, capped at 50 times for up and down (0.02...50), timeout multiplier\n *\n * **Examples**\n * 1. Adjust all setTimeout() x20 times where timeout equal 1000ms:\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout')\n * ```\n *\n * 2. Adjust all setTimeout() x20 times where callback mathed with `example` and timeout equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', 'example')\n * ```\n *\n * 3. Adjust all setTimeout() x20 times where callback mathed with `example` and timeout equal 400ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', 'example', '400')\n * ```\n *\n * 4. Slow down setTimeout() x2 times where callback matched with `example` and timeout equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', 'example', '', '2')\n * ```\n * 5. Adjust all setTimeout() x50 times where timeout equal 2000ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', '', '2000', '0.02')\n * ```\n */\n/* eslint-enable max-len */\nexport function adjustSetTimeout(source, match, timeout, boost) {\n const nativeTimeout = window.setTimeout;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const nativeIsFinite = Number.isFinite || window.isFinite; // eslint-disable-line compat/compat\n\n timeout = parseInt(timeout, 10);\n timeout = nativeIsNaN(timeout) ? 1000 : timeout;\n\n boost = parseFloat(boost);\n boost = nativeIsNaN(boost) || !nativeIsFinite(boost) ? 0.05 : boost;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n if (boost < 0.02) {\n boost = 0.02;\n }\n if (boost > 50) {\n boost = 50;\n }\n\n const timeoutWrapper = (cb, d, ...args) => {\n if (d === timeout && match.test(cb.toString())) {\n d *= boost;\n hit(source);\n }\n return nativeTimeout.apply(window, [cb, d, ...args]);\n };\n window.setTimeout = timeoutWrapper;\n}\n\nadjustSetTimeout.names = [\n 'adjust-setTimeout',\n 'nano-setTimeout-booster.js',\n 'ubo-nano-setTimeout-booster.js',\n 'nano-stb.js',\n 'ubo-nano-stb.js',\n];\n\nadjustSetTimeout.injections = [toRegExp, hit];\n","import { hit } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet dir-string\n *\n * @description\n * Wraps the `console.dir` API to call the `toString` method of the argument.\n * There are several adblock circumvention systems that detect browser devtools\n * and hide themselves. Therefore, if we force them to think\n * that devtools are open (using this scrciptlet),\n * it will automatically disable the adblock circumvention script.\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/6b2a309054cc23432102b85d13f12559639ef495/lib/content/snippets.js#L766\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('dir-string'[, times])\n * ```\n * - `times` - optional, the number of times to call the `toString` method of the argument to `console.dir`\n *\n * **Example**\n * ```\n * ! Run 2 times\n * example.org#%#//scriptlet('dir-string', '2')\n * ```\n */\n/* eslint-enable max-len */\nexport function dirString(source, times) {\n const { dir } = console;\n times = parseInt(times, 10);\n\n function dirWrapper(object) {\n // eslint-disable-next-line no-unused-vars\n let temp;\n for (let i = 0; i < times; i += 1) {\n // eslint-disable-next-line no-unused-expressions\n temp = `${object}`;\n }\n if (typeof dir === 'function') {\n dir.call(this, object);\n }\n hit(source, temp);\n }\n // eslint-disable-next-line no-console\n console.dir = dirWrapper;\n}\n\ndirString.names = [\n 'dir-string',\n 'abp-dir-string',\n];\n\ndirString.injections = [hit];\n","import { hit, getPropertyInChain } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet json-prune\n *\n * @description\n * Removes specified properties from the result of calling JSON.parse and returns the caller\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#json-prunejs-\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/master/lib/content/snippets.js#L1285\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('json-prune'[, propsToRemove [, obligatoryProps]])\n * ```\n *\n * - `propsToRemove` - optional, string of space-separated properties to remove\n * - `obligatoryProps` - optional, string of space-separated properties which must be all present for the pruning to occur\n *\n * **Examples**\n * 1. Removes property `example` from the results of JSON.parse call\n * ```\n * example.org#%#//scriptlet('json-prune', 'example')\n * ```\n *\n * For instance, the following call will return `{ one: 1}`\n *\n * ```html\n * JSON.parse('{\"one\":1,\"example\":true}')\n * ```\n *\n * 2. If there are no specified properties in the result of JSON.parse call, pruning will NOT occur\n * ```\n * example.org#%#//scriptlet('json-prune', 'one', 'obligatoryProp')\n * ```\n *\n * For instance, the following call will return `{ one: 1, two: 2}`\n *\n * ```html\n * JSON.parse('{\"one\":1,\"two\":2}')\n * ```\n *\n * 3. A property in a list of properties can be a chain of properties\n *\n * ```\n * example.org#%#//scriptlet('json-prune', 'a.b', 'adpath.url.first')\n * ```\n *\n * 4. Call with no arguments will log the current hostname and json payload at the console\n * ```\n * example.org#%#//scriptlet('json-prune')\n * ```\n */\n/* eslint-enable max-len */\nexport function jsonPrune(source, propsToRemove, requiredInitialProps) {\n // eslint-disable-next-line no-console\n const log = console.log.bind(console);\n const prunePaths = propsToRemove !== undefined && propsToRemove !== ''\n ? propsToRemove.split(/ +/)\n : [];\n const needlePaths = requiredInitialProps !== undefined && requiredInitialProps !== ''\n ? requiredInitialProps.split(/ +/)\n : [];\n\n function isPruningNeeded(root) {\n if (!root) {\n return false;\n }\n\n for (let i = 0; i < needlePaths.length; i += 1) {\n const needlePath = needlePaths[i];\n const details = getPropertyInChain(root, needlePath, false);\n const nestedPropName = needlePath.split('.').pop();\n if (details && details.base[nestedPropName] === undefined) {\n return false;\n }\n }\n return true;\n }\n\n const nativeParse = JSON.parse;\n\n const parseWrapper = (...args) => {\n const r = nativeParse.apply(window, args);\n if (prunePaths.length === 0) {\n log(window.location.hostname, r);\n return r;\n }\n if (isPruningNeeded(r) === false) {\n return r;\n }\n prunePaths.forEach((path) => {\n const ownerObj = getPropertyInChain(r, path, false);\n if (ownerObj !== undefined && ownerObj.base) {\n delete ownerObj.base[ownerObj.prop];\n }\n });\n hit(source);\n return r;\n };\n\n JSON.parse = parseWrapper;\n}\n\njsonPrune.names = [\n 'json-prune',\n 'json-prune.js',\n 'ubo-json-prune.js',\n];\n\njsonPrune.injections = [hit, getPropertyInChain];\n","import {\n hit, startsWith, toRegExp, noopFunc,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-requestAnimationFrame\n *\n * @description\n * Prevents a `requestAnimationFrame` call\n * if the text of the callback is matching the specified search string which does not start with `!`;\n * otherwise mismatched calls should be defused.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#no-requestanimationframe-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-requestAnimationFrame'[, search])\n * ```\n *\n * - `search` - optional, string or regular expression.\n * If starts with `!`, scriptlet will not match the stringified callback but all other will be defused.\n * If do not start with `!`, the stringified callback will be matched.\n *\n * Call with no argument will log all requestAnimationFrame calls while debugging.\n * So do not use the scriptlet without any parameter in production filter lists.\n *\n * **Examples**\n * 1. Prevents `requestAnimationFrame` calls if the callback matches `/\\.test/`.\n * ```bash\n * example.org#%#//scriptlet('prevent-requestAnimationFrame', '/\\.test/')\n * ```\n *\n * For instance, the following call will be prevented:\n * ```javascript\n * var times = 0;\n * requestAnimationFrame(function change() {\n * window.test = 'new value';\n * if (times < 2) {\n * times += 1;\n * requestAnimationFrame(change);\n * }\n * });\n * ```\n * 2. Prevents `requestAnimationFrame` calls if **does not match** 'check'.\n * ```bash\n * example.org#%#//scriptlet('prevent-requestAnimationFrame', '!check')\n * ```\n *\n * For instance, only the first call will be prevented:\n *\n * ```javascript\n * var timesFirst = 0;\n * requestAnimationFrame(function changeFirst() {\n * window.check = 'should not be prevented';\n * if (timesFirst < 2) {\n * timesFirst += 1;\n * requestAnimationFrame(changeFirst);\n * }\n * });\n *\n * var timesSecond = 0;\n * requestAnimationFrame(function changeSecond() {\n * window.second = 'should be prevented';\n * if (timesSecond < 2) {\n * timesSecond += 1;\n * requestAnimationFrame(changeSecond);\n * }\n * });\n * ```\n */\n/* eslint-enable max-len */\n\nexport function preventRequestAnimationFrame(source, match) {\n const nativeRequestAnimationFrame = window.requestAnimationFrame;\n\n // logs requestAnimationFrame to console if no arguments have been specified\n const shouldLog = typeof match === 'undefined';\n\n const INVERT_MARKER = '!';\n\n const doNotMatch = startsWith(match, INVERT_MARKER);\n if (doNotMatch) {\n match = match.slice(1);\n }\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n const rafWrapper = (callback, ...args) => {\n let shouldPrevent = false;\n if (shouldLog) {\n const logMessage = `log: requestAnimationFrame(\"${callback.toString()}\")`;\n hit(source, logMessage);\n } else {\n shouldPrevent = match.test(callback.toString()) !== doNotMatch;\n }\n\n if (shouldPrevent) {\n hit(source);\n return nativeRequestAnimationFrame(noopFunc);\n }\n\n return nativeRequestAnimationFrame.apply(window, [callback, ...args]);\n };\n\n window.requestAnimationFrame = rafWrapper;\n}\n\npreventRequestAnimationFrame.names = [\n 'prevent-requestAnimationFrame',\n 'no-requestAnimationFrame-if.js',\n 'ubo-no-requestAnimationFrame-if.js',\n 'norafif.js',\n 'ubo-norafif.js',\n 'ubo-no-requestAnimationFrame-if',\n 'ubo-norafif',\n];\n\npreventRequestAnimationFrame.injections = [hit, startsWith, toRegExp, noopFunc];\n","import { hit } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet set-cookie\n *\n * @description\n * Sets a cookie with the specified name and value. Cookie path defaults to root.\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('set-cookie', name, value)\n * ```\n *\n * - `name` - required, cookie name to be set\n * - `value` - required, cookie value; possible values:\n * - number `>= 0 && <= 15`\n * - one of the predefined constants:\n * - `true` / `True`\n * - `false` / `False`\n * - `yes` / `Yes` / `Y`\n * - `no`\n * - `ok` / `OK`\n *\n * **Examples**\n * ```\n * example.org#%#//scriptlet('set-cookie', 'checking', 'ok')\n *\n * example.org#%#//scriptlet('set-cookie', 'gdpr-settings-cookie', '1')\n * ```\n */\n/* eslint-enable max-len */\nexport function setCookie(source, name, value) {\n if (!name || !value) {\n return;\n }\n\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n let valueToSet;\n if (value === 'true') {\n valueToSet = 'true';\n } else if (value === 'True') {\n valueToSet = 'True';\n } else if (value === 'false') {\n valueToSet = 'false';\n } else if (value === 'False') {\n valueToSet = 'False';\n } else if (value === 'yes') {\n valueToSet = 'yes';\n } else if (value === 'Yes') {\n valueToSet = 'Yes';\n } else if (value === 'Y') {\n valueToSet = 'Y';\n } else if (value === 'no') {\n valueToSet = 'no';\n } else if (value === 'ok') {\n valueToSet = 'ok';\n } else if (value === 'OK') {\n valueToSet = 'OK';\n } else if (/^\\d+$/.test(value)) {\n valueToSet = parseFloat(value);\n if (nativeIsNaN(valueToSet)) {\n return;\n }\n if (Math.abs(valueToSet) < 0 || Math.abs(valueToSet) > 15) {\n return;\n }\n } else {\n return;\n }\n\n const pathToSet = 'path=/;';\n\n const cookieData = `${encodeURIComponent(name)}=${encodeURIComponent(valueToSet)}; ${pathToSet}`;\n\n hit(source);\n document.cookie = cookieData;\n}\n\nsetCookie.names = [\n 'set-cookie',\n];\n\nsetCookie.injections = [hit];\n","/**\n * This file must export all scriptlets which should be accessible\n */\nexport * from './abort-on-property-read';\nexport * from './abort-on-property-write';\nexport * from './prevent-setTimeout';\nexport * from './prevent-setInterval';\nexport * from './prevent-window-open';\nexport * from './abort-current-inline-script';\nexport * from './set-constant';\nexport * from './remove-cookie';\nexport * from './prevent-addEventListener';\nexport * from './prevent-bab';\nexport * from './nowebrtc';\nexport * from './log-addEventListener';\nexport * from './log-eval';\nexport * from './log';\nexport * from './noeval';\nexport * from './prevent-eval-if';\nexport * from './prevent-fab-3.2.0';\nexport * from './set-popads-dummy';\nexport * from './prevent-popads-net';\nexport * from './prevent-adfly';\nexport * from './debug-on-property-read';\nexport * from './debug-on-property-write';\nexport * from './debug-current-inline-script';\nexport * from './remove-attr';\nexport * from './remove-class';\nexport * from './disable-newtab-links';\nexport * from './adjust-setInterval';\nexport * from './adjust-setTimeout';\nexport * from './dir-string';\nexport * from './json-prune';\nexport * from './prevent-requestAnimationFrame';\nexport * from './set-cookie';\n","import {\n startsWith,\n endsWith,\n substringAfter,\n toRegExp,\n} from './string-utils';\n\nimport { ADG_SCRIPTLET_MASK } from './parse-rule';\n\nimport * as scriptletsList from '../scriptlets/scriptletsList';\n\nimport { redirects } from '../../scripts/compatibility-table.json';\n\nconst JS_RULE_MARKER = '#%#';\nconst COMMENT_MARKER = '!';\n\n/**\n * Checks if rule text is comment e.g. !!example.org##+js(set-constant.js, test, false)\n * @param {string} rule\n * @return {boolean}\n */\nconst isComment = (rule) => startsWith(rule, COMMENT_MARKER);\n\n/* ************************************************************************\n *\n * Scriptlets\n *\n ************************************************************************** */\n\n/**\n * uBlock scriptlet rule mask\n */\nconst UBO_SCRIPTLET_MASK_REG = /#@?#script:inject|#@?#\\s*\\+js/;\nconst UBO_SCRIPTLET_MASK_1 = '##+js';\nconst UBO_SCRIPTLET_MASK_2 = '##script:inject';\nconst UBO_SCRIPTLET_EXCEPTION_MASK_1 = '#@#+js';\nconst UBO_SCRIPTLET_EXCEPTION_MASK_2 = '#@#script:inject';\n\n/**\n * AdBlock Plus snippet rule mask\n */\nconst ABP_SCRIPTLET_MASK = '#$#';\nconst ABP_SCRIPTLET_EXCEPTION_MASK = '#@$#';\n\n/**\n * AdGuard CSS rule mask\n */\nconst ADG_CSS_MASK_REG = /#@?\\$#.+?\\s*\\{.*\\}\\s*$/g;\n\n/**\n * Checks if the `rule` is AdGuard scriptlet rule\n * @param {string} rule - rule text\n */\nconst isAdgScriptletRule = (rule) => {\n return (\n !isComment(rule)\n && rule.indexOf(ADG_SCRIPTLET_MASK) > -1\n );\n};\n\n/**\n * Checks if the `rule` is uBO scriptlet rule\n * @param {string} rule rule text\n */\nconst isUboScriptletRule = (rule) => {\n return (\n rule.indexOf(UBO_SCRIPTLET_MASK_1) > -1\n || rule.indexOf(UBO_SCRIPTLET_MASK_2) > -1\n || rule.indexOf(UBO_SCRIPTLET_EXCEPTION_MASK_1) > -1\n || rule.indexOf(UBO_SCRIPTLET_EXCEPTION_MASK_2) > -1\n )\n && UBO_SCRIPTLET_MASK_REG.test(rule)\n && !isComment(rule);\n};\n\n/**\n * Checks if the `rule` is AdBlock Plus snippet\n * @param {string} rule rule text\n */\nconst isAbpSnippetRule = (rule) => {\n return (\n rule.indexOf(ABP_SCRIPTLET_MASK) > -1\n || rule.indexOf(ABP_SCRIPTLET_EXCEPTION_MASK) > -1\n )\n && rule.search(ADG_CSS_MASK_REG) === -1\n && !isComment(rule);\n};\n\n/**\n * Finds scriptlet by it's name\n * @param {string} name - scriptlet name\n */\nconst getScriptletByName = (name) => {\n const scriptlets = Object.keys(scriptletsList).map((key) => scriptletsList[key]);\n return scriptlets\n .find((s) => {\n return s.names\n // full match name checking\n && (s.names.indexOf(name) > -1\n // or check ubo alias name without '.js' at the end\n || (!endsWith(name, '.js') && s.names.indexOf(`${name}.js`) > -1)\n );\n });\n};\n\n/**\n * Checks if the scriptlet name is valid\n * @param {string} name - Scriptlet name\n */\nconst isValidScriptletName = (name) => {\n if (!name) {\n return false;\n }\n const scriptlet = getScriptletByName(name);\n if (!scriptlet) {\n return false;\n }\n return true;\n};\n\n/* ************************************************************************\n *\n * Redirects\n *\n ************************************************************************** */\n\n/**\n * Redirect resources markers\n */\nconst ADG_UBO_REDIRECT_MARKER = 'redirect=';\nconst ABP_REDIRECT_MARKER = 'rewrite=abp-resource:';\n\nconst VALID_SOURCE_TYPES = [\n 'image',\n 'subdocument',\n 'stylesheet',\n 'script',\n 'xmlhttprequest',\n 'media',\n];\n\nconst validAdgRedirects = redirects.filter((el) => el.adg);\n\n/**\n * Converts array of pairs to object.\n * Sort of Object.fromEntries() polyfill.\n * @param {Array} pairs - array of pairs\n * @returns {Object}\n */\nconst objFromEntries = (pairs) => {\n const output = pairs\n .reduce((acc, el) => {\n const [key, value] = el;\n acc[key] = value;\n return acc;\n }, {});\n return output;\n};\n\n/**\n * Compatibility object where KEYS = UBO redirect names and VALUES = ADG redirect names\n * It's used for UBO -> ADG converting\n */\nconst uboToAdgCompatibility = objFromEntries(\n validAdgRedirects\n .filter((el) => el.ubo)\n .map((el) => {\n return [el.ubo, el.adg];\n }),\n);\n\n/**\n * Compatibility object where KEYS = ABP redirect names and VALUES = ADG redirect names\n * It's used for ABP -> ADG converting\n */\nconst abpToAdgCompatibility = objFromEntries(\n validAdgRedirects\n .filter((el) => el.abp)\n .map((el) => {\n return [el.abp, el.adg];\n }),\n);\n\n/**\n * Compatibility object where KEYS = UBO redirect names and VALUES = ADG redirect names\n * It's used for ADG -> UBO converting\n */\nconst adgToUboCompatibility = objFromEntries(\n validAdgRedirects\n .filter((el) => el.ubo)\n .map((el) => {\n return [el.adg, el.ubo];\n }),\n);\n\n/**\n * Needed for AdGuard redirect names validation where KEYS = **valid** AdGuard redirect names\n * 'adgToUboCompatibility' is still needed for ADG -> UBO converting\n */\nconst validAdgCompatibility = objFromEntries(\n validAdgRedirects\n .map((el) => {\n return [el.adg, 'valid adg redirect'];\n }),\n);\n\nconst REDIRECT_RULE_TYPES = {\n VALID_ADG: {\n marker: ADG_UBO_REDIRECT_MARKER,\n compatibility: validAdgCompatibility,\n },\n ADG: {\n marker: ADG_UBO_REDIRECT_MARKER,\n compatibility: adgToUboCompatibility,\n },\n UBO: {\n marker: ADG_UBO_REDIRECT_MARKER,\n compatibility: uboToAdgCompatibility,\n },\n ABP: {\n marker: ABP_REDIRECT_MARKER,\n compatibility: abpToAdgCompatibility,\n },\n};\n\n/**\n * Parses redirect rule modifiers\n * @param {string} rule\n * @returns {Array}\n */\nconst parseModifiers = (rule) => substringAfter(rule, '$').split(',');\n\n/**\n * Gets redirect resource name\n * @param {string} rule\n * @param {string} marker - specific Adg/Ubo or Abp redirect resources marker\n * @returns {string} - redirect resource name\n */\nconst getRedirectName = (rule, marker) => {\n const ruleModifiers = parseModifiers(rule);\n const redirectNamePart = ruleModifiers\n .find((el) => el.indexOf(marker) > -1);\n return substringAfter(redirectNamePart, marker);\n};\n\n/**\n * Checks if the `rule` is AdGuard redirect rule.\n * Discards comments and JS rules and checks if the `rule` has 'redirect' modifier.\n * @param {string} rule - rule text\n */\nconst isAdgRedirectRule = (rule) => {\n const MARKER_IN_BASE_PART_MASK = '/((?!\\\\$|\\\\,).{1})redirect=(.{0,}?)\\\\$(popup)?/';\n return (\n !isComment(rule)\n && rule.indexOf(REDIRECT_RULE_TYPES.ADG.marker) > -1\n // some js rules may have 'redirect=' in it, so we should get rid of them\n && rule.indexOf(JS_RULE_MARKER) === -1\n // get rid of rules like '_redirect=*://look.$popup'\n && !(toRegExp(MARKER_IN_BASE_PART_MASK).test(rule))\n );\n};\n\n/**\n * Checks if the `rule` satisfies the `type`\n * @param {string} rule - rule text\n * @param {'VALID_ADG'|'ADG'|'UBO'|'ABP'} type - type of a redirect rule\n */\nconst isRedirectRuleByType = (rule, type) => {\n const { marker, compatibility } = REDIRECT_RULE_TYPES[type];\n\n if (rule\n && (!isComment(rule))\n && (rule.indexOf(marker) > -1)) {\n const redirectName = getRedirectName(rule, marker);\n\n return redirectName === Object\n .keys(compatibility)\n .find((el) => el === redirectName);\n }\n return false;\n};\n\n/**\n* Checks if the `rule` is **valid** AdGuard redirect resource rule\n* @param {string} rule - rule text\n* @returns {boolean}\n*/\nconst isValidAdgRedirectRule = (rule) => {\n return isRedirectRuleByType(rule, 'VALID_ADG');\n};\n\n/**\n* Checks if the AdGuard redirect `rule` has Ubo analog. Needed for Adg->Ubo conversion\n* @param {string} rule - AdGuard rule text\n* @returns {boolean} - true if the rule can be converted to Ubo\n*/\nconst isAdgRedirectCompatibleWithUbo = (rule) => {\n return isAdgRedirectRule(rule) && isRedirectRuleByType(rule, 'ADG');\n};\n\n/**\n* Checks if the Ubo redirect `rule` has AdGuard analog. Needed for Ubo->Adg conversion\n* @param {string} rule - Ubo rule text\n* @returns {boolean} - true if the rule can be converted to AdGuard\n*/\nconst isUboRedirectCompatibleWithAdg = (rule) => {\n return isRedirectRuleByType(rule, 'UBO');\n};\n\n/**\n* Checks if the Abp redirect `rule` has AdGuard analog. Needed for Abp->Adg conversion\n* @param {string} rule - Abp rule text\n* @returns {boolean} - true if the rule can be converted to AdGuard\n*/\nconst isAbpRedirectCompatibleWithAdg = (rule) => {\n return isRedirectRuleByType(rule, 'ABP');\n};\n\n/**\n * Checks if the rule has specified content type before Adg -> Ubo conversion.\n *\n * Used ONLY for Adg -> Ubo conversion\n * because Ubo redirect rules must contain content type, but Adg and Abp must not.\n *\n * Also source type can not be added automatically because of such valid rules:\n * ! Abp:\n * $rewrite=abp-resource:blank-js,xmlhttprequest\n * ! Adg:\n * $script,redirect=noopvast-2.0\n * $xmlhttprequest,redirect=noopvast-2.0\n *\n * @param {string} rule\n * @returns {boolean}\n */\nconst hasValidContentType = (rule) => {\n if (isRedirectRuleByType(rule, 'ADG')) {\n const ruleModifiers = parseModifiers(rule);\n const sourceType = ruleModifiers\n .find((el) => VALID_SOURCE_TYPES.indexOf(el) > -1);\n\n return sourceType !== undefined;\n }\n return false;\n};\n\nconst validator = {\n UBO_SCRIPTLET_MASK_REG,\n ABP_SCRIPTLET_MASK,\n ABP_SCRIPTLET_EXCEPTION_MASK,\n isComment,\n isAdgScriptletRule,\n isUboScriptletRule,\n isAbpSnippetRule,\n getScriptletByName,\n isValidScriptletName,\n REDIRECT_RULE_TYPES,\n isAdgRedirectRule,\n isValidAdgRedirectRule,\n isAdgRedirectCompatibleWithUbo,\n isUboRedirectCompatibleWithAdg,\n isAbpRedirectCompatibleWithAdg,\n parseModifiers,\n getRedirectName,\n hasValidContentType,\n};\n\nexport default validator;\n","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}\n\nmodule.exports = _toArray;","import {\n getBeforeRegExp,\n substringAfter,\n substringBefore,\n wrapInSingleQuotes,\n getStringInBraces,\n} from './string-utils';\n\nimport validator from './validator';\n\nimport { parseRule } from './parse-rule';\n\nimport * as scriptletList from '../scriptlets/scriptletsList';\n\n/**\n * AdGuard scriptlet rule\n */\nconst ADGUARD_SCRIPTLET_MASK_REG = /#@?%#\\/\\/scriptlet\\(.+\\)/;\n// eslint-disable-next-line no-template-curly-in-string\nconst ADGUARD_SCRIPTLET_TEMPLATE = '${domains}#%#//scriptlet(${args})';\n// eslint-disable-next-line no-template-curly-in-string\nconst ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE = '${domains}#@%#//scriptlet(${args})';\n\n/**\n * uBlock scriptlet rule mask\n */\n// eslint-disable-next-line no-template-curly-in-string\nconst UBO_SCRIPTLET_TEMPLATE = '${domains}##+js(${args})';\n// eslint-disable-next-line no-template-curly-in-string\nconst UBO_SCRIPTLET_EXCEPTION_TEMPLATE = '${domains}#@#+js(${args})';\n\nconst UBO_ALIAS_NAME_MARKER = 'ubo-';\n\n// https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#xhr\nconst UBO_XHR_TYPE = 'xhr';\n\nconst ADG_XHR_TYPE = 'xmlhttprequest';\n\n/**\n * Returns array of strings separated by space which not in quotes\n * @param {string} str\n */\nconst getSentences = (str) => {\n const reg = /'.*?'|\".*?\"|\\S+/g;\n return str.match(reg);\n};\n\n/**\n * Replaces string with data by placeholders\n * @param {string} str\n * @param {Object} data - where keys are placeholders names\n */\nconst replacePlaceholders = (str, data) => {\n return Object.keys(data).reduce((acc, key) => {\n const reg = new RegExp(`\\\\$\\\\{${key}\\\\}`, 'g');\n acc = acc.replace(reg, data[key]);\n return acc;\n }, str);\n};\n\n/**\n * Converts string of UBO scriptlet rule to AdGuard scritlet rule\n * @param {string} rule - UBO scriptlet rule\n * @returns {Array} - array with one AdGuard scriptlet rule\n */\nexport const convertUboScriptletToAdg = (rule) => {\n const domains = getBeforeRegExp(rule, validator.UBO_SCRIPTLET_MASK_REG);\n const mask = rule.match(validator.UBO_SCRIPTLET_MASK_REG)[0];\n let template;\n if (mask.indexOf('@') > -1) {\n template = ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE;\n } else {\n template = ADGUARD_SCRIPTLET_TEMPLATE;\n }\n const args = getStringInBraces(rule)\n .split(/, /g)\n .map((arg, index) => {\n let outputArg;\n if (index === 0) {\n outputArg = (arg.indexOf('.js') > -1) ? `ubo-${arg}` : `ubo-${arg}.js`;\n } else {\n outputArg = arg;\n }\n // for example: dramaserial.xyz##+js(abort-current-inline-script, $, popup)\n if (arg === '$') {\n outputArg = '$$';\n }\n return outputArg;\n })\n .map((arg) => wrapInSingleQuotes(arg))\n .join(', ');\n const adgRule = replacePlaceholders(\n template,\n { domains, args },\n );\n return [adgRule];\n};\n\n/**\n * Convert string of ABP snippet rule to AdGuard scritlet rule\n * @param {string} rule - ABP snippet rule\n * @returns {Array} - array of AdGuard scriptlet rules -\n * one or few items depends on Abp-rule\n */\nexport const convertAbpSnippetToAdg = (rule) => {\n const SEMICOLON_DIVIDER = /;(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/g;\n const mask = rule.indexOf(validator.ABP_SCRIPTLET_MASK) > -1\n ? validator.ABP_SCRIPTLET_MASK\n : validator.ABP_SCRIPTLET_EXCEPTION_MASK;\n const template = mask === validator.ABP_SCRIPTLET_MASK\n ? ADGUARD_SCRIPTLET_TEMPLATE\n : ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE;\n const domains = substringBefore(rule, mask);\n const args = substringAfter(rule, mask);\n\n return args.split(SEMICOLON_DIVIDER)\n .map((args) => getSentences(args)\n .filter((arg) => arg)\n .map((arg, index) => (index === 0 ? `abp-${arg}` : arg))\n .map((arg) => wrapInSingleQuotes(arg))\n .join(', '))\n .map((args) => replacePlaceholders(template, { domains, args }));\n};\n\n/**\n * Converts scriptlet rule to AdGuard one\n * @param {string} rule\n * @returns {Array} - array of AdGuard scriptlet rules -\n * one item for Adg and Ubo or few items for Abp\n */\nexport const convertScriptletToAdg = (rule) => {\n let result;\n if (validator.isUboScriptletRule(rule)) {\n result = convertUboScriptletToAdg(rule);\n } else if (validator.isAbpSnippetRule(rule)) {\n result = convertAbpSnippetToAdg(rule);\n } else if (validator.isAdgScriptletRule(rule) || (validator.isComment(rule))) {\n result = [rule];\n }\n\n return result;\n};\n\n/**\n * Converts UBO scriptlet rule to AdGuard one\n * @param {string} rule - AdGuard scriptlet rule\n * @returns {string} - UBO scriptlet rule\n */\nexport const convertAdgScriptletToUbo = (rule) => {\n let res;\n\n if (validator.isAdgScriptletRule(rule)) {\n const { name: parsedName, args: parsedParams } = parseRule(rule);\n\n // object of name and aliases for the Adg-scriptlet\n const adgScriptletObject = Object\n .keys(scriptletList)\n .map((el) => scriptletList[el])\n .map((s) => {\n const [name, ...aliases] = s.names;\n return { name, aliases };\n })\n .find((el) => (el.name === parsedName\n || el.aliases.indexOf(parsedName) >= 0));\n\n const { aliases } = adgScriptletObject;\n\n if (aliases.length > 0) {\n const uboAlias = adgScriptletObject.aliases\n // eslint-disable-next-line no-restricted-properties\n .find((alias) => alias.includes(UBO_ALIAS_NAME_MARKER));\n\n if (uboAlias) {\n const mask = rule.match(ADGUARD_SCRIPTLET_MASK_REG)[0];\n let template;\n if (mask.indexOf('@') > -1) {\n template = UBO_SCRIPTLET_EXCEPTION_TEMPLATE;\n } else {\n template = UBO_SCRIPTLET_TEMPLATE;\n }\n const domains = getBeforeRegExp(rule, ADGUARD_SCRIPTLET_MASK_REG);\n const uboName = uboAlias\n .replace(UBO_ALIAS_NAME_MARKER, '')\n // '.js' in the Ubo scriptlet name can be omitted\n // https://github.com/gorhill/uBlock/wiki/Resources-Library#general-purpose-scriptlets\n .replace('.js', '');\n\n const args = (parsedParams.length > 0) ? `${uboName}, ${parsedParams.join(', ')}` : uboName;\n\n const uboRule = replacePlaceholders(\n template,\n { domains, args },\n );\n\n res = uboRule;\n }\n }\n }\n\n return res;\n};\n\n/**\n * Validates any scriptlet rule\n * @param {string} input - can be Adguard or Ubo or Abp scriptlet rule\n */\nexport const isValidScriptletRule = (input) => {\n if (!input) {\n return false;\n }\n // ABP 'input' rule may contain more than one snippet\n const rulesArray = convertScriptletToAdg(input);\n\n // checking if each of parsed scriptlets is valid\n // if at least one of them is not valid - whole 'input' rule is not valid too\n const isValid = rulesArray.reduce((acc, rule) => {\n const parsedRule = parseRule(rule);\n return validator.isValidScriptletName(parsedRule.name) && acc;\n }, true);\n\n return isValid;\n};\n\n/**\n * Converts Ubo redirect rule to Adg one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertUboRedirectToAdg = (rule) => {\n const firstPartOfRule = substringBefore(rule, '$');\n const uboModifiers = validator.parseModifiers(rule);\n const adgModifiers = uboModifiers\n .map((el) => {\n if (el.indexOf(validator.REDIRECT_RULE_TYPES.UBO.marker) > -1) {\n const uboName = substringAfter(el, validator.REDIRECT_RULE_TYPES.UBO.marker);\n const adgName = validator.REDIRECT_RULE_TYPES.UBO.compatibility[uboName];\n return `${validator.REDIRECT_RULE_TYPES.ADG.marker}${adgName}`;\n }\n if (el === UBO_XHR_TYPE) {\n return ADG_XHR_TYPE;\n }\n return el;\n })\n .join(',');\n\n return `${firstPartOfRule}$${adgModifiers}`;\n};\n\n/**\n * Converts Abp redirect rule to Adg one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertAbpRedirectToAdg = (rule) => {\n const firstPartOfRule = substringBefore(rule, '$');\n const abpModifiers = validator.parseModifiers(rule);\n const adgModifiers = abpModifiers\n .map((el) => {\n if (el.indexOf(validator.REDIRECT_RULE_TYPES.ABP.marker) > -1) {\n const abpName = substringAfter(el, validator.REDIRECT_RULE_TYPES.ABP.marker);\n const adgName = validator.REDIRECT_RULE_TYPES.ABP.compatibility[abpName];\n return `${validator.REDIRECT_RULE_TYPES.ADG.marker}${adgName}`;\n }\n return el;\n })\n .join(',');\n\n return `${firstPartOfRule}$${adgModifiers}`;\n};\n\n/**\n * Converts redirect rule to AdGuard one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertRedirectToAdg = (rule) => {\n let result;\n if (validator.isUboRedirectCompatibleWithAdg(rule)) {\n result = convertUboRedirectToAdg(rule);\n } else if (validator.isAbpRedirectCompatibleWithAdg(rule)) {\n result = convertAbpRedirectToAdg(rule);\n } else if (validator.isValidAdgRedirectRule(rule)) {\n result = rule;\n }\n\n return result;\n};\n\n/**\n * Converts Adg redirect rule to Ubo one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertAdgRedirectToUbo = (rule) => {\n if (!validator.hasValidContentType(rule)) {\n throw new Error(`Rule is not valid for converting to Ubo. Source type is not specified in the rule: ${rule}`);\n } else {\n const firstPartOfRule = substringBefore(rule, '$');\n const uboModifiers = validator.parseModifiers(rule);\n const adgModifiers = uboModifiers\n .map((el) => {\n if (el.indexOf(validator.REDIRECT_RULE_TYPES.ADG.marker) > -1) {\n const adgName = substringAfter(el, validator.REDIRECT_RULE_TYPES.ADG.marker);\n const uboName = validator.REDIRECT_RULE_TYPES.ADG.compatibility[adgName];\n return `${validator.REDIRECT_RULE_TYPES.UBO.marker}${uboName}`;\n }\n return el;\n })\n .join(',');\n\n return `${firstPartOfRule}$${adgModifiers}`;\n }\n};\n","import {\n hit, noopFunc, noopNull, noopArray,\n} from '../helpers';\n\n/**\n * @redirect google-analytics\n *\n * @description\n * Mocks Google Analytics API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/google-analytics_analytics.js\n *\n * **Example**\n * ```\n * ||google-analytics.com/analytics.js$script,redirect=google-analytics\n * ```\n */\nexport function GoogleAnalytics(source) {\n // eslint-disable-next-line func-names\n const Tracker = function () { }; // constructor\n const proto = Tracker.prototype;\n proto.get = noopFunc;\n proto.set = noopFunc;\n proto.send = noopFunc;\n\n const googleAnalyticsName = window.GoogleAnalyticsObject || 'ga';\n function ga() {\n const len = arguments.length;\n if (len === 0) {\n return;\n }\n // eslint-disable-next-line prefer-rest-params\n const lastArg = arguments[len - 1];\n if (typeof lastArg !== 'object'\n || lastArg === null\n || typeof lastArg.hitCallback !== 'function'\n ) {\n return;\n }\n\n try {\n lastArg.hitCallback();\n // eslint-disable-next-line no-empty\n } catch (ex) { }\n }\n\n ga.create = () => new Tracker();\n ga.getByName = noopNull;\n ga.getAll = noopArray;\n ga.remove = noopFunc;\n ga.loaded = true;\n window[googleAnalyticsName] = ga;\n\n const { dataLayer } = window;\n if (dataLayer instanceof Object\n && dataLayer.hide instanceof Object\n && typeof dataLayer.hide.end === 'function'\n ) {\n dataLayer.hide.end();\n }\n\n hit(source);\n}\n\nGoogleAnalytics.names = [\n 'google-analytics',\n 'ubo-google-analytics_analytics.js',\n 'google-analytics_analytics.js',\n];\n\nGoogleAnalytics.injections = [\n hit,\n noopFunc,\n noopNull,\n noopArray,\n];\n","/* eslint-disable no-underscore-dangle */\nimport { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect google-analytics-ga\n *\n * @description\n * Mocks old Google Analytics API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/google-analytics_ga.js\n *\n * **Example**\n * ```\n * ||google-analytics.com/ga.js$script,redirect=google-analytics-ga\n * ```\n */\nexport function GoogleAnalyticsGa(source) {\n // Gaq constructor\n function Gaq() { }\n\n Gaq.prototype.Na = noopFunc;\n Gaq.prototype.O = noopFunc;\n Gaq.prototype.Sa = noopFunc;\n Gaq.prototype.Ta = noopFunc;\n Gaq.prototype.Va = noopFunc;\n Gaq.prototype._createAsyncTracker = noopFunc;\n Gaq.prototype._getAsyncTracker = noopFunc;\n Gaq.prototype._getPlugin = noopFunc;\n Gaq.prototype.push = (data) => {\n if (typeof data === 'function') {\n data();\n return;\n }\n if (Array.isArray(data) === false) {\n return;\n }\n // https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiDomainDirectory#_gat.GA_Tracker_._link\n if (data[0] === '_link' && typeof data[1] === 'string') {\n window.location.assign(data[1]);\n }\n // https://github.com/gorhill/uBlock/issues/2162\n if (data[0] === '_set' && data[1] === 'hitCallback' && typeof data[2] === 'function') {\n data[2]();\n }\n };\n\n const gaq = new Gaq();\n const asyncTrackers = window._gaq || [];\n if (Array.isArray(asyncTrackers)) {\n while (asyncTrackers[0]) {\n gaq.push(asyncTrackers.shift());\n }\n }\n // eslint-disable-next-line no-multi-assign\n window._gaq = gaq.qf = gaq;\n\n // Gat constructor\n function Gat() { }\n\n // Mock tracker api\n const api = [\n '_addIgnoredOrganic', '_addIgnoredRef', '_addItem', '_addOrganic',\n '_addTrans', '_clearIgnoredOrganic', '_clearIgnoredRef', '_clearOrganic',\n '_cookiePathCopy', '_deleteCustomVar', '_getName', '_setAccount',\n '_getAccount', '_getClientInfo', '_getDetectFlash', '_getDetectTitle',\n '_getLinkerUrl', '_getLocalGifPath', '_getServiceMode', '_getVersion',\n '_getVisitorCustomVar', '_initData', '_link', '_linkByPost',\n '_setAllowAnchor', '_setAllowHash', '_setAllowLinker', '_setCampContentKey',\n '_setCampMediumKey', '_setCampNameKey', '_setCampNOKey', '_setCampSourceKey',\n '_setCampTermKey', '_setCampaignCookieTimeout', '_setCampaignTrack', '_setClientInfo',\n '_setCookiePath', '_setCookiePersistence', '_setCookieTimeout', '_setCustomVar',\n '_setDetectFlash', '_setDetectTitle', '_setDomainName', '_setLocalGifPath',\n '_setLocalRemoteServerMode', '_setLocalServerMode', '_setReferrerOverride', '_setRemoteServerMode',\n '_setSampleRate', '_setSessionTimeout', '_setSiteSpeedSampleRate', '_setSessionCookieTimeout',\n '_setVar', '_setVisitorCookieTimeout', '_trackEvent', '_trackPageLoadTime',\n '_trackPageview', '_trackSocial', '_trackTiming', '_trackTrans',\n '_visitCode',\n ];\n const tracker = api.reduce((res, funcName) => {\n res[funcName] = noopFunc;\n return res;\n }, {});\n tracker._getLinkerUrl = (a) => a;\n\n Gat.prototype._anonymizeIP = noopFunc;\n Gat.prototype._createTracker = noopFunc;\n Gat.prototype._forceSSL = noopFunc;\n Gat.prototype._getPlugin = noopFunc;\n Gat.prototype._getTracker = () => tracker;\n Gat.prototype._getTrackerByName = () => tracker;\n Gat.prototype._getTrackers = noopFunc;\n Gat.prototype.aa = noopFunc;\n Gat.prototype.ab = noopFunc;\n Gat.prototype.hb = noopFunc;\n Gat.prototype.la = noopFunc;\n Gat.prototype.oa = noopFunc;\n Gat.prototype.pa = noopFunc;\n Gat.prototype.u = noopFunc;\n\n const gat = new Gat();\n window._gat = gat;\n\n hit(source);\n}\n\nGoogleAnalyticsGa.names = [\n 'google-analytics-ga',\n 'ubo-google-analytics_ga.js',\n 'google-analytics_ga.js',\n];\n\nGoogleAnalyticsGa.injections = [hit, noopFunc];\n","import { hit } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @redirect googlesyndication-adsbygoogle\n *\n * @description\n * Mocks Google AdSense API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/googlesyndication_adsbygoogle.js\n *\n * **Example**\n * ```\n * ||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=googlesyndication-adsbygoogle\n * ```\n */\n/* eslint-enable max-len */\nexport function GoogleSyndicationAdsByGoogle(source) {\n window.adsbygoogle = window.adsbygoogle || {\n length: 0,\n loaded: true,\n push() {\n this.length += 1;\n },\n };\n const adElems = document.querySelectorAll('.adsbygoogle');\n const css = 'height:1px!important;max-height:1px!important;max-width:1px!important;width:1px!important;';\n const statusAttrName = 'data-adsbygoogle-status';\n const ASWIFT_IFRAME_MARKER = 'aswift_';\n const GOOGLE_ADS_IFRAME_MARKER = 'google_ads_iframe_';\n\n let executed = false;\n for (let i = 0; i < adElems.length; i += 1) {\n const adElemChildNodes = adElems[i].childNodes;\n const childNodesQuantity = adElemChildNodes.length;\n // childNodes of .adsbygoogle can be defined if scriptlet was executed before\n // so we should check are that childNodes exactly defined by us\n // TODO: remake after scriptlets context developing in 1.3\n let areIframesDefined = false;\n if (childNodesQuantity > 0) {\n // it should be only 2 child iframes if scriptlet was executed\n areIframesDefined = childNodesQuantity === 2\n // the first of child nodes should be aswift iframe\n && adElemChildNodes[0].tagName.toLowerCase() === 'iframe'\n && adElemChildNodes[0].id.indexOf(ASWIFT_IFRAME_MARKER) > -1\n // the second of child nodes should be google_ads iframe\n && adElemChildNodes[1].tagName.toLowerCase() === 'iframe'\n && adElemChildNodes[1].id.indexOf(GOOGLE_ADS_IFRAME_MARKER) > -1;\n }\n\n if (!areIframesDefined) {\n // here we do the job if scriptlet has not been executed earlier\n adElems[i].setAttribute(statusAttrName, 'done');\n\n const aswiftIframe = document.createElement('iframe');\n aswiftIframe.id = `${ASWIFT_IFRAME_MARKER}${i + 1}`;\n aswiftIframe.style = css;\n adElems[i].appendChild(aswiftIframe);\n\n const googleadsIframe = document.createElement('iframe');\n googleadsIframe.id = `${GOOGLE_ADS_IFRAME_MARKER}${i + 1}`;\n googleadsIframe.style = css;\n adElems[i].appendChild(googleadsIframe);\n\n executed = true;\n }\n }\n\n if (executed) {\n hit(source);\n }\n}\n\nGoogleSyndicationAdsByGoogle.names = [\n 'googlesyndication-adsbygoogle',\n 'ubo-googlesyndication_adsbygoogle.js',\n 'googlesyndication_adsbygoogle.js',\n];\n\nGoogleSyndicationAdsByGoogle.injections = [\n hit,\n];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect googletagmanager-gtm\n *\n * @description\n * Mocks Google Tag Manager API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/googletagmanager_gtm.js\n *\n * **Example**\n * ```\n * ||googletagmanager.com/gtm.js$script,redirect=googletagmanager-gtm\n * ```\n */\nexport function GoogleTagManagerGtm(source) {\n window.ga = window.ga || noopFunc;\n const { dataLayer, google_optimize } = window; // eslint-disable-line camelcase\n if (dataLayer instanceof Object === false) {\n return;\n }\n\n if (dataLayer.hide instanceof Object && typeof dataLayer.hide.end === 'function') {\n dataLayer.hide.end();\n }\n\n if (typeof dataLayer.push === 'function') {\n dataLayer.push = (data) => {\n if (data instanceof Object && typeof data.eventCallback === 'function') {\n setTimeout(data.eventCallback, 1);\n }\n };\n }\n\n // https://github.com/AdguardTeam/Scriptlets/issues/81\n if (google_optimize instanceof Object && typeof google_optimize.get === 'function') { // eslint-disable-line camelcase\n const googleOptimizeWrapper = { };\n googleOptimizeWrapper.get = noopFunc;\n\n window.google_optimize = googleOptimizeWrapper;\n }\n\n hit(source);\n}\n\nGoogleTagManagerGtm.names = [\n 'googletagmanager-gtm',\n 'ubo-googletagmanager_gtm.js',\n 'googletagmanager_gtm.js',\n];\n\nGoogleTagManagerGtm.injections = [hit, noopFunc];\n","import {\n hit, noopFunc, noopThis, noopNull, noopArray, noopStr,\n} from '../helpers';\n\n/**\n * @redirect googletagservices-gpt\n *\n * @description\n * Mocks Google Publisher Tag API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/googletagservices_gpt.js\n *\n * **Example**\n * ```\n * ||googletagservices.com/tag/js/gpt.js$script,redirect=googletagservices-gpt\n * ```\n */\nexport function GoogleTagServicesGpt(source) {\n const companionAdsService = {\n addEventListener: noopThis,\n enableSyncLoading: noopFunc,\n setRefreshUnfilledSlots: noopFunc,\n };\n const contentService = {\n addEventListener: noopThis,\n setContent: noopFunc,\n };\n function PassbackSlot() { } // constructor\n\n PassbackSlot.prototype.display = noopFunc;\n PassbackSlot.prototype.get = noopNull;\n PassbackSlot.prototype.set = noopThis;\n PassbackSlot.prototype.setClickUrl = noopThis;\n PassbackSlot.prototype.setTagForChildDirectedTreatment = noopThis;\n PassbackSlot.prototype.setTargeting = noopThis;\n PassbackSlot.prototype.updateTargetingFromMap = noopThis;\n\n function SizeMappingBuilder() { } // constructor\n SizeMappingBuilder.prototype.addSize = noopThis;\n SizeMappingBuilder.prototype.build = noopNull;\n\n function Slot() { } // constructor\n Slot.prototype.addService = noopThis;\n Slot.prototype.clearCategoryExclusions = noopThis;\n Slot.prototype.clearTargeting = noopThis;\n Slot.prototype.defineSizeMapping = noopThis;\n Slot.prototype.get = noopNull;\n Slot.prototype.getAdUnitPath = noopArray;\n Slot.prototype.getAttributeKeys = noopArray;\n Slot.prototype.getCategoryExclusions = noopArray;\n Slot.prototype.getDomId = noopStr;\n Slot.prototype.getSlotElementId = noopStr;\n Slot.prototype.getSlotId = noopThis;\n Slot.prototype.getTargeting = noopArray;\n Slot.prototype.getTargetingKeys = noopArray;\n Slot.prototype.set = noopThis;\n Slot.prototype.setCategoryExclusion = noopThis;\n Slot.prototype.setClickUrl = noopThis;\n Slot.prototype.setCollapseEmptyDiv = noopThis;\n Slot.prototype.setTargeting = noopThis;\n\n const pubAdsService = {\n addEventListener: noopThis,\n clear: noopFunc,\n clearCategoryExclusions: noopThis,\n clearTagForChildDirectedTreatment: noopThis,\n clearTargeting: noopThis,\n collapseEmptyDivs: noopFunc,\n defineOutOfPagePassback() { return new PassbackSlot(); },\n definePassback() { return new PassbackSlot(); },\n disableInitialLoad: noopFunc,\n display: noopFunc,\n enableAsyncRendering: noopFunc,\n enableSingleRequest: noopFunc,\n enableSyncRendering: noopFunc,\n enableVideoAds: noopFunc,\n get: noopNull,\n getAttributeKeys: noopArray,\n getTargeting: noopFunc,\n getTargetingKeys: noopArray,\n getSlots: noopArray,\n refresh: noopFunc,\n set: noopThis,\n setCategoryExclusion: noopThis,\n setCentering: noopFunc,\n setCookieOptions: noopThis,\n setForceSafeFrame: noopThis,\n setLocation: noopThis,\n setPublisherProvidedId: noopThis,\n setRequestNonPersonalizedAds: noopThis,\n setSafeFrameConfig: noopThis,\n setTagForChildDirectedTreatment: noopThis,\n setTargeting: noopThis,\n setVideoContent: noopThis,\n updateCorrelator: noopFunc,\n };\n\n const { googletag = {} } = window;\n const { cmd = [] } = googletag;\n\n googletag.apiReady = true;\n googletag.cmd = [];\n googletag.cmd.push = (a) => {\n try {\n a();\n // eslint-disable-next-line no-empty\n } catch (ex) { }\n return 1;\n };\n googletag.companionAds = () => companionAdsService;\n googletag.content = () => contentService;\n googletag.defineOutOfPageSlot = () => new Slot();\n googletag.defineSlot = () => new Slot();\n googletag.destroySlots = noopFunc;\n googletag.disablePublisherConsole = noopFunc;\n googletag.display = noopFunc;\n googletag.enableServices = noopFunc;\n googletag.getVersion = noopStr;\n googletag.pubads = () => pubAdsService;\n googletag.pubadsReady = true;\n googletag.setAdIframeTitle = noopFunc;\n googletag.sizeMapping = () => new SizeMappingBuilder();\n\n window.googletag = googletag;\n while (cmd.length !== 0) {\n googletag.cmd.push(cmd.shift());\n }\n\n hit(source);\n}\n\nGoogleTagServicesGpt.names = [\n 'googletagservices-gpt',\n 'ubo-googletagservices_gpt.js',\n 'googletagservices_gpt.js',\n];\n\nGoogleTagServicesGpt.injections = [\n hit,\n noopFunc,\n noopThis,\n noopNull,\n noopArray,\n noopStr,\n];\n","import { hit } from '../helpers';\n\n/**\n * @redirect scorecardresearch-beacon\n *\n * @description\n * Mocks Scorecard Research API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/scorecardresearch_beacon.js\n *\n * **Example**\n * ```\n * ||sb.scorecardresearch.com/beacon.js$script,redirect=scorecardresearch-beacon\n * ```\n */\nexport function ScoreCardResearchBeacon(source) {\n window.COMSCORE = {\n purge() {\n // eslint-disable-next-line no-underscore-dangle\n window._comscore = [];\n },\n beacon() {},\n };\n hit(source);\n}\n\nScoreCardResearchBeacon.names = [\n 'scorecardresearch-beacon',\n 'ubo-scorecardresearch_beacon.js',\n 'scorecardresearch_beacon.js',\n];\n\nScoreCardResearchBeacon.injections = [\n hit,\n];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect metrika-yandex-tag\n *\n * @description\n * Mocks Yandex Metrika API.\n * https://yandex.ru/support/metrica/objects/method-reference.html\n *\n * **Example**\n * ```\n * ||mc.yandex.ru/metrika/tag.js$script,redirect=metrika-yandex-tag\n * ```\n */\nexport function metrikaYandexTag(source) {\n const asyncCallbackFromOptions = (param, options = {}) => {\n let { callback } = options;\n const { ctx } = options;\n if (typeof callback === 'function') {\n callback = ctx !== undefined ? callback.bind(ctx) : callback;\n setTimeout(() => callback());\n }\n };\n\n const init = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/addfileextension.html\n */\n const addFileExtension = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/extlink.html\n */\n const extLink = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/file.html\n */\n const file = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/get-client-id.html\n * @param {Function} cb\n */\n const getClientID = (cb) => {\n setTimeout(cb(null));\n };\n\n /**\n * https://yandex.ru/support/metrica/objects/hit.html\n */\n const hitFunc = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/notbounce.html\n */\n const notBounce = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/params-method.html\n */\n const params = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/reachgoal.html\n * @param {string} target\n * @param {Object} params\n * @param {Function} callback\n * @param {any} ctx\n */\n const reachGoal = (target, params, callback, ctx) => {\n asyncCallbackFromOptions(null, { callback, ctx });\n };\n\n /**\n * https://yandex.ru/support/metrica/objects/set-user-id.html\n */\n const setUserID = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/user-params.html\n */\n const userParams = noopFunc;\n\n const api = {\n init,\n addFileExtension,\n extLink,\n file,\n getClientID,\n hit: hitFunc,\n notBounce,\n params,\n reachGoal,\n setUserID,\n userParams,\n };\n\n function ym(id, funcName, ...args) {\n return api[funcName] && api[funcName](...args);\n }\n\n window.ym = ym;\n\n hit(source);\n}\n\nmetrikaYandexTag.names = [\n 'metrika-yandex-tag',\n];\n\nmetrikaYandexTag.injections = [hit, noopFunc];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect metrika-yandex-watch\n *\n * @description\n * Mocks the old Yandex Metrika API.\n * https://yandex.ru/support/metrica/objects/_method-reference.html\n *\n * **Example**\n * ```\n * ||mc.yandex.ru/metrika/watch.js$script,redirect=metrika-yandex-watch\n * ```\n */\nexport function metrikaYandexWatch(source) {\n const cbName = 'yandex_metrika_callbacks';\n\n /**\n * Gets callback and its context from options and call it in async way\n * @param {Object} options Yandex Metrika API options\n */\n const asyncCallbackFromOptions = (options = {}) => {\n let { callback } = options;\n const { ctx } = options;\n if (typeof callback === 'function') {\n callback = ctx !== undefined ? callback.bind(ctx) : callback;\n setTimeout(() => callback());\n }\n };\n\n function Metrika() { } // constructor\n\n // Methods without options\n Metrika.prototype.addFileExtension = noopFunc;\n Metrika.prototype.getClientID = noopFunc;\n Metrika.prototype.setUserID = noopFunc;\n Metrika.prototype.userParams = noopFunc;\n\n // Methods with options\n // The order of arguments should be kept in according to API\n Metrika.prototype.extLink = (url, options) => {\n asyncCallbackFromOptions(options);\n };\n Metrika.prototype.file = (url, options) => {\n asyncCallbackFromOptions(options);\n };\n Metrika.prototype.hit = (url, options) => {\n asyncCallbackFromOptions(options);\n };\n Metrika.prototype.reachGoal = (target, params, cb, ctx) => {\n asyncCallbackFromOptions({ callback: cb, ctx });\n };\n Metrika.prototype.notBounce = asyncCallbackFromOptions;\n\n if (window.Ya) {\n window.Ya.Metrika = Metrika;\n } else {\n window.Ya = { Metrika };\n }\n\n if (window[cbName] && Array.isArray(window[cbName])) {\n window[cbName].forEach((func) => {\n if (typeof func === 'function') {\n func();\n }\n });\n }\n\n hit(source);\n}\n\nmetrikaYandexWatch.names = [\n 'metrika-yandex-watch',\n];\n\nmetrikaYandexWatch.injections = [hit, noopFunc];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect amazon-apstag\n *\n * @description\n * Mocks Amazon's apstag.js\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/f842ab6d3c1cf0394f95d27092bf59627262da40/src/web_accessible_resources/amazon_apstag.js\n *\n * **Example**\n * ```\n * ||amazon-adsystem.com/aax2/apstag.js$script,redirect=amazon-apstag\n * ```\n */\nexport function AmazonApstag(source) {\n const apstagWrapper = {\n fetchBids(a, b) {\n if (typeof b === 'function') {\n b([]);\n }\n },\n init: noopFunc,\n setDisplayBids: noopFunc,\n targetingKeys: noopFunc,\n };\n\n window.apstag = apstagWrapper;\n\n hit(source);\n}\n\nAmazonApstag.names = [\n 'amazon-apstag',\n 'ubo-amazon_apstag.js',\n 'amazon_apstag.js',\n];\n\nAmazonApstag.injections = [hit, noopFunc];\n","import {\n attachDependencies,\n addCall,\n wrapInNonameFunc,\n passSourceAndProps,\n} from '../helpers/injector';\n\nimport validator from '../helpers/validator';\n\nimport {\n convertUboRedirectToAdg,\n convertAbpRedirectToAdg,\n convertRedirectToAdg,\n convertAdgRedirectToUbo,\n} from '../helpers/converter';\n\nimport * as redirectsList from './redirectsList';\n\n/**\n * Finds redirect resource by it's name\n * @param {string} name - redirect name\n */\nconst getRedirectByName = (name) => {\n const redirects = Object.keys(redirectsList).map((key) => redirectsList[key]);\n return redirects.find((r) => r.names && r.names.indexOf(name) > -1);\n};\n\n/**\n * @typedef {Object} Source - redirect properties\n * @property {string} name redirect name\n * @property {Array} args Arguments for redirect function\n * @property {'extension'|'test'} [engine] -\n * Defines the final form of redirect string presentation\n * @property {boolean} [verbose] flag to enable printing to console debug information\n */\n\n/**\n * Returns redirect code by param\n * @param {Source} source\n * @returns {string} redirect code\n */\nconst getRedirectCode = (source) => {\n const redirect = getRedirectByName(source.name);\n let result = attachDependencies(redirect);\n result = addCall(redirect, result);\n\n // redirect code for different sources is checked in tests\n // so it should be just a code without any source and props passed\n result = source.engine === 'test'\n ? wrapInNonameFunc(result)\n : passSourceAndProps(source, result);\n\n return result;\n};\n\nexport const redirectsCjs = {\n getCode: getRedirectCode,\n isAdgRedirectRule: validator.isAdgRedirectRule,\n isValidAdgRedirectRule: validator.isValidAdgRedirectRule,\n isAdgRedirectCompatibleWithUbo: validator.isAdgRedirectCompatibleWithUbo,\n isUboRedirectCompatibleWithAdg: validator.isUboRedirectCompatibleWithAdg,\n isAbpRedirectCompatibleWithAdg: validator.isAbpRedirectCompatibleWithAdg,\n convertUboRedirectToAdg,\n convertAbpRedirectToAdg,\n convertRedirectToAdg,\n convertAdgRedirectToUbo,\n};\n","import { redirectsCjs } from '../redirects';\n\nimport {\n attachDependencies,\n addCall,\n passSourceAndProps,\n wrapInNonameFunc,\n} from '../helpers/injector';\n\nimport validator from '../helpers/validator';\n\nimport {\n isValidScriptletRule,\n convertUboScriptletToAdg,\n convertAbpSnippetToAdg,\n convertScriptletToAdg,\n convertAdgScriptletToUbo,\n} from '../helpers/converter';\n\n/**\n * @typedef {Object} Source - scriptlet properties\n * @property {string} name Scriptlet name\n * @property {Array} args Arguments for scriptlet function\n * @property {'extension'|'corelibs'|'test'} engine -\n * Defines the final form of scriptlet string presentation\n * @property {string} [version]\n * @property {boolean} [verbose] flag to enable printing to console debug information\n * @property {string} [ruleText] Source rule text is used for debugging purposes\n * @property {string} [domainName] domain name where scriptlet is applied; for debugging purposes\n */\n\n/**\n * Returns scriptlet code by param\n * @param {Source} source\n * @returns {string} scriptlet code\n */\nfunction getScriptletCode(source) {\n if (!validator.isValidScriptletName(source.name)) {\n return null;\n }\n\n const scriptlet = validator.getScriptletByName(source.name);\n let result = attachDependencies(scriptlet);\n result = addCall(scriptlet, result);\n result = source.engine === 'corelibs' || source.engine === 'test'\n ? wrapInNonameFunc(result)\n : passSourceAndProps(source, result);\n return result;\n}\n\n/**\n * Scriptlets variable\n *\n * @returns {Object} object with methods:\n * `invoke` method receives one argument with `Source` type\n * `validate` method receives one argument with `String` type\n */\nconst scriptletsObject = (() => ({\n invoke: getScriptletCode,\n isValidScriptletName: validator.isValidScriptletName,\n isValidScriptletRule,\n isAdgScriptletRule: validator.isAdgScriptletRule,\n isUboScriptletRule: validator.isUboScriptletRule,\n isAbpSnippetRule: validator.isAbpSnippetRule,\n convertUboToAdg: convertUboScriptletToAdg,\n convertAbpToAdg: convertAbpSnippetToAdg,\n convertScriptletToAdg,\n convertAdgToUbo: convertAdgScriptletToUbo,\n redirects: redirectsCjs,\n}))();\n\nexport default scriptletsObject;\n","import scriptletsObject from './index';\n\n/**\n * Expose scriptlets to global\n */\n// eslint-disable-next-line no-undef\nscriptlets = scriptletsObject;\n"],"names":["randomId","Math","random","toString","substr","setPropertyAccess","object","property","descriptor","currentDescriptor","Object","getOwnPropertyDescriptor","configurable","defineProperty","getPropertyInChain","base","chain","addProp","pos","indexOf","prop","slice","own","undefined","escapeRegExp","str","replace","toRegExp","length","RegExp","escaped","getBeforeRegExp","rx","index","search","substring","startsWith","prefix","endsWith","substringAfter","separator","substringBefore","wrapInSingleQuotes","getStringInBraces","firstIndex","lastIndex","lastIndexOf","createOnErrorHandler","rid","nativeOnError","window","onerror","onError","error","Function","args","apply","noopFunc","noopNull","trueFunc","falseFunc","noopThis","noopArray","noopStr","hit","source","message","verbose","log","console","bind","trace","ruleText","domainName","AG_SCRIPTLET_MARKER","UBO_SCRIPTLET_MARKER","ruleStartIndex","rulePart","LOG_MARKER","e","__debug","observeDOMChanges","callback","observeAttrs","attrsToObserv","throttle","method","delay","wait","savedArgs","wrapper","setTimeout","THROTTLE_DELAY_MS","observer","MutationObserver","callbackWrapper","connect","observe","document","documentElement","childList","subtree","attributes","attributeFilter","disconnect","matchStackTrace","stackRegexp","stackTrace","refinedStackTrace","split","map","line","trim","join","test","attachDependencies","scriptlet","injections","reduce","accum","dep","dependencies","name","addCall","code","passSourceAndProps","sourceString","JSON","stringify","argsString","params","wrapInNonameFunc","iterateWithTransitions","iterable","transitions","init","state","keys","i","ADG_SCRIPTLET_MASK","wordSaver","strs","saveSymb","s","saveStr","push","getAll","parseRule","TRANSITION","OPENED","PARAM","CLOSED","opened","rule","sep","char","transition","symb","Error","param","saver","preIndex","before","abortOnPropertyRead","stack","abort","ReferenceError","setChainPropAccess","owner","chainInfo","setter","a","get","set","names","abortOnPropertyWrite","preventSetTimeout","match","nativeTimeout","nativeIsNaN","Number","isNaN","shouldLog","INVERT_MARKER","isNotMatch","isNotDelay","parseInt","timeoutWrapper","timeout","shouldPrevent","preventSetInterval","nativeInterval","setInterval","intervalWrapper","interval","preventWindowOpen","replacement","nativeOpen","open","openWrapper","result","isProp","propertyPart","propertyName","propertyValue","resObj","abortCurrentInlineScript","searchRegexp","getCurrentScript","currentScript","scripts","getElementsByTagName","ourScript","scriptEl","content","textContent","textContentGetter","Node","prototype","call","HTMLScriptElement","props","propIndex","baseName","currentValue","value","setConstant","constantValue","parseFloat","abs","canceled","mustCancel","removeCookie","regex","removeCookieFromHost","cookieName","hostName","cookieSpec","domain1","domain2","path","expiration","cookie","rmCookie","forEach","cookieStr","hostParts","location","hostname","addEventListener","preventAddEventListener","eventSearch","funcSearch","eventSearchRegexp","funcSearchRegexp","nativeAddEventListener","EventTarget","addEventListenerWrapper","eventName","funcToCheck","preventBab","nativeSetTimeout","babRegex","signatures","check","tokens","j","token","found","nativeEval","eval","bodyEl","body","style","removeProperty","el","getElementById","parentNode","removeChild","nowebrtc","RTCPeerConnection","webkitRTCPeerConnection","rtcReplacement","config","close","createDataChannel","createOffer","setRemoteDescription","rtc","b","send","logAddEventListener","callbackToLog","logEval","evalWrapper","nativeFunction","FunctionWrapper","create","constructor","noeval","preventEvalIf","payload","preventFab","Fab","clearEvent","emitEvent","on","onDetected","onNotDetected","setOption","fab","getSetFab","getsetfab","hasOwnProperty","FuckAdBlock","BlockAdBlock","SniffAdBlock","fuckAdBlock","blockAdBlock","sniffAdBlock","setPopadsDummy","PopAds","popns","defineProperties","preventPopadsNet","throwError","preventAdfly","isDigit","data","handler","encodedURL","evenChars","oddChars","charAt","ii","temp","decodedURL","atob","stop","onbeforeunload","href","val","applyHandler","err","debugOnPropertyRead","debugOnPropertyWrite","debugCurrentInlineScript","removeAttr","attrs","selector","rmattr","nodes","querySelectorAll","removed","node","attr","removeAttribute","removeClass","classNames","selectors","className","removeClassHandler","Set","foundedNodes","n","add","elements","element","classList","contains","remove","CLASS_ATTR_NAME","disableNewtabLinks","ev","target","localName","hasAttribute","stopPropagation","preventDefault","adjustSetInterval","boost","nativeIsFinite","isFinite","cb","d","adjustSetTimeout","dirString","times","dir","dirWrapper","jsonPrune","propsToRemove","requiredInitialProps","prunePaths","needlePaths","isPruningNeeded","root","needlePath","details","nestedPropName","pop","nativeParse","parse","parseWrapper","r","ownerObj","preventRequestAnimationFrame","nativeRequestAnimationFrame","requestAnimationFrame","doNotMatch","rafWrapper","logMessage","setCookie","valueToSet","pathToSet","cookieData","encodeURIComponent","JS_RULE_MARKER","COMMENT_MARKER","isComment","UBO_SCRIPTLET_MASK_REG","UBO_SCRIPTLET_MASK_1","UBO_SCRIPTLET_MASK_2","UBO_SCRIPTLET_EXCEPTION_MASK_1","UBO_SCRIPTLET_EXCEPTION_MASK_2","ABP_SCRIPTLET_MASK","ABP_SCRIPTLET_EXCEPTION_MASK","ADG_CSS_MASK_REG","isAdgScriptletRule","isUboScriptletRule","isAbpSnippetRule","getScriptletByName","scriptlets","scriptletsList","key","find","isValidScriptletName","ADG_UBO_REDIRECT_MARKER","ABP_REDIRECT_MARKER","VALID_SOURCE_TYPES","validAdgRedirects","redirects","filter","adg","objFromEntries","pairs","output","acc","uboToAdgCompatibility","ubo","abpToAdgCompatibility","abp","adgToUboCompatibility","validAdgCompatibility","REDIRECT_RULE_TYPES","VALID_ADG","marker","compatibility","ADG","UBO","ABP","parseModifiers","getRedirectName","ruleModifiers","redirectNamePart","isAdgRedirectRule","MARKER_IN_BASE_PART_MASK","isRedirectRuleByType","type","redirectName","isValidAdgRedirectRule","isAdgRedirectCompatibleWithUbo","isUboRedirectCompatibleWithAdg","isAbpRedirectCompatibleWithAdg","hasValidContentType","sourceType","validator","ADGUARD_SCRIPTLET_MASK_REG","ADGUARD_SCRIPTLET_TEMPLATE","ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE","UBO_SCRIPTLET_TEMPLATE","UBO_SCRIPTLET_EXCEPTION_TEMPLATE","UBO_ALIAS_NAME_MARKER","UBO_XHR_TYPE","ADG_XHR_TYPE","getSentences","reg","replacePlaceholders","convertUboScriptletToAdg","domains","mask","template","arg","outputArg","adgRule","convertAbpSnippetToAdg","SEMICOLON_DIVIDER","convertScriptletToAdg","convertAdgScriptletToUbo","res","parsedName","parsedParams","adgScriptletObject","scriptletList","aliases","uboAlias","alias","includes","uboName","uboRule","isValidScriptletRule","input","rulesArray","isValid","parsedRule","convertUboRedirectToAdg","firstPartOfRule","uboModifiers","adgModifiers","adgName","convertAbpRedirectToAdg","abpModifiers","abpName","convertRedirectToAdg","convertAdgRedirectToUbo","GoogleAnalytics","Tracker","proto","googleAnalyticsName","GoogleAnalyticsObject","ga","len","arguments","lastArg","hitCallback","ex","getByName","loaded","dataLayer","hide","end","GoogleAnalyticsGa","Gaq","Na","O","Sa","Ta","Va","_createAsyncTracker","_getAsyncTracker","_getPlugin","Array","isArray","assign","gaq","asyncTrackers","_gaq","shift","qf","Gat","api","tracker","funcName","_getLinkerUrl","_anonymizeIP","_createTracker","_forceSSL","_getTracker","_getTrackerByName","_getTrackers","aa","ab","hb","la","oa","pa","u","gat","_gat","GoogleSyndicationAdsByGoogle","adsbygoogle","adElems","css","statusAttrName","ASWIFT_IFRAME_MARKER","GOOGLE_ADS_IFRAME_MARKER","executed","adElemChildNodes","childNodes","childNodesQuantity","areIframesDefined","tagName","toLowerCase","id","setAttribute","aswiftIframe","createElement","appendChild","googleadsIframe","GoogleTagManagerGtm","google_optimize","eventCallback","googleOptimizeWrapper","GoogleTagServicesGpt","companionAdsService","enableSyncLoading","setRefreshUnfilledSlots","contentService","setContent","PassbackSlot","display","setClickUrl","setTagForChildDirectedTreatment","setTargeting","updateTargetingFromMap","SizeMappingBuilder","addSize","build","Slot","addService","clearCategoryExclusions","clearTargeting","defineSizeMapping","getAdUnitPath","getAttributeKeys","getCategoryExclusions","getDomId","getSlotElementId","getSlotId","getTargeting","getTargetingKeys","setCategoryExclusion","setCollapseEmptyDiv","pubAdsService","clear","clearTagForChildDirectedTreatment","collapseEmptyDivs","defineOutOfPagePassback","definePassback","disableInitialLoad","enableAsyncRendering","enableSingleRequest","enableSyncRendering","enableVideoAds","getSlots","refresh","setCentering","setCookieOptions","setForceSafeFrame","setLocation","setPublisherProvidedId","setRequestNonPersonalizedAds","setSafeFrameConfig","setVideoContent","updateCorrelator","googletag","cmd","apiReady","companionAds","defineOutOfPageSlot","defineSlot","destroySlots","disablePublisherConsole","enableServices","getVersion","pubads","pubadsReady","setAdIframeTitle","sizeMapping","ScoreCardResearchBeacon","COMSCORE","purge","_comscore","beacon","metrikaYandexTag","asyncCallbackFromOptions","options","ctx","addFileExtension","extLink","file","getClientID","hitFunc","notBounce","reachGoal","setUserID","userParams","ym","metrikaYandexWatch","cbName","Metrika","url","Ya","func","AmazonApstag","apstagWrapper","fetchBids","setDisplayBids","targetingKeys","apstag","getRedirectByName","redirectsList","getRedirectCode","redirect","engine","redirectsCjs","getCode","getScriptletCode","scriptletsObject","invoke","convertUboToAdg","convertAbpToAdg","convertAdgToUbo"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"scriptlets.js","sources":["../src/helpers/random-id.js","../src/helpers/set-property-access.js","../src/helpers/get-property-in-chain.js","../src/helpers/string-utils.js","../src/helpers/create-on-error-handler.js","../src/helpers/noop.js","../src/helpers/hit.js","../src/helpers/observer.js","../src/helpers/match-stack.js","../src/helpers/index.js","../src/helpers/injector.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../src/helpers/parse-rule.js","../src/scriptlets/abort-on-property-read.js","../src/scriptlets/abort-on-property-write.js","../src/scriptlets/prevent-setTimeout.js","../src/scriptlets/prevent-setInterval.js","../src/scriptlets/prevent-window-open.js","../src/scriptlets/abort-current-inline-script.js","../src/scriptlets/set-constant.js","../src/scriptlets/remove-cookie.js","../src/scriptlets/prevent-addEventListener.js","../src/scriptlets/prevent-bab.js","../src/scriptlets/nowebrtc.js","../src/scriptlets/log-addEventListener.js","../src/scriptlets/log-eval.js","../src/scriptlets/log.js","../src/scriptlets/noeval.js","../src/scriptlets/prevent-eval-if.js","../src/scriptlets/prevent-fab-3.2.0.js","../src/scriptlets/set-popads-dummy.js","../src/scriptlets/prevent-popads-net.js","../src/scriptlets/prevent-adfly.js","../src/scriptlets/debug-on-property-read.js","../src/scriptlets/debug-on-property-write.js","../src/scriptlets/debug-current-inline-script.js","../src/scriptlets/remove-attr.js","../src/scriptlets/remove-class.js","../src/scriptlets/disable-newtab-links.js","../src/scriptlets/adjust-setInterval.js","../src/scriptlets/adjust-setTimeout.js","../src/scriptlets/dir-string.js","../src/scriptlets/json-prune.js","../src/scriptlets/prevent-requestAnimationFrame.js","../src/scriptlets/set-cookie.js","../src/scriptlets/scriptletsList.js","../src/helpers/validator.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/toArray.js","../src/helpers/converter.js","../src/redirects/google-analytics.js","../src/redirects/google-analytics-ga.js","../src/redirects/googlesyndication-adsbygoogle.js","../src/redirects/googletagmanager-gtm.js","../src/redirects/googletagservices-gpt.js","../src/redirects/scorecardresearch-beacon.js","../src/redirects/metrika-yandex-tag.js","../src/redirects/metrika-yandex-watch.js","../src/redirects/amazon-apstag.js","../src/redirects/index.js","../src/scriptlets/index.js","../src/scriptlets/scriptletsWrapper.js"],"sourcesContent":["/**\n * Generate random six symbols id\n */\nexport function randomId() {\n return Math.random().toString(36).substr(2, 9);\n}\n","/**\n * Set getter and setter to property if it's configurable\n * @param {Object} object target object with property\n * @param {string} property property name\n * @param {Object} descriptor contains getter and setter functions\n * @returns {boolean} is operation successful\n */\nexport function setPropertyAccess(object, property, descriptor) {\n const currentDescriptor = Object.getOwnPropertyDescriptor(object, property);\n if (currentDescriptor && !currentDescriptor.configurable) {\n return false;\n }\n Object.defineProperty(object, property, descriptor);\n return true;\n}\n","/**\n * @typedef Chain\n * @property {Object} base\n * @property {string} prop\n * @property {string} [chain]\n */\n\n/**\n * Check is property exist in base object recursively\n *\n * If property doesn't exist in base object,\n * defines this property (for addProp = true)\n * and returns base, property name and remaining part of property chain\n *\n * @param {Object} base\n * @param {string} chain\n * @param {boolean} [addProp=true]\n * defines is nonexistent base property should be assigned as 'undefined'\n * @returns {Chain}\n */\nexport function getPropertyInChain(base, chain, addProp = true) {\n const pos = chain.indexOf('.');\n if (pos === -1) {\n return { base, prop: chain };\n }\n const prop = chain.slice(0, pos);\n const own = base[prop];\n chain = chain.slice(pos + 1);\n if (own !== undefined) {\n return getPropertyInChain(own, chain, addProp);\n }\n\n if (!addProp) {\n return false;\n }\n\n Object.defineProperty(base, prop, { configurable: true });\n return { base: own, prop, chain };\n}\n","/**\n * Escapes special chars in string\n * @param {string} str\n * @returns {string}\n */\nexport const escapeRegExp = (str) => str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n/**\n * Converts search string to the regexp\n * TODO think about nested dependencies, but be careful with dependency loops\n * @param {string} str search string\n * @returns {RegExp}\n */\nexport const toRegExp = (str) => {\n if (str[0] === '/' && str[str.length - 1] === '/') {\n return new RegExp(str.slice(1, -1));\n }\n const escaped = str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n return new RegExp(escaped);\n};\n\n/**\n * Get string before regexp first match\n * @param {string} str\n * @param {RegExp} rx\n */\nexport const getBeforeRegExp = (str, rx) => {\n const index = str.search(rx);\n return str.substring(0, index);\n};\n\nexport const startsWith = (str, prefix) => {\n return str && str.indexOf(prefix) === 0;\n};\n\nexport const endsWith = (str, prefix) => {\n return str && str.indexOf(prefix) === str.length - 1;\n};\n\nexport const substringAfter = (str, separator) => {\n if (!str) {\n return str;\n }\n const index = str.indexOf(separator);\n return index < 0 ? '' : str.substring(index + separator.length);\n};\n\nexport const substringBefore = (str, separator) => {\n if (!str || !separator) {\n return str;\n }\n const index = str.indexOf(separator);\n return index < 0 ? str : str.substring(0, index);\n};\n\n/**\n * Wrap str in single qoutes and replaces single quotes to doudle one\n * @param {string} str\n */\nexport const wrapInSingleQuotes = (str) => {\n if ((str[0] === '\\'' && str[str.length - 1] === '\\'')\n || (str[0] === '\"' && str[str.length - 1] === '\"')) {\n str = str.substring(1, str.length - 1);\n }\n // eslint-disable-next-line no-useless-escape\n str = str.replace(/\\'/g, '\"');\n\n return `'${str}'`;\n};\n\n/**\n * Returns substring enclosed in the widest braces\n * @param {string} str\n */\nexport const getStringInBraces = (str) => {\n const firstIndex = str.indexOf('(');\n const lastIndex = str.lastIndexOf(')');\n return str.substring(firstIndex + 1, lastIndex);\n};\n","/**\n * Generates function which silents global errors on page generated by scriptlet\n * If error doesn't belong to our error we transfer it to the native onError handler\n * @param {string} rid - unique identifier of scriptlet\n * @return {onError}\n */\nexport function createOnErrorHandler(rid) {\n // eslint-disable-next-line consistent-return\n const nativeOnError = window.onerror;\n return function onError(error, ...args) {\n if (typeof error === 'string' && error.indexOf(rid) !== -1) {\n return true;\n }\n if (nativeOnError instanceof Function) {\n return nativeOnError.apply(this, [error, ...args]);\n }\n return false;\n };\n}\n","/**\n * Noop function\n */\nexport const noopFunc = () => { };\n\n/**\n * Function returns null\n */\nexport const noopNull = () => null;\n\n/**\n * Function returns true\n */\nexport const trueFunc = () => true;\n\n/**\n * Function returns false\n */\nexport const falseFunc = () => false;\n\n/**\n * Function returns this\n */\nexport function noopThis() {\n return this;\n}\n\n/**\n * Function returns empty array\n */\nexport const noopArray = () => [];\n\n/**\n * Function returns empty string\n */\nexport const noopStr = () => '';\n","/* eslint-disable no-console, no-underscore-dangle */\n/**\n * Hit used only for debug purposes now\n * @param {Source} source\n * @param {string} [message] - optional message;\n * use LOG_MARKER = 'log: ' at the start of a message\n * for logging scriptlets\n */\nexport const hit = (source, message) => {\n if (source.verbose !== true) {\n return;\n }\n\n try {\n const log = console.log.bind(console);\n const trace = console.trace.bind(console);\n\n let prefix = source.ruleText || '';\n\n if (source.domainName) {\n const AG_SCRIPTLET_MARKER = '#%#//';\n const UBO_SCRIPTLET_MARKER = '##+js';\n let ruleStartIndex;\n if (source.ruleText.indexOf(AG_SCRIPTLET_MARKER) > -1) {\n ruleStartIndex = source.ruleText.indexOf(AG_SCRIPTLET_MARKER);\n } else if (source.ruleText.indexOf(UBO_SCRIPTLET_MARKER) > -1) {\n ruleStartIndex = source.ruleText.indexOf(UBO_SCRIPTLET_MARKER);\n }\n // delete all domains from ruleText and leave just rule part\n const rulePart = source.ruleText.slice(ruleStartIndex);\n // prepare applied scriptlet rule for specific domain\n prefix = `${source.domainName}${rulePart}`;\n }\n\n // Used to check if scriptlet uses 'hit' function for logging\n const LOG_MARKER = 'log: ';\n\n if (message) {\n if (message.indexOf(LOG_MARKER) === -1) {\n log(`${prefix} message:\\n${message}`);\n } else {\n log(message.slice(LOG_MARKER.length));\n }\n }\n\n log(`${prefix} trace start`);\n if (trace) {\n trace();\n }\n log(`${prefix} trace end`);\n } catch (e) {\n // try catch for Edge 15\n // In according to this issue https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/14495220/\n // console.log throws an error\n }\n\n // This is necessary for unit-tests only!\n if (typeof window.__debug === 'function') {\n window.__debug(source);\n }\n};\n","/**\n * DOM tree changes observer. Used for 'remove-attr' and 'remove-class' scriptlets\n * @param {Function} callback\n * @param {Boolean} observeAttrs - optional parameter - should observer check attibutes changes\n */\nexport const observeDOMChanges = (callback, observeAttrs = false, attrsToObserv = []) => {\n /**\n * Returns a wrapper, passing the call to 'method' at maximum once per 'delay' milliseconds.\n * Those calls that fall into the \"cooldown\" period, are ignored\n * @param {Function} method\n * @param {Number} delay - milliseconds\n */\n const throttle = (method, delay) => {\n let wait = false;\n let savedArgs;\n const wrapper = (...args) => {\n if (wait) {\n savedArgs = args;\n return;\n }\n method(...args);\n wait = true;\n setTimeout(() => {\n wait = false;\n if (savedArgs) {\n wrapper(savedArgs);\n savedArgs = null;\n }\n }, delay);\n };\n return wrapper;\n };\n\n /**\n * 'delay' in milliseconds for 'throttle' method\n */\n const THROTTLE_DELAY_MS = 20;\n /**\n * Used for remove-class\n */\n // eslint-disable-next-line no-use-before-define\n const observer = new MutationObserver(throttle(callbackWrapper, THROTTLE_DELAY_MS));\n\n const connect = () => {\n if (attrsToObserv.length > 0) {\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n attributes: observeAttrs,\n attributeFilter: attrsToObserv,\n });\n } else {\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n attributes: observeAttrs,\n });\n }\n };\n const disconnect = () => {\n observer.disconnect();\n };\n function callbackWrapper() {\n disconnect();\n callback();\n connect();\n }\n\n connect();\n};\n","/**\n * Checks if the stackTrace contains stackRegexp\n * // https://github.com/AdguardTeam/Scriptlets/issues/82\n * @param {string} stackRegexp - stack regexp\n * @param {string} stackTrace - script error stack trace\n * @returns {boolean}\n */\n\nexport const matchStackTrace = (stackRegexp, stackTrace) => {\n const refinedStackTrace = stackTrace\n .split('\\n')\n .slice(2) // get rid of our own functions in the stack trace\n .map((line) => line.trim()) // trim the lines\n .join('\\n');\n\n return stackRegexp.test(refinedStackTrace);\n};\n","/**\n * This file must export all used dependencies\n */\nexport * from './random-id';\nexport * from './set-property-access';\nexport * from './get-property-in-chain';\nexport * from './string-utils';\nexport * from './create-on-error-handler';\nexport * from './noop';\nexport * from './hit';\nexport * from './observer';\nexport * from './match-stack';\n","import * as dependencies from '.';\n\n/**\n * Concat dependencies to scriptlet code\n * @param {string} scriptlet string view of scriptlet\n */\nexport function attachDependencies(scriptlet) {\n const { injections = [] } = scriptlet;\n return injections.reduce((accum, dep) => `${accum}\\n${dependencies[dep.name]}`, scriptlet.toString());\n}\n\n/**\n * Add scriptlet call to existing code\n * @param {Function} scriptlet\n * @param {string} code\n */\nexport function addCall(scriptlet, code) {\n return `${code};\n const updatedArgs = args ? [].concat(source).concat(args) : [source];\n ${scriptlet.name}.apply(this, updatedArgs);\n `;\n}\n\n/**\n * Wrap function into IIFE (Immediately invoked function expression)\n *\n * @param {Source} source - object with scriptlet properties\n * @param {string} code - scriptlet source code with dependencies\n *\n * @returns {string} full scriptlet code\n *\n * @example\n * const source = {\n * args: [\"aaa\", \"bbb\"],\n * name: 'noeval',\n * };\n * const code = \"function noeval(source, args) { alert(source); } noeval.apply(this, args);\"\n * const result = wrapInIIFE(source, code);\n *\n * // result\n * `(function(source, args) {\n * function noeval(source) { alert(source); }\n * noeval.apply(this, args);\n * )({\"args\": [\"aaa\", \"bbb\"], \"name\":\"noeval\"}, [\"aaa\", \"bbb\"])`\n */\nexport function passSourceAndProps(source, code) {\n if (source.hit) {\n source.hit = source.hit.toString();\n }\n const sourceString = JSON.stringify(source);\n const argsString = source.args ? `[${source.args.map(JSON.stringify)}]` : undefined;\n const params = argsString ? `${sourceString}, ${argsString}` : sourceString;\n return `(function(source, args){\\n${code}\\n})(${params});`;\n}\n\n/**\n * Wrap code in no name function\n * @param {string} code which must be wrapped\n */\nexport function wrapInNonameFunc(code) {\n return `function(source, args){\\n${code}\\n}`;\n}\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","/**\n * Iterate over iterable argument and evaluate current state with transitions\n * @param {string} init first transition name\n * @param {Array|Collection|string} iterable\n * @param {Object} transitions transtion functions\n * @param {any} args arguments which should be passed to transition functions\n */\nfunction iterateWithTransitions(iterable, transitions, init, args) {\n let state = init || Object.keys(transitions)[0];\n for (let i = 0; i < iterable.length; i += 1) {\n state = transitions[state](iterable, i, args);\n }\n return state;\n}\n\n/**\n * AdGuard scriptlet rule mask\n */\nexport const ADG_SCRIPTLET_MASK = '#//scriptlet';\n\n/**\n * Helper to accumulate an array of strings char by char\n */\nconst wordSaver = () => {\n let str = '';\n const strs = [];\n const saveSymb = (s) => {\n str += s;\n return str;\n };\n const saveStr = () => {\n strs.push(str);\n str = '';\n };\n const getAll = () => [...strs];\n\n return { saveSymb, saveStr, getAll };\n};\n\nconst substringAfter = (str, separator) => {\n if (!str) {\n return str;\n }\n const index = str.indexOf(separator);\n return index < 0 ? '' : str.substring(index + separator.length);\n};\n\n/**\n * Parse and validate scriptlet rule\n * @param {*} ruleText\n * @returns {{name: string, args: Array}}\n */\nexport const parseRule = (ruleText) => {\n ruleText = substringAfter(ruleText, ADG_SCRIPTLET_MASK);\n /**\n * Transition names\n */\n const TRANSITION = {\n OPENED: 'opened',\n PARAM: 'param',\n CLOSED: 'closed',\n };\n\n /**\n * Transition function: the current index position in start, end or between params\n * @param {string} rule\n * @param {number} index\n * @param {Object} Object\n * @property {Object} Object.sep contains prop symb with current separator char\n */\n const opened = (rule, index, { sep }) => {\n const char = rule[index];\n let transition;\n switch (char) {\n case ' ':\n case '(':\n case ',': {\n transition = TRANSITION.OPENED;\n break;\n }\n case '\\'':\n case '\"': {\n sep.symb = char;\n transition = TRANSITION.PARAM;\n break;\n }\n case ')': {\n transition = index === rule.length - 1\n ? TRANSITION.CLOSED\n : TRANSITION.OPENED;\n break;\n }\n default: {\n throw new Error('The rule is not a scriptlet');\n }\n }\n\n return transition;\n };\n /**\n * Transition function: the current index position inside param\n * @param {string} rule\n * @param {number} index\n * @param {Object} Object\n * @property {Object} Object.sep contains prop `symb` with current separator char\n * @property {Object} Object.saver helper which allow to save strings by car by char\n */\n const param = (rule, index, { saver, sep }) => {\n const char = rule[index];\n switch (char) {\n case '\\'':\n case '\"': {\n const preIndex = index - 1;\n const before = rule[preIndex];\n if (char === sep.symb && before !== '\\\\') {\n sep.symb = null;\n saver.saveStr();\n return TRANSITION.OPENED;\n }\n }\n // eslint-disable-next-line no-fallthrough\n default: {\n saver.saveSymb(char);\n return TRANSITION.PARAM;\n }\n }\n };\n const transitions = {\n [TRANSITION.OPENED]: opened,\n [TRANSITION.PARAM]: param,\n [TRANSITION.CLOSED]: () => { },\n };\n const sep = { symb: null };\n const saver = wordSaver();\n const state = iterateWithTransitions(ruleText, transitions, TRANSITION.OPENED, { sep, saver });\n\n if (state !== 'closed') {\n throw new Error(`Invalid scriptlet rule ${ruleText}`);\n }\n\n const args = saver.getAll();\n return {\n name: args[0],\n args: args.slice(1),\n };\n};\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet abort-on-property-read\n *\n * @description\n * Aborts a script when it attempts to **read** the specified property.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#abort-on-property-readjs-\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/6b2a309054cc23432102b85d13f12559639ef495/lib/content/snippets.js#L864\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('abort-on-property-read', property[, stack])\n * ```\n *\n * - `property` - required, path to a property (joined with `.` if needed). The property must be attached to `window`\n * - `stack` - optional, string or regular expression that must match the current function call stack trace\n *\n * **Examples**\n * ```\n * ! Aborts script when it tries to access `window.alert`\n * example.org#%#//scriptlet('abort-on-property-read', 'alert')\n *\n * ! Aborts script when it tries to access `navigator.language`\n * example.org#%#//scriptlet('abort-on-property-read', 'navigator.language')\n *\n * ! Aborts script when it tries to access `window.adblock` and it's error stack trace contains `test.js`\n * example.org#%#//scriptlet('abort-on-property-read', 'adblock', 'test.js')\n * ```\n */\n/* eslint-enable max-len */\nexport function abortOnPropertyRead(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n\n const rid = randomId();\n const abort = () => {\n hit(source);\n throw new ReferenceError(rid);\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, {\n get: abort,\n set: () => {\n },\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\nabortOnPropertyRead.names = [\n 'abort-on-property-read',\n 'abort-on-property-read.js',\n 'ubo-abort-on-property-read.js',\n 'aopr.js',\n 'ubo-aopr.js',\n 'abp-abort-on-property-read',\n];\nabortOnPropertyRead.injections = [\n randomId,\n toRegExp,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n matchStackTrace,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet abort-on-property-write\n *\n * @description\n * Aborts a script when it attempts to **write** the specified property.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#abort-on-property-writejs-\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/6b2a309054cc23432102b85d13f12559639ef495/lib/content/snippets.js#L896\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('abort-on-property-write', property[, stack])\n * ```\n *\n * - `property` - required, path to a property (joined with `.` if needed). The property must be attached to `window`\n * - `stack` - optional, string or regular expression that must match the current function call stack trace\n *\n * **Examples**\n * ```\n * ! Aborts script when it tries to set `window.adblock` value\n * example.org#%#//scriptlet('abort-on-property-write', 'adblock')\n *\n * ! Aborts script when it tries to set `window.adblock` value and it's error stack trace contains `checking.js`\n * example.org#%#//scriptlet('abort-on-property-write', 'adblock', 'checking.js')\n * ```\n */\n/* eslint-enable max-len */\nexport function abortOnPropertyWrite(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n\n const rid = randomId();\n const abort = () => {\n hit(source);\n throw new ReferenceError(rid);\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, { set: abort });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid).bind();\n}\n\nabortOnPropertyWrite.names = [\n 'abort-on-property-write',\n 'abort-on-property-write.js',\n 'ubo-abort-on-property-write.js',\n 'aopw.js',\n 'ubo-aopw.js',\n 'abp-abort-on-property-write',\n];\n\nabortOnPropertyWrite.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n];\n","import {\n hit, noopFunc, toRegExp, startsWith,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-setTimeout\n *\n * @description\n * Prevents a `setTimeout` call if:\n * 1) the text of the callback is matching the specified search string/regexp which does not start with `!`;\n * otherwise mismatched calls should be defused;\n * 2) the timeout is matching the specified delay; otherwise mismatched calls should be defused.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#no-settimeout-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout'[, search[, delay]])\n * ```\n *\n * Call with no arguments will log calls to setTimeout while debugging (`log-setTimeout` superseding),\n * so production filter lists' rules definitely require at least one of the parameters:\n * - `search` - optional, string or regular expression.\n * If starts with `!`, scriptlet will not match the stringified callback but all other will be defused.\n * If do not start with `!`, the stringified callback will be matched.\n * If not set, prevents all `setTimeout` calls due to specified `delay`.\n * - `delay` - optional, must be an integer.\n * If starts with `!`, scriptlet will not match the delay but all other will be defused.\n * If do not start with `!`, the delay passed to the `setTimeout` call will be matched.\n *\n * **Examples**\n * 1. Prevents `setTimeout` calls if the callback matches `/\\.test/` regardless of the delay.\n * ```bash\n * example.org#%#//scriptlet('prevent-setTimeout', '/\\.test/')\n * ```\n *\n * For instance, the following call will be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"value\";\n * }, 100);\n * ```\n *\n * 2. Prevents `setTimeout` calls if the callback does not contain `value`.\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout', '!value')\n * ```\n *\n * For instance, only the first of the following calls will be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"test -- prevented\";\n * }, 300);\n * setTimeout(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setTimeout(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n *\n * 3. Prevents `setTimeout` calls if the callback contains `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout', 'value', '!300')\n * ```\n *\n * For instance, only the first of the following calls will not be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"value 1 -- executed\";\n * }, 300);\n * setTimeout(function () {\n * window.test = \"value 2 -- prevented\";\n * }, 400);\n * setTimeout(function () {\n * window.test = \"value 3 -- prevented\";\n * }, 500);\n * ```\n *\n * 4. Prevents `setTimeout` calls if the callback does not contain `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout', '!value', '!300')\n * ```\n *\n * For instance, only the second of the following calls will be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"test -- executed\";\n * }, 300);\n * setTimeout(function () {\n * window.test = \"test -- prevented\";\n * }, 400);\n * setTimeout(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setTimeout(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n */\n/* eslint-enable max-len */\nexport function preventSetTimeout(source, match, delay) {\n const nativeTimeout = window.setTimeout;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const log = console.log.bind(console); // eslint-disable-line no-console\n\n // logs setTimeouts to console if no arguments have been specified\n const shouldLog = ((typeof match === 'undefined') && (typeof delay === 'undefined'));\n\n const INVERT_MARKER = '!';\n\n const isNotMatch = startsWith(match, INVERT_MARKER);\n if (isNotMatch) {\n match = match.slice(1);\n }\n const isNotDelay = startsWith(delay, INVERT_MARKER);\n if (isNotDelay) {\n delay = delay.slice(1);\n }\n\n delay = parseInt(delay, 10);\n delay = nativeIsNaN(delay) ? null : delay;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n const timeoutWrapper = (callback, timeout, ...args) => {\n let shouldPrevent = false;\n if (shouldLog) {\n hit(source);\n log(`setTimeout(\"${callback.toString()}\", ${timeout})`);\n } else if (!delay) {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch;\n } else if (match === '/.?/') {\n shouldPrevent = (timeout === delay) !== isNotDelay;\n } else {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch\n && (timeout === delay) !== isNotDelay;\n }\n\n if (shouldPrevent) {\n hit(source);\n return nativeTimeout(noopFunc, timeout);\n }\n\n return nativeTimeout.apply(window, [callback, timeout, ...args]);\n };\n window.setTimeout = timeoutWrapper;\n}\n\npreventSetTimeout.names = [\n 'prevent-setTimeout',\n 'no-setTimeout-if.js', // new implementation of setTimeout-defuser.js\n 'ubo-no-setTimeout-if.js',\n 'setTimeout-defuser.js', // old name should be supported as well\n 'ubo-setTimeout-defuser.js',\n 'nostif.js', // new short name of no-setTimeout-if\n 'ubo-nostif.js',\n 'std.js', // old short scriptlet name\n 'ubo-std.js',\n];\n\npreventSetTimeout.injections = [toRegExp, startsWith, hit, noopFunc];\n","import {\n hit, noopFunc, toRegExp, startsWith,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-setInterval\n *\n * @description\n * Prevents a `setInterval` call if:\n * 1) the text of the callback is matching the specified `search` string/regexp which does not start with `!`;\n * otherwise mismatched calls should be defused;\n * 2) the interval is matching the specified `delay`; otherwise mismatched calls should be defused.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#no-setinterval-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-setInterval'[, search[, delay]])\n * ```\n *\n * Call with no arguments will log calls to setInterval while debugging (`log-setInterval` superseding),\n * so production filter lists' rules definitely require at least one of the parameters:\n * - `search` - optional, string or regular expression.\n * If starts with `!`, scriptlet will not match the stringified callback but all other will be defused.\n * If do not start with `!`, the stringified callback will be matched.\n * If not set, prevents all `setInterval` calls due to specified `delay`.\n * - `delay` - optional, must be an integer.\n * If starts with `!`, scriptlet will not match the delay but all other will be defused.\n * If do not start with `!`, the delay passed to the `setInterval` call will be matched.\n *\n * **Examples**\n * 1. Prevents `setInterval` calls if the callback matches `/\\.test/` regardless of the delay.\n * ```bash\n * example.org#%#//scriptlet('prevent-setInterval', '/\\.test/')\n * ```\n *\n * For instance, the following call will be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"value\";\n * }, 100);\n * ```\n *\n * 2. Prevents `setInterval` calls if the callback does not contain `value`.\n * ```\n * example.org#%#//scriptlet('prevent-setInterval', '!value')\n * ```\n *\n * For instance, only the first of the following calls will be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"test -- prevented\";\n * }, 300);\n * setInterval(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setInterval(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n *\n * 3. Prevents `setInterval` calls if the callback contains `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setInterval', 'value', '!300')\n * ```\n *\n * For instance, only the first of the following calls will not be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"value 1 -- executed\";\n * }, 300);\n * setInterval(function () {\n * window.test = \"value 2 -- prevented\";\n * }, 400);\n * setInterval(function () {\n * window.test = \"value 3 -- prevented\";\n * }, 500);\n * ```\n *\n * 4. Prevents `setInterval` calls if the callback does not contain `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setInterval', '!value', '!300')\n * ```\n *\n * For instance, only the second of the following calls will be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"test -- executed\";\n * }, 300);\n * setInterval(function () {\n * window.test = \"test -- prevented\";\n * }, 400);\n * setInterval(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setInterval(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n */\n/* eslint-enable max-len */\nexport function preventSetInterval(source, match, delay) {\n const nativeInterval = window.setInterval;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const log = console.log.bind(console); // eslint-disable-line no-console\n\n // logs setIntervals to console if no arguments have been specified\n const shouldLog = ((typeof match === 'undefined') && (typeof delay === 'undefined'));\n\n const INVERT_MARKER = '!';\n\n const isNotMatch = startsWith(match, INVERT_MARKER);\n if (isNotMatch) {\n match = match.slice(1);\n }\n const isNotDelay = startsWith(delay, INVERT_MARKER);\n if (isNotDelay) {\n delay = delay.slice(1);\n }\n\n delay = parseInt(delay, 10);\n delay = nativeIsNaN(delay) ? null : delay;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n const intervalWrapper = (callback, interval, ...args) => {\n let shouldPrevent = false;\n if (shouldLog) {\n hit(source);\n log(`setInterval(\"${callback.toString()}\", ${interval})`);\n } else if (!delay) {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch;\n } else if (match === '/.?/') {\n shouldPrevent = (interval === delay) !== isNotDelay;\n } else {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch\n && (interval === delay) !== isNotDelay;\n }\n\n if (shouldPrevent) {\n hit(source);\n return nativeInterval(noopFunc, interval);\n }\n\n return nativeInterval.apply(window, [callback, interval, ...args]);\n };\n window.setInterval = intervalWrapper;\n}\n\npreventSetInterval.names = [\n 'prevent-setInterval',\n 'no-setInterval-if.js', // new implementation of setInterval-defuser.js\n 'ubo-no-setInterval-if.js',\n 'setInterval-defuser.js', // old name should be supported as well\n 'ubo-setInterval-defuser.js',\n 'nosiif.js', // new short name of no-setInterval-if\n 'ubo-nosiif.js',\n 'sid.js', // old short scriptlet name\n 'ubo-sid.js',\n];\n\npreventSetInterval.injections = [toRegExp, startsWith, hit, noopFunc];\n","import {\n toRegExp,\n substringBefore,\n substringAfter,\n startsWith,\n endsWith,\n hit,\n noopFunc,\n trueFunc,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-window-open\n *\n * @description\n * Prevents `window.open` calls when URL either matches or not matches the specified string/regexp. Using it without parameters prevents all `window.open` calls.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#windowopen-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-window-open'[, match[, search[, replacement]]])\n * ```\n *\n * - `match` - optional, defaults to \"matching\", any positive number or nothing for \"matching\", 0 or empty string for \"not matching\"\n * - `search` - optional, string or regexp for matching the URL passed to `window.open` call; defaults to search all `window.open` call\n * - `replacement` - optional, string to return prop value or property instead of window.open; defaults to return noopFunc\n *\n * **Example**\n * 1. Prevent all `window.open` calls:\n * ```\n * example.org#%#//scriptlet('prevent-window-open')\n * ```\n *\n * 2. Prevent `window.open` for all URLs containing `example`:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '1', 'example')\n * ```\n *\n * 3. Prevent `window.open` for all URLs matching RegExp `/example\\./`:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '1', '/example\\./')\n * ```\n *\n * 4. Prevent `window.open` for all URLs **NOT** containing `example`:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '0', 'example')\n * ```\n * 5. Prevent all `window.open` calls and return 'trueFunc' instead of it if website checks it:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', , , 'trueFunc')\n * ```\n * 6. Prevent all `window.open` and returns callback\n * which returns object with property 'propName'=noopFunc\n * as a property of window.open if website checks it:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '1', , '{propName=noopFunc}')\n * ```\n */\n/* eslint-enable max-len */\nexport function preventWindowOpen(source, match = 1, search, replacement) {\n // Default value of 'match' is needed to prevent all `window.open` calls\n // if the scriptlet is used without parameters\n const nativeOpen = window.open;\n\n // unary plus converts 'match' to a number\n // e.g.: +'1' -> 1; +false -> 0\n match = +match > 0;\n\n search = search\n ? toRegExp(search)\n : toRegExp('/.?/');\n\n // eslint-disable-next-line consistent-return\n const openWrapper = (str, ...args) => {\n if (match !== search.test(str)) {\n return nativeOpen.apply(window, [str, ...args]);\n }\n\n hit(source);\n\n let result;\n\n // defaults to return noopFunc instead of window.open\n if (!replacement) {\n result = noopFunc;\n } else if (replacement === 'trueFunc') {\n result = trueFunc;\n } else if (replacement.indexOf('=') > -1) {\n // We should return noopFunc instead of window.open\n // but with some property if website checks it (examples 5, 6)\n // https://github.com/AdguardTeam/Scriptlets/issues/71\n const isProp = startsWith(replacement, '{') && endsWith(replacement, '}');\n if (isProp) {\n const propertyPart = replacement.slice(1, -1);\n const propertyName = substringBefore(propertyPart, '=');\n const propertyValue = substringAfter(propertyPart, '=');\n if (propertyValue === 'noopFunc') {\n result = () => {\n const resObj = { };\n resObj[propertyName] = noopFunc;\n return resObj;\n };\n }\n }\n }\n\n return result;\n };\n\n window.open = openWrapper;\n}\n\npreventWindowOpen.names = [\n 'prevent-window-open',\n 'window.open-defuser.js',\n 'ubo-window.open-defuser.js',\n];\n\npreventWindowOpen.injections = [\n toRegExp,\n startsWith,\n endsWith,\n substringBefore,\n substringAfter,\n hit,\n noopFunc,\n trueFunc,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet abort-current-inline-script\n *\n * @description\n * Aborts an inline script when it attempts to **read** the specified property\n * AND when the contents of the `\n * ```\n *\n * 3. Aborts inline scripts which are trying to access `window.alert` and match this regexp: `/Hello.+world/`.\n * ```\n * example.org#%#//scriptlet('abort-current-inline-script', 'alert', '/Hello.+world/')\n * ```\n *\n * For instance, the following scripts will be aborted:\n * ```html\n * \n * ```\n * ```html\n * \n * ```\n *\n * This script will not be aborted:\n * ```html\n * \n * ```\n */\n/* eslint-enable max-len */\nexport function abortCurrentInlineScript(source, property, search) {\n const searchRegexp = search ? toRegExp(search) : toRegExp('/.?/');\n const rid = randomId();\n\n const getCurrentScript = () => {\n if (!document.currentScript) { // eslint-disable-line compat/compat\n const scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n }\n return document.currentScript; // eslint-disable-line compat/compat\n };\n\n const ourScript = getCurrentScript();\n\n const abort = () => {\n const scriptEl = getCurrentScript();\n if (!scriptEl) {\n return;\n }\n let content = scriptEl.textContent;\n\n // We are using Node.prototype.textContent property descriptor\n // to get the real script content\n // even when document.currentScript.textContent is replaced.\n // https://github.com/AdguardTeam/Scriptlets/issues/57#issuecomment-593638991\n try {\n const textContentGetter = Object.getOwnPropertyDescriptor(Node.prototype, 'textContent').get;\n content = textContentGetter.call(scriptEl);\n } catch (e) { } // eslint-disable-line no-empty\n\n if (scriptEl instanceof HTMLScriptElement\n && content.length > 0\n && scriptEl !== ourScript\n && searchRegexp.test(content)) {\n hit(source);\n throw new ReferenceError(rid);\n }\n };\n\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n\n // The scriptlet might be executed before the chain property has been created\n // (for instance, document.body before the HTML body was loaded).\n // In this case we're checking whether the base element exists or not\n // and if not, we simply exit without overriding anything.\n // e.g. https://github.com/AdguardTeam/Scriptlets/issues/57#issuecomment-575841092\n if (base instanceof Object === false && base === null) {\n const props = property.split('.');\n const propIndex = props.indexOf(prop);\n const baseName = props[propIndex - 1];\n console.log(`The scriptlet had been executed before the ${baseName} was loaded.`); // eslint-disable-line no-console\n return;\n }\n\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n let currentValue = base[prop];\n setPropertyAccess(base, prop, {\n set: (value) => {\n abort();\n currentValue = value;\n },\n get: () => {\n abort();\n return currentValue;\n },\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\nabortCurrentInlineScript.names = [\n 'abort-current-inline-script',\n 'abort-current-inline-script.js',\n 'ubo-abort-current-inline-script.js',\n 'acis.js',\n 'ubo-acis.js',\n 'abp-abort-current-inline-script',\n];\n\nabortCurrentInlineScript.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n];\n","import {\n hit,\n noopFunc,\n trueFunc,\n falseFunc,\n getPropertyInChain,\n setPropertyAccess,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet set-constant\n *\n * @description\n * Creates a constant property and assigns it one of the values from the predefined list.\n *\n * > Actually, it's not a constant. Please note, that it can be rewritten with a value of a different type.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#set-constantjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('set-constant', property, value)\n * ```\n *\n * - `property` - required, path to a property (joined with `.` if needed). The property must be attached to `window`.\n * - `value` - required. Possible values:\n * - positive decimal integer `<= 32767`\n * - one of the predefined constants:\n * - `undefined`\n * - `false`\n * - `true`\n * - `null`\n * - `noopFunc` - function with empty body\n * - `trueFunc` - function returning true\n * - `falseFunc` - function returning false\n * - `''` - empty string\n * - `-1` - number value `-1`\n *\n * **Examples**\n * ```\n * ! window.firstConst === false // this comparision will return true\n * example.org#%#//scriptlet('set-constant', 'firstConst', 'false')\n *\n * ! window.secondConst() === true // call to the secondConst will return true\n * example.org#%#//scriptlet('set-constant', 'secondConst', 'trueFunc')\n * ```\n */\n/* eslint-enable max-len */\nexport function setConstant(source, property, value) {\n if (!property) {\n return;\n }\n\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n\n let constantValue;\n if (value === 'undefined') {\n constantValue = undefined;\n } else if (value === 'false') {\n constantValue = false;\n } else if (value === 'true') {\n constantValue = true;\n } else if (value === 'null') {\n constantValue = null;\n } else if (value === 'noopFunc') {\n constantValue = noopFunc;\n } else if (value === 'trueFunc') {\n constantValue = trueFunc;\n } else if (value === 'falseFunc') {\n constantValue = falseFunc;\n } else if (/^\\d+$/.test(value)) {\n constantValue = parseFloat(value);\n if (nativeIsNaN(constantValue)) {\n return;\n }\n if (Math.abs(constantValue) > 0x7FFF) {\n return;\n }\n } else if (value === '-1') {\n constantValue = -1;\n } else if (value === '') {\n constantValue = '';\n } else {\n return;\n }\n\n let canceled = false;\n const mustCancel = (value) => {\n if (canceled) {\n return canceled;\n }\n canceled = value !== undefined\n && constantValue !== undefined\n && typeof value !== typeof constantValue;\n return canceled;\n };\n\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n if (mustCancel(base[prop])) { return; }\n\n hit(source);\n setPropertyAccess(base, prop, {\n get: () => constantValue,\n set: (a) => {\n if (mustCancel(a)) {\n constantValue = a;\n }\n },\n });\n };\n\n setChainPropAccess(window, property);\n}\n\nsetConstant.names = [\n 'set-constant',\n 'set-constant.js',\n 'ubo-set-constant.js',\n 'set.js',\n 'ubo-set.js',\n];\nsetConstant.injections = [\n getPropertyInChain,\n setPropertyAccess,\n hit,\n noopFunc,\n trueFunc,\n falseFunc,\n];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet remove-cookie\n *\n * @description\n * Removes current page cookies by passed string matching with name. For current domain and subdomains. Runs on load and before unload.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#cookie-removerjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('remove-cookie'[, match])\n * ```\n *\n * - `match` - optional, string or regex matching the cookie name. If not specified all accessible cookies will be removed.\n *\n * **Examples**\n * 1. Removes all cookies:\n * ```\n * example.org#%#//scriptlet('remove-cookie')\n * ```\n *\n * 2. Removes cookies which name contains `example` string.\n * ```\n * example.org#%#//scriptlet('remove-cookie', 'example')\n * ```\n *\n * For instance this cookie will be removed\n * ```javascript\n * document.cookie = '__example=randomValue';\n * ```\n */\n/* eslint-enable max-len */\nexport function removeCookie(source, match) {\n const regex = match ? toRegExp(match) : toRegExp('/.?/');\n\n const removeCookieFromHost = (cookieName, hostName) => {\n const cookieSpec = `${cookieName}=`;\n const domain1 = `; domain=${hostName}`;\n const domain2 = `; domain=.${hostName}`;\n const path = '; path=/';\n const expiration = '; expires=Thu, 01 Jan 1970 00:00:00 GMT';\n document.cookie = cookieSpec + expiration;\n document.cookie = cookieSpec + domain1 + expiration;\n document.cookie = cookieSpec + domain2 + expiration;\n document.cookie = cookieSpec + path + expiration;\n document.cookie = cookieSpec + domain1 + path + expiration;\n document.cookie = cookieSpec + domain2 + path + expiration;\n hit(source);\n };\n\n const rmCookie = () => {\n document.cookie.split(';').forEach((cookieStr) => {\n const pos = cookieStr.indexOf('=');\n if (pos === -1) {\n return;\n }\n\n const cookieName = cookieStr.slice(0, pos).trim();\n if (!regex.test(cookieName)) {\n return;\n }\n\n const hostParts = document.location.hostname.split('.');\n for (let i = 0; i <= hostParts.length - 1; i += 1) {\n const hostName = hostParts.slice(i).join('.');\n if (hostName) {\n removeCookieFromHost(cookieName, hostName);\n }\n }\n });\n };\n rmCookie();\n window.addEventListener('beforeunload', rmCookie);\n}\n\nremoveCookie.names = [\n 'remove-cookie',\n 'cookie-remover.js',\n 'ubo-cookie-remover.js',\n];\n\nremoveCookie.injections = [toRegExp, hit];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-addEventListener\n *\n * @description\n * Prevents adding event listeners for the specified events and callbacks.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#addeventlistener-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-addEventListener'[, eventSearch[, functionSearch]])\n * ```\n *\n * - `eventSearch` - optional, string or regex matching the event name. If not specified, the scriptlets prevents all event listeners\n * - `functionSearch` - optional, string or regex matching the event listener function body. If not set, the scriptlet prevents all event listeners with event name matching `eventSearch`\n *\n * **Examples**\n * 1. Prevent all `click` listeners:\n * ```\n * example.org#%#//scriptlet('prevent-addEventListener', 'click')\n * ```\n\n2. Prevent 'click' listeners with the callback body containing `searchString`.\n * ```\n * example.org#%#//scriptlet('prevent-addEventListener', 'click', 'searchString')\n * ```\n *\n * For instance, this listener will not be called:\n * ```javascript\n * el.addEventListener('click', () => {\n * window.test = 'searchString';\n * });\n * ```\n */\n/* eslint-enable max-len */\nexport function preventAddEventListener(source, eventSearch, funcSearch) {\n const eventSearchRegexp = eventSearch ? toRegExp(eventSearch) : toRegExp('/.?/');\n const funcSearchRegexp = funcSearch ? toRegExp(funcSearch) : toRegExp('/.?/');\n\n const nativeAddEventListener = window.EventTarget.prototype.addEventListener;\n function addEventListenerWrapper(eventName, callback, ...args) {\n // The scriptlet might cause a website broke\n // if the website uses test addEventListener with callback = null\n // https://github.com/AdguardTeam/Scriptlets/issues/76\n let funcToCheck = callback;\n if (callback && typeof callback === 'function') {\n funcToCheck = callback.toString();\n }\n\n if (eventSearchRegexp.test(eventName.toString()) && funcSearchRegexp.test(funcToCheck)) {\n hit(source);\n return undefined;\n }\n return nativeAddEventListener.apply(this, [eventName, callback, ...args]);\n }\n\n window.EventTarget.prototype.addEventListener = addEventListenerWrapper;\n}\n\npreventAddEventListener.names = [\n 'prevent-addEventListener',\n 'addEventListener-defuser.js',\n 'ubo-addEventListener-defuser.js',\n 'aeld.js',\n 'ubo-aeld.js',\n];\n\npreventAddEventListener.injections = [toRegExp, hit];\n","/* eslint-disable consistent-return, no-eval */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet prevent-bab\n *\n * @description\n * Prevents BlockAdblock script from detecting an ad blocker.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#bab-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-bab')\n * ```\n */\nexport function preventBab(source) {\n const nativeSetTimeout = window.setTimeout;\n const babRegex = /\\.bab_elementid.$/;\n\n window.setTimeout = (callback, ...args) => {\n if (typeof callback !== 'string' || !babRegex.test(callback)) {\n return nativeSetTimeout.call(this, callback, ...args);\n }\n hit(source);\n };\n\n const signatures = [\n ['blockadblock'],\n ['babasbm'],\n [/getItem\\('babn'\\)/],\n ['getElementById', 'String.fromCharCode', 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 'charAt', 'DOMContentLoaded', 'AdBlock', 'addEventListener', 'doScroll', 'fromCharCode', '<<2|r>>4', 'sessionStorage', 'clientWidth', 'localStorage', 'Math', 'random'],\n ];\n const check = (str) => {\n for (let i = 0; i < signatures.length; i += 1) {\n const tokens = signatures[i];\n let match = 0;\n for (let j = 0; j < tokens.length; j += 1) {\n const token = tokens[j];\n const found = token instanceof RegExp ? token.test(str) : str.indexOf(token) > -1;\n if (found) {\n match += 1;\n }\n }\n if (match / tokens.length >= 0.8) {\n return true;\n }\n }\n return false;\n };\n\n const nativeEval = window.eval;\n window.eval = (str) => {\n if (!check(str)) {\n return nativeEval(str);\n }\n hit(source);\n const bodyEl = document.body;\n if (bodyEl) {\n bodyEl.style.removeProperty('visibility');\n }\n const el = document.getElementById('babasbmsgx');\n if (el) {\n el.parentNode.removeChild(el);\n }\n };\n}\n\npreventBab.names = [\n 'prevent-bab',\n 'nobab.js',\n 'ubo-nobab.js',\n 'bab-defuser.js',\n 'ubo-bab-defuser.js',\n];\n\npreventBab.injections = [hit];\n","/* eslint-disable no-unused-vars, no-extra-bind, func-names */\nimport { hit, noopFunc } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet nowebrtc\n *\n * @description\n * Disables WebRTC by overriding `RTCPeerConnection`. The overriden function will log every attempt to create a new connection.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#nowebrtcjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('nowebrtc')\n * ```\n */\n/* eslint-enable max-len */\nexport function nowebrtc(source) {\n let propertyName = '';\n if (window.RTCPeerConnection) {\n propertyName = 'RTCPeerConnection';\n } else if (window.webkitRTCPeerConnection) {\n propertyName = 'webkitRTCPeerConnection';\n }\n\n if (propertyName === '') {\n return;\n }\n\n const rtcReplacement = (config) => {\n hit(source, `Document tried to create an RTCPeerConnection: ${config}`);\n };\n rtcReplacement.prototype = {\n close: noopFunc,\n createDataChannel: noopFunc,\n createOffer: noopFunc,\n setRemoteDescription: noopFunc,\n };\n const rtc = window[propertyName];\n window[propertyName] = rtcReplacement;\n if (rtc.prototype) {\n rtc.prototype.createDataChannel = function (a, b) {\n return {\n close: noopFunc,\n send: noopFunc,\n };\n }.bind(null);\n }\n}\n\nnowebrtc.names = [\n 'nowebrtc',\n 'nowebrtc.js',\n 'ubo-nowebrtc.js',\n];\n\nnowebrtc.injections = [hit, noopFunc];\n","/* eslint-disable no-console */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet log-addEventListener\n *\n * @description\n * Logs all addEventListener calls to the console.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#addeventlistener-loggerjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('log-addEventListener')\n * ```\n */\nexport function logAddEventListener(source) {\n const log = console.log.bind(console);\n const nativeAddEventListener = window.EventTarget.prototype.addEventListener;\n function addEventListenerWrapper(eventName, callback, ...args) {\n hit(source);\n // The scriptlet might cause a website broke\n // if the website uses test addEventListener with callback = null\n // https://github.com/AdguardTeam/Scriptlets/issues/76\n let callbackToLog = callback;\n if (callback && typeof callback === 'function') {\n callbackToLog = callback.toString();\n }\n log(`addEventListener(\"${eventName}\", ${callbackToLog})`);\n return nativeAddEventListener.apply(this, [eventName, callback, ...args]);\n }\n window.EventTarget.prototype.addEventListener = addEventListenerWrapper;\n}\n\nlogAddEventListener.names = [\n 'log-addEventListener',\n 'addEventListener-logger.js',\n 'ubo-addEventListener-logger.js',\n 'aell.js',\n 'ubo-aell.js',\n];\n\nlogAddEventListener.injections = [hit];\n","/* eslint-disable no-console, no-eval */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet log-eval\n *\n * @description\n * Logs all `eval()` or `new Function()` calls to the console.\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('log-eval')\n * ```\n */\nexport function logEval(source) {\n const log = console.log.bind(console);\n // wrap eval function\n const nativeEval = window.eval;\n function evalWrapper(str) {\n hit(source);\n log(`eval(\"${str}\")`);\n return nativeEval(str);\n }\n window.eval = evalWrapper;\n\n // wrap new Function\n const nativeFunction = window.Function;\n\n function FunctionWrapper(...args) {\n hit(source);\n log(`new Function(${args.join(', ')})`);\n return nativeFunction.apply(this, [...args]);\n }\n\n FunctionWrapper.prototype = Object.create(nativeFunction.prototype);\n FunctionWrapper.prototype.constructor = FunctionWrapper;\n\n window.Function = FunctionWrapper;\n}\n\nlogEval.names = [\n 'log-eval',\n];\n\nlogEval.injections = [hit];\n","/**\n * @scriptlet log\n *\n * @description\n * A simple scriptlet which only purpose is to print arguments to console.\n * This scriptlet can be helpful for debugging and troubleshooting other scriptlets.\n *\n * **Example**\n * ```\n * example.org#%#//scriptlet('log', 'arg1', 'arg2')\n * ```\n */\nexport function log(...args) {\n console.log(args); // eslint-disable-line no-console\n}\nlog.names = ['log'];\n","/* eslint-disable no-eval, no-extra-bind */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet noeval\n *\n * @description\n * Prevents page to use eval.\n * Notifies about attempts in the console\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#noevaljs-\n *\n * It also can be used as `$redirect` rules sometimes.\n * See [redirect description](../wiki/about-redirects.md#noeval).\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('noeval')\n * ```\n */\nexport function noeval(source) {\n window.eval = function evalWrapper(s) {\n hit(source, `AdGuard has prevented eval:\\n${s}`);\n }.bind();\n}\n\nnoeval.names = [\n 'noeval',\n 'noeval.js',\n 'silent-noeval.js',\n 'ubo-noeval.js',\n 'ubo-silent-noeval.js',\n];\n\nnoeval.injections = [hit];\n","/* eslint-disable no-eval, no-extra-bind, func-names */\n\nimport { toRegExp, hit } from '../helpers';\n\n/**\n * @scriptlet prevent-eval-if\n *\n * @description\n * Prevents page to use eval matching payload.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#noeval-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-eval-if'[, search])\n * ```\n *\n * - `search` - optional, string or regexp for matching stringified eval payload.\n * If 'search is not specified — all stringified eval payload will be matched\n *\n * **Examples**\n * ```\n * ! Prevents eval if it matches 'test'\n * example.org#%#//scriptlet('prevent-eval-if', 'test')\n * ```\n *\n * @param {string|RegExp} [search] string or regexp matching stringified eval payload\n */\nexport function preventEvalIf(source, search) {\n search = search ? toRegExp(search) : toRegExp('/.?/');\n\n const nativeEval = window.eval;\n window.eval = function (payload) {\n if (!search.test(payload.toString())) {\n return nativeEval.call(window, payload);\n }\n hit(source, payload);\n return undefined;\n }.bind(window);\n}\n\npreventEvalIf.names = [\n 'prevent-eval-if',\n 'noeval-if.js',\n 'ubo-noeval-if.js',\n];\n\npreventEvalIf.injections = [toRegExp, hit];\n","/* eslint-disable no-console, func-names, no-multi-assign */\nimport { hit, noopFunc, noopThis } from '../helpers';\n\n/**\n * @scriptlet prevent-fab-3.2.0\n *\n * @description\n * Prevents execution of the FAB script v3.2.0.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#fuckadblockjs-320-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-fab-3.2.0')\n * ```\n */\nexport function preventFab(source) {\n hit(source);\n\n // redefines Fab function for adblock detection\n const Fab = function () {};\n Fab.prototype.check = noopFunc;\n Fab.prototype.clearEvent = noopFunc;\n Fab.prototype.emitEvent = noopFunc;\n Fab.prototype.on = function (a, b) {\n if (!a) {\n b();\n }\n return this;\n };\n Fab.prototype.onDetected = noopThis;\n Fab.prototype.onNotDetected = function (a) {\n a();\n return this;\n };\n Fab.prototype.setOption = noopFunc;\n\n const fab = new Fab();\n const getSetFab = {\n get() { return Fab; },\n set() {},\n };\n const getsetfab = {\n get() { return fab; },\n set() {},\n };\n\n // redefined Fab data properties which if 'FuckAdBlock' variable exists\n if (Object.prototype.hasOwnProperty.call(window, 'FuckAdBlock')) {\n window.FuckAdBlock = Fab;\n } else {\n // or redefined Fab accessor properties\n Object.defineProperty(window, 'FuckAdBlock', getSetFab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'BlockAdBlock')) {\n window.BlockAdBlock = Fab;\n } else {\n Object.defineProperty(window, 'BlockAdBlock', getSetFab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'SniffAdBlock')) {\n window.SniffAdBlock = Fab;\n } else {\n Object.defineProperty(window, 'SniffAdBlock', getSetFab);\n }\n\n if (Object.prototype.hasOwnProperty.call(window, 'fuckAdBlock')) {\n window.fuckAdBlock = fab;\n } else {\n Object.defineProperty(window, 'fuckAdBlock', getsetfab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'blockAdBlock')) {\n window.blockAdBlock = fab;\n } else {\n Object.defineProperty(window, 'blockAdBlock', getsetfab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'sniffAdBlock')) {\n window.sniffAdBlock = fab;\n } else {\n Object.defineProperty(window, 'sniffAdBlock', getsetfab);\n }\n}\n\npreventFab.names = [\n 'prevent-fab-3.2.0',\n 'nofab.js',\n 'ubo-nofab.js',\n 'fuckadblock.js-3.2.0',\n 'ubo-fuckadblock.js-3.2.0',\n];\n\npreventFab.injections = [hit, noopFunc, noopThis];\n","/* eslint-disable no-console, func-names, no-multi-assign */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet set-popads-dummy\n *\n * @description\n * Sets static properties PopAds and popns.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#popads-dummyjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('set-popads-dummy')\n * ```\n */\nexport function setPopadsDummy(source) {\n delete window.PopAds;\n delete window.popns;\n Object.defineProperties(window, {\n PopAds: {\n get: () => {\n hit(source);\n return {};\n },\n },\n popns: {\n get: () => {\n hit(source);\n return {};\n },\n },\n });\n}\n\nsetPopadsDummy.names = [\n 'set-popads-dummy',\n 'popads-dummy.js',\n 'ubo-popads-dummy.js',\n];\n\nsetPopadsDummy.injections = [hit];\n","import {\n hit, createOnErrorHandler, randomId,\n} from '../helpers';\n\n/**\n * @scriptlet prevent-popads-net\n *\n * @description\n * Aborts on property write (PopAds, popns), throws reference error with random id.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#popadsnetjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-popads-net')\n * ```\n */\nexport function preventPopadsNet(source) {\n const rid = randomId();\n\n const throwError = () => {\n throw new ReferenceError(rid);\n };\n\n delete window.PopAds;\n delete window.popns;\n Object.defineProperties(window, {\n PopAds: { set: throwError },\n popns: { set: throwError },\n });\n\n window.onerror = createOnErrorHandler(rid).bind();\n hit(source);\n}\n\npreventPopadsNet.names = [\n 'prevent-popads-net',\n 'popads.net.js',\n 'ubo-popads.net.js',\n];\n\npreventPopadsNet.injections = [createOnErrorHandler, randomId, hit];\n","/* eslint-disable func-names */\nimport { hit, setPropertyAccess } from '../helpers';\n\n/**\n * @scriptlet prevent-adfly\n *\n * @description\n * Prevents anti-adblock scripts on adfly short links.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#adfly-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-adfly')\n * ```\n */\nexport function preventAdfly(source) {\n const isDigit = (data) => /^\\d$/.test(data);\n const handler = function (encodedURL) {\n let evenChars = '';\n let oddChars = '';\n for (let i = 0; i < encodedURL.length; i += 1) {\n if (i % 2 === 0) {\n evenChars += encodedURL.charAt(i);\n } else {\n oddChars = encodedURL.charAt(i) + oddChars;\n }\n }\n\n let data = (evenChars + oddChars).split('');\n\n for (let i = 0; i < data.length; i += 1) {\n if (isDigit(data[i])) {\n for (let ii = i + 1; ii < data.length; ii += 1) {\n if (isDigit(data[ii])) {\n // eslint-disable-next-line no-bitwise\n const temp = parseInt(data[i], 10) ^ parseInt(data[ii], 10);\n if (temp < 10) {\n data[i] = temp.toString();\n }\n i = ii;\n break;\n }\n }\n }\n }\n data = data.join('');\n const decodedURL = window.atob(data).slice(16, -16);\n /* eslint-disable compat/compat */\n if (window.stop) {\n window.stop();\n }\n /* eslint-enable compat/compat */\n window.onbeforeunload = null;\n window.location.href = decodedURL;\n };\n\n let val;\n // Do not apply handler more than one time\n let applyHandler = true;\n\n const result = setPropertyAccess(window, 'ysmm', {\n configurable: false,\n set: (value) => {\n if (applyHandler) {\n applyHandler = false;\n try {\n if (typeof value === 'string') {\n handler(value);\n }\n } catch (err) { } // eslint-disable-line no-empty\n }\n val = value;\n },\n get: () => val,\n });\n\n if (result) {\n hit(source);\n } else {\n window.console.error('Failed to set up prevent-adfly scriptlet');\n }\n}\n\npreventAdfly.names = [\n 'prevent-adfly',\n 'adfly-defuser.js',\n 'ubo-adfly-defuser.js',\n];\n\npreventAdfly.injections = [setPropertyAccess, hit];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n noopFunc,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet debug-on-property-read\n *\n * @description\n * This scriptlet is basically the same as [abort-on-property-read](#abort-on-property-read), but instead of aborting it starts the debugger.\n *\n * **It is not supposed to be used in production filter lists!**\n *\n * **Syntax**\n * ```\n * ! Aborts script when it tries to access `window.alert`\n * example.org#%#//scriptlet('debug-on-property-read', 'alert')\n * ```\n */\n/* eslint-enable max-len */\nexport function debugOnPropertyRead(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n const rid = randomId();\n const abort = () => {\n hit(source);\n debugger; // eslint-disable-line no-debugger\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, {\n get: abort,\n set: noopFunc,\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\ndebugOnPropertyRead.names = [\n 'debug-on-property-read',\n];\ndebugOnPropertyRead.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n noopFunc,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet debug-on-property-write\n *\n * @description\n * This scriptlet is basically the same as [abort-on-property-write](#abort-on-property-write), but instead of aborting it starts the debugger.\n *\n * **It is not supposed to be used in production filter lists!**\n *\n * **Syntax**\n * ```\n * ! Aborts script when it tries to write in property `window.test`\n * example.org#%#//scriptlet('debug-on-property-write', 'test')\n * ```\n */\n/* eslint-enable max-len */\nexport function debugOnPropertyWrite(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n const rid = randomId();\n const abort = () => {\n hit(source);\n debugger; // eslint-disable-line no-debugger\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, { set: abort });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid).bind();\n}\n\ndebugOnPropertyWrite.names = [\n 'debug-on-property-write',\n];\n\ndebugOnPropertyWrite.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet debug-current-inline-script\n *\n * @description\n * This scriptlet is basically the same as [abort-current-inline-script](#abort-current-inline-script), but instead of aborting it starts the debugger.\n *\n * **It is not supposed to be used in production filter lists!**\n *\n * **Syntax**\n *```\n * ! Aborts script when it tries to access `window.alert`\n * example.org#%#//scriptlet('debug-current-inline-script', 'alert')\n * ```\n */\n/* eslint-enable max-len */\nexport function debugCurrentInlineScript(source, property, search = null) {\n const regex = search ? toRegExp(search) : null;\n const rid = randomId();\n\n const getCurrentScript = () => {\n if (!document.currentScript) { // eslint-disable-line compat/compat\n const scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n }\n return document.currentScript; // eslint-disable-line compat/compat\n };\n\n const ourScript = getCurrentScript();\n\n const abort = () => {\n const scriptEl = getCurrentScript();\n if (scriptEl instanceof HTMLScriptElement\n && scriptEl.textContent.length > 0\n && scriptEl !== ourScript\n && (!regex || regex.test(scriptEl.textContent))) {\n hit(source);\n debugger; // eslint-disable-line no-debugger\n }\n };\n\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n let currentValue = base[prop];\n setPropertyAccess(base, prop, {\n set: (value) => {\n abort();\n currentValue = value;\n },\n get: () => {\n abort();\n return currentValue;\n },\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\ndebugCurrentInlineScript.names = [\n 'debug-current-inline-script',\n];\n\ndebugCurrentInlineScript.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n];\n","import { hit, observeDOMChanges } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet remove-attr\n *\n * @description\n * Removes the specified attributes from DOM nodes. This scriptlet runs once when the page loads\n * and after that periodically in order to DOM tree changes.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#remove-attrjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('remove-attr', attrs[, selector])\n * ```\n *\n * - `attrs` — required, attribute or list of attributes joined by '|'\n * - `selector` — optional, CSS selector, specifies DOM nodes from which the attributes will be removed\n *\n * **Examples**\n * 1. Removes by attribute\n * ```\n * example.org#%#//scriptlet('remove-attr', 'example|test')\n * ```\n *\n * ```html\n * \n *
Some text
\n *\n * \n *
Some text
\n * ```\n *\n * 2. Removes with specified selector\n * ```\n * example.org#%#//scriptlet('remove-attr', 'example', 'div[class=\"inner\"]')\n * ```\n *\n * ```html\n * \n *
\n *
Some text
\n *
\n *\n * \n *
\n *
Some text
\n *
\n * ```\n */\n/* eslint-enable max-len */\nexport function removeAttr(source, attrs, selector) {\n if (!attrs) { return; }\n attrs = attrs.split(/\\s*\\|\\s*/);\n if (!selector) {\n selector = `[${attrs.join('],[')}]`;\n }\n\n const rmattr = () => {\n const nodes = [].slice.call(document.querySelectorAll(selector));\n let removed = false;\n nodes.forEach((node) => {\n attrs.forEach((attr) => {\n node.removeAttribute(attr);\n removed = true;\n });\n });\n if (removed) {\n hit(source);\n }\n };\n\n rmattr();\n\n // 'true' for observing attributes\n observeDOMChanges(rmattr, true);\n}\n\nremoveAttr.names = [\n 'remove-attr',\n 'remove-attr.js',\n 'ubo-remove-attr.js',\n 'ra.js',\n 'ubo-ra.js',\n];\n\nremoveAttr.injections = [hit, observeDOMChanges];\n","import { hit, observeDOMChanges } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet remove-class\n *\n * @description\n * Removes the specified classes from DOM nodes. This scriptlet runs once after the page loads\n * and after that periodically in order to DOM tree changes.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#remove-classjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('remove-class', classes[, selector])\n * ```\n *\n * - `classes` — required, class or list of classes separated by '|'\n * - `selector` — optional, CSS selector, specifies DOM nodes from which the classes will be removed.\n * If there is no `selector`, each class of `classes` independently will be removed from all nodes which has one\n *\n * **Examples**\n * 1. Removes by classes\n * ```\n * example.org#%#//scriptlet('remove-class', 'example|test')\n * ```\n *\n * ```html\n * \n *
Some text
\n *
Some text
\n *
Some text
\n *\n * \n *
Some text
\n *
Some text
\n *
Some text
\n * ```\n *\n * 2. Removes with specified selector\n * ```\n * example.org#%#//scriptlet('remove-class', 'branding', 'div[class^=\"inner\"]')\n * ```\n *\n * ```html\n * \n *
\n *
Some text
\n *
\n *\n * \n *
\n *
Some text
\n *
\n * ```\n */\n/* eslint-enable max-len */\n\nexport function removeClass(source, classNames, selector) {\n if (!classNames) { return; }\n classNames = classNames.split(/\\s*\\|\\s*/);\n let selectors = [];\n if (!selector) {\n selectors = classNames.map((className) => {\n return `.${className}`;\n });\n }\n\n const removeClassHandler = () => {\n const nodes = new Set();\n if (selector) {\n const foundedNodes = [].slice.call(document.querySelectorAll(selector));\n foundedNodes.forEach((n) => nodes.add(n));\n } else if (selectors.length > 0) {\n selectors.forEach((s) => {\n const elements = document.querySelectorAll(s);\n for (let i = 0; i < elements.length; i += 1) {\n const element = elements[i];\n nodes.add(element);\n }\n });\n }\n\n let removed = false;\n\n nodes.forEach((node) => {\n classNames.forEach((className) => {\n if (node.classList.contains(className)) {\n node.classList.remove(className);\n removed = true;\n }\n });\n });\n\n if (removed) {\n hit(source);\n }\n };\n\n removeClassHandler();\n\n const CLASS_ATTR_NAME = ['class'];\n // 'true' for observing attributes\n // 'class' for observing only classes\n observeDOMChanges(removeClassHandler, true, CLASS_ATTR_NAME);\n}\n\nremoveClass.names = [\n 'remove-class',\n 'remove-class.js',\n 'ubo-remove-class.js',\n 'rc.js',\n 'ubo-rc.js',\n];\n\nremoveClass.injections = [hit, observeDOMChanges];\n","import { hit } from '../helpers';\n\n/**\n * @scriptlet disable-newtab-links\n *\n * @description\n * Prevents opening new tabs and windows if there is `target` attribute in element.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#disable-newtab-linksjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('disable-newtab-links')\n * ```\n */\nexport function disableNewtabLinks(source) {\n document.addEventListener('click', (ev) => {\n let { target } = ev;\n while (target !== null) {\n if (target.localName === 'a' && target.hasAttribute('target')) {\n ev.stopPropagation();\n ev.preventDefault();\n hit(source);\n break;\n }\n target = target.parentNode;\n }\n });\n}\n\ndisableNewtabLinks.names = [\n 'disable-newtab-links',\n 'disable-newtab-links.js',\n 'ubo-disable-newtab-links.js',\n];\n\ndisableNewtabLinks.injections = [\n hit,\n];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet adjust-setInterval\n *\n * @description\n * Adjusts interval for specified setInterval() callbacks.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#nano-setinterval-boosterjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('adjust-setInterval'[, match [, interval[, boost]]])\n * ```\n *\n * - `match` - optional, string/regular expression, matching in stringified callback function\n * - `interval` - optional, defaults to 1000, decimal integer, matching setInterval delay\n * - `boost` - optional, default to 0.05, float, capped at 50 times for up and down (0.02...50), interval multiplier\n *\n * **Examples**\n * 1. Adjust all setInterval() x20 times where interval equal 1000ms:\n * ```\n * example.org#%#//scriptlet('adjust-setInterval')\n * ```\n *\n * 2. Adjust all setInterval() x20 times where callback mathed with `example` and interval equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', 'example')\n * ```\n *\n * 3. Adjust all setInterval() x20 times where callback mathed with `example` and interval equal 400ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', 'example', '400')\n * ```\n *\n * 4. Slow down setInterval() x2 times where callback matched with `example` and interval equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', 'example', '', '2')\n * ```\n * 5. Adjust all setInterval() x50 times where interval equal 2000ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', '', '2000', '0.02')\n * ```\n */\n/* eslint-enable max-len */\nexport function adjustSetInterval(source, match, interval, boost) {\n const nativeInterval = window.setInterval;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const nativeIsFinite = Number.isFinite || window.isFinite; // eslint-disable-line compat/compat\n\n interval = parseInt(interval, 10);\n interval = nativeIsNaN(interval) ? 1000 : interval;\n\n boost = parseFloat(boost);\n boost = nativeIsNaN(boost) || !nativeIsFinite(boost) ? 0.05 : boost;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n if (boost < 0.02) {\n boost = 0.02;\n }\n if (boost > 50) {\n boost = 50;\n }\n\n const intervalWrapper = (cb, d, ...args) => {\n if (d === interval && match.test(cb.toString())) {\n d *= boost;\n hit(source);\n }\n return nativeInterval.apply(window, [cb, d, ...args]);\n };\n window.setInterval = intervalWrapper;\n}\n\nadjustSetInterval.names = [\n 'adjust-setInterval',\n 'nano-setInterval-booster.js',\n 'ubo-nano-setInterval-booster.js',\n 'nano-sib.js',\n 'ubo-nano-sib.js',\n];\n\nadjustSetInterval.injections = [toRegExp, hit];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet adjust-setTimeout\n *\n * @description\n * Adjusts timeout for specified setTimout() callbacks.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#nano-settimeout-boosterjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout'[, match [, timeout[, boost]]])\n * ```\n *\n * - `match` - optional, string/regular expression, matching in stringified callback function\n * - `timeout` - optional, defaults to 1000, decimal integer, matching setTimout delay\n * - `boost` - optional, default to 0.05, float, capped at 50 times for up and down (0.02...50), timeout multiplier\n *\n * **Examples**\n * 1. Adjust all setTimeout() x20 times where timeout equal 1000ms:\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout')\n * ```\n *\n * 2. Adjust all setTimeout() x20 times where callback mathed with `example` and timeout equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', 'example')\n * ```\n *\n * 3. Adjust all setTimeout() x20 times where callback mathed with `example` and timeout equal 400ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', 'example', '400')\n * ```\n *\n * 4. Slow down setTimeout() x2 times where callback matched with `example` and timeout equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', 'example', '', '2')\n * ```\n * 5. Adjust all setTimeout() x50 times where timeout equal 2000ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', '', '2000', '0.02')\n * ```\n */\n/* eslint-enable max-len */\nexport function adjustSetTimeout(source, match, timeout, boost) {\n const nativeTimeout = window.setTimeout;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const nativeIsFinite = Number.isFinite || window.isFinite; // eslint-disable-line compat/compat\n\n timeout = parseInt(timeout, 10);\n timeout = nativeIsNaN(timeout) ? 1000 : timeout;\n\n boost = parseFloat(boost);\n boost = nativeIsNaN(boost) || !nativeIsFinite(boost) ? 0.05 : boost;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n if (boost < 0.02) {\n boost = 0.02;\n }\n if (boost > 50) {\n boost = 50;\n }\n\n const timeoutWrapper = (cb, d, ...args) => {\n if (d === timeout && match.test(cb.toString())) {\n d *= boost;\n hit(source);\n }\n return nativeTimeout.apply(window, [cb, d, ...args]);\n };\n window.setTimeout = timeoutWrapper;\n}\n\nadjustSetTimeout.names = [\n 'adjust-setTimeout',\n 'nano-setTimeout-booster.js',\n 'ubo-nano-setTimeout-booster.js',\n 'nano-stb.js',\n 'ubo-nano-stb.js',\n];\n\nadjustSetTimeout.injections = [toRegExp, hit];\n","import { hit } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet dir-string\n *\n * @description\n * Wraps the `console.dir` API to call the `toString` method of the argument.\n * There are several adblock circumvention systems that detect browser devtools\n * and hide themselves. Therefore, if we force them to think\n * that devtools are open (using this scrciptlet),\n * it will automatically disable the adblock circumvention script.\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/6b2a309054cc23432102b85d13f12559639ef495/lib/content/snippets.js#L766\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('dir-string'[, times])\n * ```\n * - `times` - optional, the number of times to call the `toString` method of the argument to `console.dir`\n *\n * **Example**\n * ```\n * ! Run 2 times\n * example.org#%#//scriptlet('dir-string', '2')\n * ```\n */\n/* eslint-enable max-len */\nexport function dirString(source, times) {\n const { dir } = console;\n times = parseInt(times, 10);\n\n function dirWrapper(object) {\n // eslint-disable-next-line no-unused-vars\n let temp;\n for (let i = 0; i < times; i += 1) {\n // eslint-disable-next-line no-unused-expressions\n temp = `${object}`;\n }\n if (typeof dir === 'function') {\n dir.call(this, object);\n }\n hit(source, temp);\n }\n // eslint-disable-next-line no-console\n console.dir = dirWrapper;\n}\n\ndirString.names = [\n 'dir-string',\n 'abp-dir-string',\n];\n\ndirString.injections = [hit];\n","import { hit, getPropertyInChain } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet json-prune\n *\n * @description\n * Removes specified properties from the result of calling JSON.parse and returns the caller\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#json-prunejs-\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/master/lib/content/snippets.js#L1285\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('json-prune'[, propsToRemove [, obligatoryProps]])\n * ```\n *\n * - `propsToRemove` - optional, string of space-separated properties to remove\n * - `obligatoryProps` - optional, string of space-separated properties which must be all present for the pruning to occur\n *\n * **Examples**\n * 1. Removes property `example` from the results of JSON.parse call\n * ```\n * example.org#%#//scriptlet('json-prune', 'example')\n * ```\n *\n * For instance, the following call will return `{ one: 1}`\n *\n * ```html\n * JSON.parse('{\"one\":1,\"example\":true}')\n * ```\n *\n * 2. If there are no specified properties in the result of JSON.parse call, pruning will NOT occur\n * ```\n * example.org#%#//scriptlet('json-prune', 'one', 'obligatoryProp')\n * ```\n *\n * For instance, the following call will return `{ one: 1, two: 2}`\n *\n * ```html\n * JSON.parse('{\"one\":1,\"two\":2}')\n * ```\n *\n * 3. A property in a list of properties can be a chain of properties\n *\n * ```\n * example.org#%#//scriptlet('json-prune', 'a.b', 'adpath.url.first')\n * ```\n *\n * 4. Call with no arguments will log the current hostname and json payload at the console\n * ```\n * example.org#%#//scriptlet('json-prune')\n * ```\n */\n/* eslint-enable max-len */\nexport function jsonPrune(source, propsToRemove, requiredInitialProps) {\n // eslint-disable-next-line no-console\n const log = console.log.bind(console);\n const prunePaths = propsToRemove !== undefined && propsToRemove !== ''\n ? propsToRemove.split(/ +/)\n : [];\n const needlePaths = requiredInitialProps !== undefined && requiredInitialProps !== ''\n ? requiredInitialProps.split(/ +/)\n : [];\n\n function isPruningNeeded(root) {\n if (!root) {\n return false;\n }\n\n for (let i = 0; i < needlePaths.length; i += 1) {\n const needlePath = needlePaths[i];\n const details = getPropertyInChain(root, needlePath, false);\n const nestedPropName = needlePath.split('.').pop();\n if (details && details.base[nestedPropName] === undefined) {\n return false;\n }\n }\n return true;\n }\n\n const nativeParse = JSON.parse;\n\n const parseWrapper = (...args) => {\n const r = nativeParse.apply(window, args);\n if (prunePaths.length === 0) {\n log(window.location.hostname, r);\n return r;\n }\n if (isPruningNeeded(r) === false) {\n return r;\n }\n prunePaths.forEach((path) => {\n const ownerObj = getPropertyInChain(r, path, false);\n if (ownerObj !== undefined && ownerObj.base) {\n delete ownerObj.base[ownerObj.prop];\n }\n });\n hit(source);\n return r;\n };\n\n JSON.parse = parseWrapper;\n}\n\njsonPrune.names = [\n 'json-prune',\n 'json-prune.js',\n 'ubo-json-prune.js',\n];\n\njsonPrune.injections = [hit, getPropertyInChain];\n","import {\n hit, startsWith, toRegExp, noopFunc,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-requestAnimationFrame\n *\n * @description\n * Prevents a `requestAnimationFrame` call\n * if the text of the callback is matching the specified search string which does not start with `!`;\n * otherwise mismatched calls should be defused.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#no-requestanimationframe-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-requestAnimationFrame'[, search])\n * ```\n *\n * - `search` - optional, string or regular expression.\n * If starts with `!`, scriptlet will not match the stringified callback but all other will be defused.\n * If do not start with `!`, the stringified callback will be matched.\n *\n * Call with no argument will log all requestAnimationFrame calls while debugging.\n * So do not use the scriptlet without any parameter in production filter lists.\n *\n * **Examples**\n * 1. Prevents `requestAnimationFrame` calls if the callback matches `/\\.test/`.\n * ```bash\n * example.org#%#//scriptlet('prevent-requestAnimationFrame', '/\\.test/')\n * ```\n *\n * For instance, the following call will be prevented:\n * ```javascript\n * var times = 0;\n * requestAnimationFrame(function change() {\n * window.test = 'new value';\n * if (times < 2) {\n * times += 1;\n * requestAnimationFrame(change);\n * }\n * });\n * ```\n * 2. Prevents `requestAnimationFrame` calls if **does not match** 'check'.\n * ```bash\n * example.org#%#//scriptlet('prevent-requestAnimationFrame', '!check')\n * ```\n *\n * For instance, only the first call will be prevented:\n *\n * ```javascript\n * var timesFirst = 0;\n * requestAnimationFrame(function changeFirst() {\n * window.check = 'should not be prevented';\n * if (timesFirst < 2) {\n * timesFirst += 1;\n * requestAnimationFrame(changeFirst);\n * }\n * });\n *\n * var timesSecond = 0;\n * requestAnimationFrame(function changeSecond() {\n * window.second = 'should be prevented';\n * if (timesSecond < 2) {\n * timesSecond += 1;\n * requestAnimationFrame(changeSecond);\n * }\n * });\n * ```\n */\n/* eslint-enable max-len */\n\nexport function preventRequestAnimationFrame(source, match) {\n const nativeRequestAnimationFrame = window.requestAnimationFrame;\n\n // logs requestAnimationFrame to console if no arguments have been specified\n const shouldLog = typeof match === 'undefined';\n\n const INVERT_MARKER = '!';\n\n const doNotMatch = startsWith(match, INVERT_MARKER);\n if (doNotMatch) {\n match = match.slice(1);\n }\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n const rafWrapper = (callback, ...args) => {\n let shouldPrevent = false;\n if (shouldLog) {\n const logMessage = `log: requestAnimationFrame(\"${callback.toString()}\")`;\n hit(source, logMessage);\n } else {\n shouldPrevent = match.test(callback.toString()) !== doNotMatch;\n }\n\n if (shouldPrevent) {\n hit(source);\n return nativeRequestAnimationFrame(noopFunc);\n }\n\n return nativeRequestAnimationFrame.apply(window, [callback, ...args]);\n };\n\n window.requestAnimationFrame = rafWrapper;\n}\n\npreventRequestAnimationFrame.names = [\n 'prevent-requestAnimationFrame',\n 'no-requestAnimationFrame-if.js',\n 'ubo-no-requestAnimationFrame-if.js',\n 'norafif.js',\n 'ubo-norafif.js',\n 'ubo-no-requestAnimationFrame-if',\n 'ubo-norafif',\n];\n\npreventRequestAnimationFrame.injections = [hit, startsWith, toRegExp, noopFunc];\n","import { hit } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet set-cookie\n *\n * @description\n * Sets a cookie with the specified name and value. Cookie path defaults to root.\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('set-cookie', name, value)\n * ```\n *\n * - `name` - required, cookie name to be set\n * - `value` - required, cookie value; possible values:\n * - number `>= 0 && <= 15`\n * - one of the predefined constants:\n * - `true` / `True`\n * - `false` / `False`\n * - `yes` / `Yes` / `Y`\n * - `no`\n * - `ok` / `OK`\n *\n * **Examples**\n * ```\n * example.org#%#//scriptlet('set-cookie', 'checking', 'ok')\n *\n * example.org#%#//scriptlet('set-cookie', 'gdpr-settings-cookie', '1')\n * ```\n */\n/* eslint-enable max-len */\nexport function setCookie(source, name, value) {\n if (!name || !value) {\n return;\n }\n\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n let valueToSet;\n if (value === 'true') {\n valueToSet = 'true';\n } else if (value === 'True') {\n valueToSet = 'True';\n } else if (value === 'false') {\n valueToSet = 'false';\n } else if (value === 'False') {\n valueToSet = 'False';\n } else if (value === 'yes') {\n valueToSet = 'yes';\n } else if (value === 'Yes') {\n valueToSet = 'Yes';\n } else if (value === 'Y') {\n valueToSet = 'Y';\n } else if (value === 'no') {\n valueToSet = 'no';\n } else if (value === 'ok') {\n valueToSet = 'ok';\n } else if (value === 'OK') {\n valueToSet = 'OK';\n } else if (/^\\d+$/.test(value)) {\n valueToSet = parseFloat(value);\n if (nativeIsNaN(valueToSet)) {\n return;\n }\n if (Math.abs(valueToSet) < 0 || Math.abs(valueToSet) > 15) {\n return;\n }\n } else {\n return;\n }\n\n const pathToSet = 'path=/;';\n\n const cookieData = `${encodeURIComponent(name)}=${encodeURIComponent(valueToSet)}; ${pathToSet}`;\n\n hit(source);\n document.cookie = cookieData;\n}\n\nsetCookie.names = [\n 'set-cookie',\n];\n\nsetCookie.injections = [hit];\n","/**\n * This file must export all scriptlets which should be accessible\n */\nexport * from './abort-on-property-read';\nexport * from './abort-on-property-write';\nexport * from './prevent-setTimeout';\nexport * from './prevent-setInterval';\nexport * from './prevent-window-open';\nexport * from './abort-current-inline-script';\nexport * from './set-constant';\nexport * from './remove-cookie';\nexport * from './prevent-addEventListener';\nexport * from './prevent-bab';\nexport * from './nowebrtc';\nexport * from './log-addEventListener';\nexport * from './log-eval';\nexport * from './log';\nexport * from './noeval';\nexport * from './prevent-eval-if';\nexport * from './prevent-fab-3.2.0';\nexport * from './set-popads-dummy';\nexport * from './prevent-popads-net';\nexport * from './prevent-adfly';\nexport * from './debug-on-property-read';\nexport * from './debug-on-property-write';\nexport * from './debug-current-inline-script';\nexport * from './remove-attr';\nexport * from './remove-class';\nexport * from './disable-newtab-links';\nexport * from './adjust-setInterval';\nexport * from './adjust-setTimeout';\nexport * from './dir-string';\nexport * from './json-prune';\nexport * from './prevent-requestAnimationFrame';\nexport * from './set-cookie';\n","import {\n startsWith,\n endsWith,\n substringAfter,\n toRegExp,\n} from './string-utils';\n\nimport { ADG_SCRIPTLET_MASK } from './parse-rule';\n\nimport * as scriptletsList from '../scriptlets/scriptletsList';\n\nimport { redirects } from '../../scripts/compatibility-table.json';\n\nconst JS_RULE_MARKER = '#%#';\nconst COMMENT_MARKER = '!';\n\n/**\n * Checks if rule text is comment e.g. !!example.org##+js(set-constant.js, test, false)\n * @param {string} rule\n * @return {boolean}\n */\nconst isComment = (rule) => startsWith(rule, COMMENT_MARKER);\n\n/* ************************************************************************\n *\n * Scriptlets\n *\n ************************************************************************** */\n\n/**\n * uBlock scriptlet rule mask\n */\nconst UBO_SCRIPTLET_MASK_REG = /#@?#script:inject|#@?#\\s*\\+js/;\nconst UBO_SCRIPTLET_MASK_1 = '##+js';\nconst UBO_SCRIPTLET_MASK_2 = '##script:inject';\nconst UBO_SCRIPTLET_EXCEPTION_MASK_1 = '#@#+js';\nconst UBO_SCRIPTLET_EXCEPTION_MASK_2 = '#@#script:inject';\n\n/**\n * AdBlock Plus snippet rule mask\n */\nconst ABP_SCRIPTLET_MASK = '#$#';\nconst ABP_SCRIPTLET_EXCEPTION_MASK = '#@$#';\n\n/**\n * AdGuard CSS rule mask\n */\nconst ADG_CSS_MASK_REG = /#@?\\$#.+?\\s*\\{.*\\}\\s*$/g;\n\n/**\n * Checks if the `rule` is AdGuard scriptlet rule\n * @param {string} rule - rule text\n */\nconst isAdgScriptletRule = (rule) => {\n return (\n !isComment(rule)\n && rule.indexOf(ADG_SCRIPTLET_MASK) > -1\n );\n};\n\n/**\n * Checks if the `rule` is uBO scriptlet rule\n * @param {string} rule rule text\n */\nconst isUboScriptletRule = (rule) => {\n return (\n rule.indexOf(UBO_SCRIPTLET_MASK_1) > -1\n || rule.indexOf(UBO_SCRIPTLET_MASK_2) > -1\n || rule.indexOf(UBO_SCRIPTLET_EXCEPTION_MASK_1) > -1\n || rule.indexOf(UBO_SCRIPTLET_EXCEPTION_MASK_2) > -1\n )\n && UBO_SCRIPTLET_MASK_REG.test(rule)\n && !isComment(rule);\n};\n\n/**\n * Checks if the `rule` is AdBlock Plus snippet\n * @param {string} rule rule text\n */\nconst isAbpSnippetRule = (rule) => {\n return (\n rule.indexOf(ABP_SCRIPTLET_MASK) > -1\n || rule.indexOf(ABP_SCRIPTLET_EXCEPTION_MASK) > -1\n )\n && rule.search(ADG_CSS_MASK_REG) === -1\n && !isComment(rule);\n};\n\n/**\n * Finds scriptlet by it's name\n * @param {string} name - scriptlet name\n */\nconst getScriptletByName = (name) => {\n const scriptlets = Object.keys(scriptletsList).map((key) => scriptletsList[key]);\n return scriptlets\n .find((s) => {\n return s.names\n // full match name checking\n && (s.names.indexOf(name) > -1\n // or check ubo alias name without '.js' at the end\n || (!endsWith(name, '.js') && s.names.indexOf(`${name}.js`) > -1)\n );\n });\n};\n\n/**\n * Checks if the scriptlet name is valid\n * @param {string} name - Scriptlet name\n */\nconst isValidScriptletName = (name) => {\n if (!name) {\n return false;\n }\n const scriptlet = getScriptletByName(name);\n if (!scriptlet) {\n return false;\n }\n return true;\n};\n\n/* ************************************************************************\n *\n * Redirects\n *\n ************************************************************************** */\n\n/**\n * Redirect resources markers\n */\nconst ADG_UBO_REDIRECT_MARKER = 'redirect=';\nconst ABP_REDIRECT_MARKER = 'rewrite=abp-resource:';\n\nconst VALID_SOURCE_TYPES = [\n 'image',\n 'subdocument',\n 'stylesheet',\n 'script',\n 'xmlhttprequest',\n 'media',\n];\n\nconst validAdgRedirects = redirects.filter((el) => el.adg);\n\n/**\n * Converts array of pairs to object.\n * Sort of Object.fromEntries() polyfill.\n * @param {Array} pairs - array of pairs\n * @returns {Object}\n */\nconst objFromEntries = (pairs) => {\n const output = pairs\n .reduce((acc, el) => {\n const [key, value] = el;\n acc[key] = value;\n return acc;\n }, {});\n return output;\n};\n\n/**\n * Compatibility object where KEYS = UBO redirect names and VALUES = ADG redirect names\n * It's used for UBO -> ADG converting\n */\nconst uboToAdgCompatibility = objFromEntries(\n validAdgRedirects\n .filter((el) => el.ubo)\n .map((el) => {\n return [el.ubo, el.adg];\n }),\n);\n\n/**\n * Compatibility object where KEYS = ABP redirect names and VALUES = ADG redirect names\n * It's used for ABP -> ADG converting\n */\nconst abpToAdgCompatibility = objFromEntries(\n validAdgRedirects\n .filter((el) => el.abp)\n .map((el) => {\n return [el.abp, el.adg];\n }),\n);\n\n/**\n * Compatibility object where KEYS = UBO redirect names and VALUES = ADG redirect names\n * It's used for ADG -> UBO converting\n */\nconst adgToUboCompatibility = objFromEntries(\n validAdgRedirects\n .filter((el) => el.ubo)\n .map((el) => {\n return [el.adg, el.ubo];\n }),\n);\n\n/**\n * Needed for AdGuard redirect names validation where KEYS = **valid** AdGuard redirect names\n * 'adgToUboCompatibility' is still needed for ADG -> UBO converting\n */\nconst validAdgCompatibility = objFromEntries(\n validAdgRedirects\n .map((el) => {\n return [el.adg, 'valid adg redirect'];\n }),\n);\n\nconst REDIRECT_RULE_TYPES = {\n VALID_ADG: {\n marker: ADG_UBO_REDIRECT_MARKER,\n compatibility: validAdgCompatibility,\n },\n ADG: {\n marker: ADG_UBO_REDIRECT_MARKER,\n compatibility: adgToUboCompatibility,\n },\n UBO: {\n marker: ADG_UBO_REDIRECT_MARKER,\n compatibility: uboToAdgCompatibility,\n },\n ABP: {\n marker: ABP_REDIRECT_MARKER,\n compatibility: abpToAdgCompatibility,\n },\n};\n\n/**\n * Parses redirect rule modifiers\n * @param {string} rule\n * @returns {Array}\n */\nconst parseModifiers = (rule) => substringAfter(rule, '$').split(',');\n\n/**\n * Gets redirect resource name\n * @param {string} rule\n * @param {string} marker - specific Adg/Ubo or Abp redirect resources marker\n * @returns {string} - redirect resource name\n */\nconst getRedirectName = (rule, marker) => {\n const ruleModifiers = parseModifiers(rule);\n const redirectNamePart = ruleModifiers\n .find((el) => el.indexOf(marker) > -1);\n return substringAfter(redirectNamePart, marker);\n};\n\n/**\n * Checks if the `rule` is AdGuard redirect rule.\n * Discards comments and JS rules and checks if the `rule` has 'redirect' modifier.\n * @param {string} rule - rule text\n */\nconst isAdgRedirectRule = (rule) => {\n const MARKER_IN_BASE_PART_MASK = '/((?!\\\\$|\\\\,).{1})redirect=(.{0,}?)\\\\$(popup)?/';\n return (\n !isComment(rule)\n && rule.indexOf(REDIRECT_RULE_TYPES.ADG.marker) > -1\n // some js rules may have 'redirect=' in it, so we should get rid of them\n && rule.indexOf(JS_RULE_MARKER) === -1\n // get rid of rules like '_redirect=*://look.$popup'\n && !(toRegExp(MARKER_IN_BASE_PART_MASK).test(rule))\n );\n};\n\n/**\n * Checks if the `rule` satisfies the `type`\n * @param {string} rule - rule text\n * @param {'VALID_ADG'|'ADG'|'UBO'|'ABP'} type - type of a redirect rule\n */\nconst isRedirectRuleByType = (rule, type) => {\n const { marker, compatibility } = REDIRECT_RULE_TYPES[type];\n\n if (rule\n && (!isComment(rule))\n && (rule.indexOf(marker) > -1)) {\n const redirectName = getRedirectName(rule, marker);\n\n return redirectName === Object\n .keys(compatibility)\n .find((el) => el === redirectName);\n }\n return false;\n};\n\n/**\n* Checks if the `rule` is **valid** AdGuard redirect resource rule\n* @param {string} rule - rule text\n* @returns {boolean}\n*/\nconst isValidAdgRedirectRule = (rule) => {\n return isRedirectRuleByType(rule, 'VALID_ADG');\n};\n\n/**\n* Checks if the AdGuard redirect `rule` has Ubo analog. Needed for Adg->Ubo conversion\n* @param {string} rule - AdGuard rule text\n* @returns {boolean} - true if the rule can be converted to Ubo\n*/\nconst isAdgRedirectCompatibleWithUbo = (rule) => {\n return isAdgRedirectRule(rule) && isRedirectRuleByType(rule, 'ADG');\n};\n\n/**\n* Checks if the Ubo redirect `rule` has AdGuard analog. Needed for Ubo->Adg conversion\n* @param {string} rule - Ubo rule text\n* @returns {boolean} - true if the rule can be converted to AdGuard\n*/\nconst isUboRedirectCompatibleWithAdg = (rule) => {\n return isRedirectRuleByType(rule, 'UBO');\n};\n\n/**\n* Checks if the Abp redirect `rule` has AdGuard analog. Needed for Abp->Adg conversion\n* @param {string} rule - Abp rule text\n* @returns {boolean} - true if the rule can be converted to AdGuard\n*/\nconst isAbpRedirectCompatibleWithAdg = (rule) => {\n return isRedirectRuleByType(rule, 'ABP');\n};\n\n/**\n * Checks if the rule has specified content type before Adg -> Ubo conversion.\n *\n * Used ONLY for Adg -> Ubo conversion\n * because Ubo redirect rules must contain content type, but Adg and Abp must not.\n *\n * Also source type can not be added automatically because of such valid rules:\n * ! Abp:\n * $rewrite=abp-resource:blank-js,xmlhttprequest\n * ! Adg:\n * $script,redirect=noopvast-2.0\n * $xmlhttprequest,redirect=noopvast-2.0\n *\n * @param {string} rule\n * @returns {boolean}\n */\nconst hasValidContentType = (rule) => {\n if (isRedirectRuleByType(rule, 'ADG')) {\n const ruleModifiers = parseModifiers(rule);\n const sourceType = ruleModifiers\n .find((el) => VALID_SOURCE_TYPES.indexOf(el) > -1);\n\n return sourceType !== undefined;\n }\n return false;\n};\n\nconst validator = {\n UBO_SCRIPTLET_MASK_REG,\n ABP_SCRIPTLET_MASK,\n ABP_SCRIPTLET_EXCEPTION_MASK,\n isComment,\n isAdgScriptletRule,\n isUboScriptletRule,\n isAbpSnippetRule,\n getScriptletByName,\n isValidScriptletName,\n REDIRECT_RULE_TYPES,\n isAdgRedirectRule,\n isValidAdgRedirectRule,\n isAdgRedirectCompatibleWithUbo,\n isUboRedirectCompatibleWithAdg,\n isAbpRedirectCompatibleWithAdg,\n parseModifiers,\n getRedirectName,\n hasValidContentType,\n};\n\nexport default validator;\n","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}\n\nmodule.exports = _toArray;","import {\n getBeforeRegExp,\n substringAfter,\n substringBefore,\n wrapInSingleQuotes,\n getStringInBraces,\n} from './string-utils';\n\nimport validator from './validator';\n\nimport { parseRule } from './parse-rule';\n\nimport * as scriptletList from '../scriptlets/scriptletsList';\n\n/**\n * AdGuard scriptlet rule\n */\nconst ADGUARD_SCRIPTLET_MASK_REG = /#@?%#\\/\\/scriptlet\\(.+\\)/;\n// eslint-disable-next-line no-template-curly-in-string\nconst ADGUARD_SCRIPTLET_TEMPLATE = '${domains}#%#//scriptlet(${args})';\n// eslint-disable-next-line no-template-curly-in-string\nconst ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE = '${domains}#@%#//scriptlet(${args})';\n\n/**\n * uBlock scriptlet rule mask\n */\n// eslint-disable-next-line no-template-curly-in-string\nconst UBO_SCRIPTLET_TEMPLATE = '${domains}##+js(${args})';\n// eslint-disable-next-line no-template-curly-in-string\nconst UBO_SCRIPTLET_EXCEPTION_TEMPLATE = '${domains}#@#+js(${args})';\n\nconst UBO_ALIAS_NAME_MARKER = 'ubo-';\n\n// https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#xhr\nconst UBO_XHR_TYPE = 'xhr';\n\nconst ADG_XHR_TYPE = 'xmlhttprequest';\n\n/**\n * Returns array of strings separated by space which not in quotes\n * @param {string} str\n */\nconst getSentences = (str) => {\n const reg = /'.*?'|\".*?\"|\\S+/g;\n return str.match(reg);\n};\n\n/**\n * Replaces string with data by placeholders\n * @param {string} str\n * @param {Object} data - where keys are placeholders names\n */\nconst replacePlaceholders = (str, data) => {\n return Object.keys(data).reduce((acc, key) => {\n const reg = new RegExp(`\\\\$\\\\{${key}\\\\}`, 'g');\n acc = acc.replace(reg, data[key]);\n return acc;\n }, str);\n};\n\n/**\n * Converts string of UBO scriptlet rule to AdGuard scritlet rule\n * @param {string} rule - UBO scriptlet rule\n * @returns {Array} - array with one AdGuard scriptlet rule\n */\nexport const convertUboScriptletToAdg = (rule) => {\n const domains = getBeforeRegExp(rule, validator.UBO_SCRIPTLET_MASK_REG);\n const mask = rule.match(validator.UBO_SCRIPTLET_MASK_REG)[0];\n let template;\n if (mask.indexOf('@') > -1) {\n template = ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE;\n } else {\n template = ADGUARD_SCRIPTLET_TEMPLATE;\n }\n const args = getStringInBraces(rule)\n .split(/, /g)\n .map((arg, index) => {\n let outputArg;\n if (index === 0) {\n outputArg = (arg.indexOf('.js') > -1) ? `ubo-${arg}` : `ubo-${arg}.js`;\n } else {\n outputArg = arg;\n }\n // for example: dramaserial.xyz##+js(abort-current-inline-script, $, popup)\n if (arg === '$') {\n outputArg = '$$';\n }\n return outputArg;\n })\n .map((arg) => wrapInSingleQuotes(arg))\n .join(', ');\n const adgRule = replacePlaceholders(\n template,\n { domains, args },\n );\n return [adgRule];\n};\n\n/**\n * Convert string of ABP snippet rule to AdGuard scritlet rule\n * @param {string} rule - ABP snippet rule\n * @returns {Array} - array of AdGuard scriptlet rules -\n * one or few items depends on Abp-rule\n */\nexport const convertAbpSnippetToAdg = (rule) => {\n const SEMICOLON_DIVIDER = /;(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/g;\n const mask = rule.indexOf(validator.ABP_SCRIPTLET_MASK) > -1\n ? validator.ABP_SCRIPTLET_MASK\n : validator.ABP_SCRIPTLET_EXCEPTION_MASK;\n const template = mask === validator.ABP_SCRIPTLET_MASK\n ? ADGUARD_SCRIPTLET_TEMPLATE\n : ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE;\n const domains = substringBefore(rule, mask);\n const args = substringAfter(rule, mask);\n\n return args.split(SEMICOLON_DIVIDER)\n .map((args) => getSentences(args)\n .filter((arg) => arg)\n .map((arg, index) => (index === 0 ? `abp-${arg}` : arg))\n .map((arg) => wrapInSingleQuotes(arg))\n .join(', '))\n .map((args) => replacePlaceholders(template, { domains, args }));\n};\n\n/**\n * Converts scriptlet rule to AdGuard one\n * @param {string} rule\n * @returns {Array} - array of AdGuard scriptlet rules -\n * one item for Adg and Ubo or few items for Abp\n */\nexport const convertScriptletToAdg = (rule) => {\n let result;\n if (validator.isUboScriptletRule(rule)) {\n result = convertUboScriptletToAdg(rule);\n } else if (validator.isAbpSnippetRule(rule)) {\n result = convertAbpSnippetToAdg(rule);\n } else if (validator.isAdgScriptletRule(rule) || (validator.isComment(rule))) {\n result = [rule];\n }\n\n return result;\n};\n\n/**\n * Converts UBO scriptlet rule to AdGuard one\n * @param {string} rule - AdGuard scriptlet rule\n * @returns {string} - UBO scriptlet rule\n */\nexport const convertAdgScriptletToUbo = (rule) => {\n let res;\n\n if (validator.isAdgScriptletRule(rule)) {\n const { name: parsedName, args: parsedParams } = parseRule(rule);\n\n // object of name and aliases for the Adg-scriptlet\n const adgScriptletObject = Object\n .keys(scriptletList)\n .map((el) => scriptletList[el])\n .map((s) => {\n const [name, ...aliases] = s.names;\n return { name, aliases };\n })\n .find((el) => (el.name === parsedName\n || el.aliases.indexOf(parsedName) >= 0));\n\n const { aliases } = adgScriptletObject;\n\n if (aliases.length > 0) {\n const uboAlias = adgScriptletObject.aliases\n // eslint-disable-next-line no-restricted-properties\n .find((alias) => alias.includes(UBO_ALIAS_NAME_MARKER));\n\n if (uboAlias) {\n const mask = rule.match(ADGUARD_SCRIPTLET_MASK_REG)[0];\n let template;\n if (mask.indexOf('@') > -1) {\n template = UBO_SCRIPTLET_EXCEPTION_TEMPLATE;\n } else {\n template = UBO_SCRIPTLET_TEMPLATE;\n }\n const domains = getBeforeRegExp(rule, ADGUARD_SCRIPTLET_MASK_REG);\n const uboName = uboAlias\n .replace(UBO_ALIAS_NAME_MARKER, '')\n // '.js' in the Ubo scriptlet name can be omitted\n // https://github.com/gorhill/uBlock/wiki/Resources-Library#general-purpose-scriptlets\n .replace('.js', '');\n\n const args = (parsedParams.length > 0) ? `${uboName}, ${parsedParams.join(', ')}` : uboName;\n\n const uboRule = replacePlaceholders(\n template,\n { domains, args },\n );\n\n res = uboRule;\n }\n }\n }\n\n return res;\n};\n\n/**\n * Validates any scriptlet rule\n * @param {string} input - can be Adguard or Ubo or Abp scriptlet rule\n */\nexport const isValidScriptletRule = (input) => {\n if (!input) {\n return false;\n }\n // ABP 'input' rule may contain more than one snippet\n const rulesArray = convertScriptletToAdg(input);\n\n // checking if each of parsed scriptlets is valid\n // if at least one of them is not valid - whole 'input' rule is not valid too\n const isValid = rulesArray.reduce((acc, rule) => {\n const parsedRule = parseRule(rule);\n return validator.isValidScriptletName(parsedRule.name) && acc;\n }, true);\n\n return isValid;\n};\n\n/**\n * Converts Ubo redirect rule to Adg one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertUboRedirectToAdg = (rule) => {\n const firstPartOfRule = substringBefore(rule, '$');\n const uboModifiers = validator.parseModifiers(rule);\n const adgModifiers = uboModifiers\n .map((el) => {\n if (el.indexOf(validator.REDIRECT_RULE_TYPES.UBO.marker) > -1) {\n const uboName = substringAfter(el, validator.REDIRECT_RULE_TYPES.UBO.marker);\n const adgName = validator.REDIRECT_RULE_TYPES.UBO.compatibility[uboName];\n return `${validator.REDIRECT_RULE_TYPES.ADG.marker}${adgName}`;\n }\n if (el === UBO_XHR_TYPE) {\n return ADG_XHR_TYPE;\n }\n return el;\n })\n .join(',');\n\n return `${firstPartOfRule}$${adgModifiers}`;\n};\n\n/**\n * Converts Abp redirect rule to Adg one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertAbpRedirectToAdg = (rule) => {\n const firstPartOfRule = substringBefore(rule, '$');\n const abpModifiers = validator.parseModifiers(rule);\n const adgModifiers = abpModifiers\n .map((el) => {\n if (el.indexOf(validator.REDIRECT_RULE_TYPES.ABP.marker) > -1) {\n const abpName = substringAfter(el, validator.REDIRECT_RULE_TYPES.ABP.marker);\n const adgName = validator.REDIRECT_RULE_TYPES.ABP.compatibility[abpName];\n return `${validator.REDIRECT_RULE_TYPES.ADG.marker}${adgName}`;\n }\n return el;\n })\n .join(',');\n\n return `${firstPartOfRule}$${adgModifiers}`;\n};\n\n/**\n * Converts redirect rule to AdGuard one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertRedirectToAdg = (rule) => {\n let result;\n if (validator.isUboRedirectCompatibleWithAdg(rule)) {\n result = convertUboRedirectToAdg(rule);\n } else if (validator.isAbpRedirectCompatibleWithAdg(rule)) {\n result = convertAbpRedirectToAdg(rule);\n } else if (validator.isValidAdgRedirectRule(rule)) {\n result = rule;\n }\n\n return result;\n};\n\n/**\n * Converts Adg redirect rule to Ubo one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertAdgRedirectToUbo = (rule) => {\n if (!validator.hasValidContentType(rule)) {\n throw new Error(`Rule is not valid for converting to Ubo. Source type is not specified in the rule: ${rule}`);\n } else {\n const firstPartOfRule = substringBefore(rule, '$');\n const uboModifiers = validator.parseModifiers(rule);\n const adgModifiers = uboModifiers\n .map((el) => {\n if (el.indexOf(validator.REDIRECT_RULE_TYPES.ADG.marker) > -1) {\n const adgName = substringAfter(el, validator.REDIRECT_RULE_TYPES.ADG.marker);\n const uboName = validator.REDIRECT_RULE_TYPES.ADG.compatibility[adgName];\n return `${validator.REDIRECT_RULE_TYPES.UBO.marker}${uboName}`;\n }\n return el;\n })\n .join(',');\n\n return `${firstPartOfRule}$${adgModifiers}`;\n }\n};\n","import {\n hit, noopFunc, noopNull, noopArray,\n} from '../helpers';\n\n/**\n * @redirect google-analytics\n *\n * @description\n * Mocks Google Analytics API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/google-analytics_analytics.js\n *\n * **Example**\n * ```\n * ||google-analytics.com/analytics.js$script,redirect=google-analytics\n * ```\n */\nexport function GoogleAnalytics(source) {\n // eslint-disable-next-line func-names\n const Tracker = function () { }; // constructor\n const proto = Tracker.prototype;\n proto.get = noopFunc;\n proto.set = noopFunc;\n proto.send = noopFunc;\n\n const googleAnalyticsName = window.GoogleAnalyticsObject || 'ga';\n function ga() {\n const len = arguments.length;\n if (len === 0) {\n return;\n }\n // eslint-disable-next-line prefer-rest-params\n const lastArg = arguments[len - 1];\n if (typeof lastArg !== 'object'\n || lastArg === null\n || typeof lastArg.hitCallback !== 'function'\n ) {\n return;\n }\n\n try {\n lastArg.hitCallback();\n // eslint-disable-next-line no-empty\n } catch (ex) { }\n }\n\n ga.create = () => new Tracker();\n ga.getByName = noopNull;\n ga.getAll = noopArray;\n ga.remove = noopFunc;\n ga.loaded = true;\n window[googleAnalyticsName] = ga;\n\n const { dataLayer } = window;\n if (dataLayer instanceof Object\n && dataLayer.hide instanceof Object\n && typeof dataLayer.hide.end === 'function'\n ) {\n dataLayer.hide.end();\n }\n\n hit(source);\n}\n\nGoogleAnalytics.names = [\n 'google-analytics',\n 'ubo-google-analytics_analytics.js',\n 'google-analytics_analytics.js',\n];\n\nGoogleAnalytics.injections = [\n hit,\n noopFunc,\n noopNull,\n noopArray,\n];\n","/* eslint-disable no-underscore-dangle */\nimport { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect google-analytics-ga\n *\n * @description\n * Mocks old Google Analytics API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/google-analytics_ga.js\n *\n * **Example**\n * ```\n * ||google-analytics.com/ga.js$script,redirect=google-analytics-ga\n * ```\n */\nexport function GoogleAnalyticsGa(source) {\n // Gaq constructor\n function Gaq() { }\n\n Gaq.prototype.Na = noopFunc;\n Gaq.prototype.O = noopFunc;\n Gaq.prototype.Sa = noopFunc;\n Gaq.prototype.Ta = noopFunc;\n Gaq.prototype.Va = noopFunc;\n Gaq.prototype._createAsyncTracker = noopFunc;\n Gaq.prototype._getAsyncTracker = noopFunc;\n Gaq.prototype._getPlugin = noopFunc;\n Gaq.prototype.push = (data) => {\n if (typeof data === 'function') {\n data();\n return;\n }\n if (Array.isArray(data) === false) {\n return;\n }\n // https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiDomainDirectory#_gat.GA_Tracker_._link\n if (data[0] === '_link' && typeof data[1] === 'string') {\n window.location.assign(data[1]);\n }\n // https://github.com/gorhill/uBlock/issues/2162\n if (data[0] === '_set' && data[1] === 'hitCallback' && typeof data[2] === 'function') {\n data[2]();\n }\n };\n\n const gaq = new Gaq();\n const asyncTrackers = window._gaq || [];\n if (Array.isArray(asyncTrackers)) {\n while (asyncTrackers[0]) {\n gaq.push(asyncTrackers.shift());\n }\n }\n // eslint-disable-next-line no-multi-assign\n window._gaq = gaq.qf = gaq;\n\n // Gat constructor\n function Gat() { }\n\n // Mock tracker api\n const api = [\n '_addIgnoredOrganic', '_addIgnoredRef', '_addItem', '_addOrganic',\n '_addTrans', '_clearIgnoredOrganic', '_clearIgnoredRef', '_clearOrganic',\n '_cookiePathCopy', '_deleteCustomVar', '_getName', '_setAccount',\n '_getAccount', '_getClientInfo', '_getDetectFlash', '_getDetectTitle',\n '_getLinkerUrl', '_getLocalGifPath', '_getServiceMode', '_getVersion',\n '_getVisitorCustomVar', '_initData', '_link', '_linkByPost',\n '_setAllowAnchor', '_setAllowHash', '_setAllowLinker', '_setCampContentKey',\n '_setCampMediumKey', '_setCampNameKey', '_setCampNOKey', '_setCampSourceKey',\n '_setCampTermKey', '_setCampaignCookieTimeout', '_setCampaignTrack', '_setClientInfo',\n '_setCookiePath', '_setCookiePersistence', '_setCookieTimeout', '_setCustomVar',\n '_setDetectFlash', '_setDetectTitle', '_setDomainName', '_setLocalGifPath',\n '_setLocalRemoteServerMode', '_setLocalServerMode', '_setReferrerOverride', '_setRemoteServerMode',\n '_setSampleRate', '_setSessionTimeout', '_setSiteSpeedSampleRate', '_setSessionCookieTimeout',\n '_setVar', '_setVisitorCookieTimeout', '_trackEvent', '_trackPageLoadTime',\n '_trackPageview', '_trackSocial', '_trackTiming', '_trackTrans',\n '_visitCode',\n ];\n const tracker = api.reduce((res, funcName) => {\n res[funcName] = noopFunc;\n return res;\n }, {});\n tracker._getLinkerUrl = (a) => a;\n\n Gat.prototype._anonymizeIP = noopFunc;\n Gat.prototype._createTracker = noopFunc;\n Gat.prototype._forceSSL = noopFunc;\n Gat.prototype._getPlugin = noopFunc;\n Gat.prototype._getTracker = () => tracker;\n Gat.prototype._getTrackerByName = () => tracker;\n Gat.prototype._getTrackers = noopFunc;\n Gat.prototype.aa = noopFunc;\n Gat.prototype.ab = noopFunc;\n Gat.prototype.hb = noopFunc;\n Gat.prototype.la = noopFunc;\n Gat.prototype.oa = noopFunc;\n Gat.prototype.pa = noopFunc;\n Gat.prototype.u = noopFunc;\n\n const gat = new Gat();\n window._gat = gat;\n\n hit(source);\n}\n\nGoogleAnalyticsGa.names = [\n 'google-analytics-ga',\n 'ubo-google-analytics_ga.js',\n 'google-analytics_ga.js',\n];\n\nGoogleAnalyticsGa.injections = [hit, noopFunc];\n","import { hit } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @redirect googlesyndication-adsbygoogle\n *\n * @description\n * Mocks Google AdSense API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/googlesyndication_adsbygoogle.js\n *\n * **Example**\n * ```\n * ||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=googlesyndication-adsbygoogle\n * ```\n */\n/* eslint-enable max-len */\nexport function GoogleSyndicationAdsByGoogle(source) {\n window.adsbygoogle = window.adsbygoogle || {\n length: 0,\n loaded: true,\n push() {\n this.length += 1;\n },\n };\n const adElems = document.querySelectorAll('.adsbygoogle');\n const css = 'height:1px!important;max-height:1px!important;max-width:1px!important;width:1px!important;';\n const statusAttrName = 'data-adsbygoogle-status';\n const ASWIFT_IFRAME_MARKER = 'aswift_';\n const GOOGLE_ADS_IFRAME_MARKER = 'google_ads_iframe_';\n\n let executed = false;\n for (let i = 0; i < adElems.length; i += 1) {\n const adElemChildNodes = adElems[i].childNodes;\n const childNodesQuantity = adElemChildNodes.length;\n // childNodes of .adsbygoogle can be defined if scriptlet was executed before\n // so we should check are that childNodes exactly defined by us\n // TODO: remake after scriptlets context developing in 1.3\n let areIframesDefined = false;\n if (childNodesQuantity > 0) {\n // it should be only 2 child iframes if scriptlet was executed\n areIframesDefined = childNodesQuantity === 2\n // the first of child nodes should be aswift iframe\n && adElemChildNodes[0].tagName.toLowerCase() === 'iframe'\n && adElemChildNodes[0].id.indexOf(ASWIFT_IFRAME_MARKER) > -1\n // the second of child nodes should be google_ads iframe\n && adElemChildNodes[1].tagName.toLowerCase() === 'iframe'\n && adElemChildNodes[1].id.indexOf(GOOGLE_ADS_IFRAME_MARKER) > -1;\n }\n\n if (!areIframesDefined) {\n // here we do the job if scriptlet has not been executed earlier\n adElems[i].setAttribute(statusAttrName, 'done');\n\n const aswiftIframe = document.createElement('iframe');\n aswiftIframe.id = `${ASWIFT_IFRAME_MARKER}${i + 1}`;\n aswiftIframe.style = css;\n adElems[i].appendChild(aswiftIframe);\n\n const googleadsIframe = document.createElement('iframe');\n googleadsIframe.id = `${GOOGLE_ADS_IFRAME_MARKER}${i + 1}`;\n googleadsIframe.style = css;\n adElems[i].appendChild(googleadsIframe);\n\n executed = true;\n }\n }\n\n if (executed) {\n hit(source);\n }\n}\n\nGoogleSyndicationAdsByGoogle.names = [\n 'googlesyndication-adsbygoogle',\n 'ubo-googlesyndication_adsbygoogle.js',\n 'googlesyndication_adsbygoogle.js',\n];\n\nGoogleSyndicationAdsByGoogle.injections = [\n hit,\n];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect googletagmanager-gtm\n *\n * @description\n * Mocks Google Tag Manager API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/googletagmanager_gtm.js\n *\n * **Example**\n * ```\n * ||googletagmanager.com/gtm.js$script,redirect=googletagmanager-gtm\n * ```\n */\nexport function GoogleTagManagerGtm(source) {\n window.ga = window.ga || noopFunc;\n const { dataLayer, google_optimize } = window; // eslint-disable-line camelcase\n if (dataLayer instanceof Object === false) {\n return;\n }\n\n if (dataLayer.hide instanceof Object && typeof dataLayer.hide.end === 'function') {\n dataLayer.hide.end();\n }\n\n if (typeof dataLayer.push === 'function') {\n dataLayer.push = (data) => {\n if (data instanceof Object && typeof data.eventCallback === 'function') {\n setTimeout(data.eventCallback, 1);\n }\n };\n }\n\n // https://github.com/AdguardTeam/Scriptlets/issues/81\n if (google_optimize instanceof Object && typeof google_optimize.get === 'function') { // eslint-disable-line camelcase\n const googleOptimizeWrapper = { };\n googleOptimizeWrapper.get = noopFunc;\n\n window.google_optimize = googleOptimizeWrapper;\n }\n\n hit(source);\n}\n\nGoogleTagManagerGtm.names = [\n 'googletagmanager-gtm',\n 'ubo-googletagmanager_gtm.js',\n 'googletagmanager_gtm.js',\n];\n\nGoogleTagManagerGtm.injections = [hit, noopFunc];\n","import {\n hit, noopFunc, noopThis, noopNull, noopArray, noopStr,\n} from '../helpers';\n\n/**\n * @redirect googletagservices-gpt\n *\n * @description\n * Mocks Google Publisher Tag API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/googletagservices_gpt.js\n *\n * **Example**\n * ```\n * ||googletagservices.com/tag/js/gpt.js$script,redirect=googletagservices-gpt\n * ```\n */\nexport function GoogleTagServicesGpt(source) {\n const companionAdsService = {\n addEventListener: noopThis,\n enableSyncLoading: noopFunc,\n setRefreshUnfilledSlots: noopFunc,\n };\n const contentService = {\n addEventListener: noopThis,\n setContent: noopFunc,\n };\n function PassbackSlot() { } // constructor\n\n PassbackSlot.prototype.display = noopFunc;\n PassbackSlot.prototype.get = noopNull;\n PassbackSlot.prototype.set = noopThis;\n PassbackSlot.prototype.setClickUrl = noopThis;\n PassbackSlot.prototype.setTagForChildDirectedTreatment = noopThis;\n PassbackSlot.prototype.setTargeting = noopThis;\n PassbackSlot.prototype.updateTargetingFromMap = noopThis;\n\n function SizeMappingBuilder() { } // constructor\n SizeMappingBuilder.prototype.addSize = noopThis;\n SizeMappingBuilder.prototype.build = noopNull;\n\n function Slot() { } // constructor\n Slot.prototype.addService = noopThis;\n Slot.prototype.clearCategoryExclusions = noopThis;\n Slot.prototype.clearTargeting = noopThis;\n Slot.prototype.defineSizeMapping = noopThis;\n Slot.prototype.get = noopNull;\n Slot.prototype.getAdUnitPath = noopArray;\n Slot.prototype.getAttributeKeys = noopArray;\n Slot.prototype.getCategoryExclusions = noopArray;\n Slot.prototype.getDomId = noopStr;\n Slot.prototype.getSlotElementId = noopStr;\n Slot.prototype.getSlotId = noopThis;\n Slot.prototype.getTargeting = noopArray;\n Slot.prototype.getTargetingKeys = noopArray;\n Slot.prototype.set = noopThis;\n Slot.prototype.setCategoryExclusion = noopThis;\n Slot.prototype.setClickUrl = noopThis;\n Slot.prototype.setCollapseEmptyDiv = noopThis;\n Slot.prototype.setTargeting = noopThis;\n\n const pubAdsService = {\n addEventListener: noopThis,\n clear: noopFunc,\n clearCategoryExclusions: noopThis,\n clearTagForChildDirectedTreatment: noopThis,\n clearTargeting: noopThis,\n collapseEmptyDivs: noopFunc,\n defineOutOfPagePassback() { return new PassbackSlot(); },\n definePassback() { return new PassbackSlot(); },\n disableInitialLoad: noopFunc,\n display: noopFunc,\n enableAsyncRendering: noopFunc,\n enableSingleRequest: noopFunc,\n enableSyncRendering: noopFunc,\n enableVideoAds: noopFunc,\n get: noopNull,\n getAttributeKeys: noopArray,\n getTargeting: noopFunc,\n getTargetingKeys: noopArray,\n getSlots: noopArray,\n refresh: noopFunc,\n set: noopThis,\n setCategoryExclusion: noopThis,\n setCentering: noopFunc,\n setCookieOptions: noopThis,\n setForceSafeFrame: noopThis,\n setLocation: noopThis,\n setPublisherProvidedId: noopThis,\n setRequestNonPersonalizedAds: noopThis,\n setSafeFrameConfig: noopThis,\n setTagForChildDirectedTreatment: noopThis,\n setTargeting: noopThis,\n setVideoContent: noopThis,\n updateCorrelator: noopFunc,\n };\n\n const { googletag = {} } = window;\n const { cmd = [] } = googletag;\n\n googletag.apiReady = true;\n googletag.cmd = [];\n googletag.cmd.push = (a) => {\n try {\n a();\n // eslint-disable-next-line no-empty\n } catch (ex) { }\n return 1;\n };\n googletag.companionAds = () => companionAdsService;\n googletag.content = () => contentService;\n googletag.defineOutOfPageSlot = () => new Slot();\n googletag.defineSlot = () => new Slot();\n googletag.destroySlots = noopFunc;\n googletag.disablePublisherConsole = noopFunc;\n googletag.display = noopFunc;\n googletag.enableServices = noopFunc;\n googletag.getVersion = noopStr;\n googletag.pubads = () => pubAdsService;\n googletag.pubadsReady = true;\n googletag.setAdIframeTitle = noopFunc;\n googletag.sizeMapping = () => new SizeMappingBuilder();\n\n window.googletag = googletag;\n while (cmd.length !== 0) {\n googletag.cmd.push(cmd.shift());\n }\n\n hit(source);\n}\n\nGoogleTagServicesGpt.names = [\n 'googletagservices-gpt',\n 'ubo-googletagservices_gpt.js',\n 'googletagservices_gpt.js',\n];\n\nGoogleTagServicesGpt.injections = [\n hit,\n noopFunc,\n noopThis,\n noopNull,\n noopArray,\n noopStr,\n];\n","import { hit } from '../helpers';\n\n/**\n * @redirect scorecardresearch-beacon\n *\n * @description\n * Mocks Scorecard Research API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/scorecardresearch_beacon.js\n *\n * **Example**\n * ```\n * ||sb.scorecardresearch.com/beacon.js$script,redirect=scorecardresearch-beacon\n * ```\n */\nexport function ScoreCardResearchBeacon(source) {\n window.COMSCORE = {\n purge() {\n // eslint-disable-next-line no-underscore-dangle\n window._comscore = [];\n },\n beacon() {},\n };\n hit(source);\n}\n\nScoreCardResearchBeacon.names = [\n 'scorecardresearch-beacon',\n 'ubo-scorecardresearch_beacon.js',\n 'scorecardresearch_beacon.js',\n];\n\nScoreCardResearchBeacon.injections = [\n hit,\n];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect metrika-yandex-tag\n *\n * @description\n * Mocks Yandex Metrika API.\n * https://yandex.ru/support/metrica/objects/method-reference.html\n *\n * **Example**\n * ```\n * ||mc.yandex.ru/metrika/tag.js$script,redirect=metrika-yandex-tag\n * ```\n */\nexport function metrikaYandexTag(source) {\n const asyncCallbackFromOptions = (param, options = {}) => {\n let { callback } = options;\n const { ctx } = options;\n if (typeof callback === 'function') {\n callback = ctx !== undefined ? callback.bind(ctx) : callback;\n setTimeout(() => callback());\n }\n };\n\n const init = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/addfileextension.html\n */\n const addFileExtension = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/extlink.html\n */\n const extLink = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/file.html\n */\n const file = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/get-client-id.html\n * @param {Function} cb\n */\n const getClientID = (cb) => {\n setTimeout(cb(null));\n };\n\n /**\n * https://yandex.ru/support/metrica/objects/hit.html\n */\n const hitFunc = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/notbounce.html\n */\n const notBounce = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/params-method.html\n */\n const params = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/reachgoal.html\n * @param {string} target\n * @param {Object} params\n * @param {Function} callback\n * @param {any} ctx\n */\n const reachGoal = (target, params, callback, ctx) => {\n asyncCallbackFromOptions(null, { callback, ctx });\n };\n\n /**\n * https://yandex.ru/support/metrica/objects/set-user-id.html\n */\n const setUserID = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/user-params.html\n */\n const userParams = noopFunc;\n\n const api = {\n init,\n addFileExtension,\n extLink,\n file,\n getClientID,\n hit: hitFunc,\n notBounce,\n params,\n reachGoal,\n setUserID,\n userParams,\n };\n\n function ym(id, funcName, ...args) {\n return api[funcName] && api[funcName](...args);\n }\n\n window.ym = ym;\n\n hit(source);\n}\n\nmetrikaYandexTag.names = [\n 'metrika-yandex-tag',\n];\n\nmetrikaYandexTag.injections = [hit, noopFunc];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect metrika-yandex-watch\n *\n * @description\n * Mocks the old Yandex Metrika API.\n * https://yandex.ru/support/metrica/objects/_method-reference.html\n *\n * **Example**\n * ```\n * ||mc.yandex.ru/metrika/watch.js$script,redirect=metrika-yandex-watch\n * ```\n */\nexport function metrikaYandexWatch(source) {\n const cbName = 'yandex_metrika_callbacks';\n\n /**\n * Gets callback and its context from options and call it in async way\n * @param {Object} options Yandex Metrika API options\n */\n const asyncCallbackFromOptions = (options = {}) => {\n let { callback } = options;\n const { ctx } = options;\n if (typeof callback === 'function') {\n callback = ctx !== undefined ? callback.bind(ctx) : callback;\n setTimeout(() => callback());\n }\n };\n\n function Metrika() { } // constructor\n\n // Methods without options\n Metrika.prototype.addFileExtension = noopFunc;\n Metrika.prototype.getClientID = noopFunc;\n Metrika.prototype.setUserID = noopFunc;\n Metrika.prototype.userParams = noopFunc;\n\n // Methods with options\n // The order of arguments should be kept in according to API\n Metrika.prototype.extLink = (url, options) => {\n asyncCallbackFromOptions(options);\n };\n Metrika.prototype.file = (url, options) => {\n asyncCallbackFromOptions(options);\n };\n Metrika.prototype.hit = (url, options) => {\n asyncCallbackFromOptions(options);\n };\n Metrika.prototype.reachGoal = (target, params, cb, ctx) => {\n asyncCallbackFromOptions({ callback: cb, ctx });\n };\n Metrika.prototype.notBounce = asyncCallbackFromOptions;\n\n if (window.Ya) {\n window.Ya.Metrika = Metrika;\n } else {\n window.Ya = { Metrika };\n }\n\n if (window[cbName] && Array.isArray(window[cbName])) {\n window[cbName].forEach((func) => {\n if (typeof func === 'function') {\n func();\n }\n });\n }\n\n hit(source);\n}\n\nmetrikaYandexWatch.names = [\n 'metrika-yandex-watch',\n];\n\nmetrikaYandexWatch.injections = [hit, noopFunc];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect amazon-apstag\n *\n * @description\n * Mocks Amazon's apstag.js\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/f842ab6d3c1cf0394f95d27092bf59627262da40/src/web_accessible_resources/amazon_apstag.js\n *\n * **Example**\n * ```\n * ||amazon-adsystem.com/aax2/apstag.js$script,redirect=amazon-apstag\n * ```\n */\nexport function AmazonApstag(source) {\n const apstagWrapper = {\n fetchBids(a, b) {\n if (typeof b === 'function') {\n b([]);\n }\n },\n init: noopFunc,\n setDisplayBids: noopFunc,\n targetingKeys: noopFunc,\n };\n\n window.apstag = apstagWrapper;\n\n hit(source);\n}\n\nAmazonApstag.names = [\n 'amazon-apstag',\n 'ubo-amazon_apstag.js',\n 'amazon_apstag.js',\n];\n\nAmazonApstag.injections = [hit, noopFunc];\n","import {\n attachDependencies,\n addCall,\n wrapInNonameFunc,\n passSourceAndProps,\n} from '../helpers/injector';\n\nimport validator from '../helpers/validator';\n\nimport {\n convertUboRedirectToAdg,\n convertAbpRedirectToAdg,\n convertRedirectToAdg,\n convertAdgRedirectToUbo,\n} from '../helpers/converter';\n\nimport * as redirectsList from './redirectsList';\n\n/**\n * Finds redirect resource by it's name\n * @param {string} name - redirect name\n */\nconst getRedirectByName = (name) => {\n const redirects = Object.keys(redirectsList).map((key) => redirectsList[key]);\n return redirects.find((r) => r.names && r.names.indexOf(name) > -1);\n};\n\n/**\n * @typedef {Object} Source - redirect properties\n * @property {string} name redirect name\n * @property {Array} args Arguments for redirect function\n * @property {'extension'|'test'} [engine] -\n * Defines the final form of redirect string presentation\n * @property {boolean} [verbose] flag to enable printing to console debug information\n */\n\n/**\n * Returns redirect code by param\n * @param {Source} source\n * @returns {string} redirect code\n */\nconst getRedirectCode = (source) => {\n const redirect = getRedirectByName(source.name);\n let result = attachDependencies(redirect);\n result = addCall(redirect, result);\n\n // redirect code for different sources is checked in tests\n // so it should be just a code without any source and props passed\n result = source.engine === 'test'\n ? wrapInNonameFunc(result)\n : passSourceAndProps(source, result);\n\n return result;\n};\n\nexport const redirectsCjs = {\n getCode: getRedirectCode,\n isAdgRedirectRule: validator.isAdgRedirectRule,\n isValidAdgRedirectRule: validator.isValidAdgRedirectRule,\n isAdgRedirectCompatibleWithUbo: validator.isAdgRedirectCompatibleWithUbo,\n isUboRedirectCompatibleWithAdg: validator.isUboRedirectCompatibleWithAdg,\n isAbpRedirectCompatibleWithAdg: validator.isAbpRedirectCompatibleWithAdg,\n convertUboRedirectToAdg,\n convertAbpRedirectToAdg,\n convertRedirectToAdg,\n convertAdgRedirectToUbo,\n};\n","import { redirectsCjs } from '../redirects';\n\nimport {\n attachDependencies,\n addCall,\n passSourceAndProps,\n wrapInNonameFunc,\n} from '../helpers/injector';\n\nimport validator from '../helpers/validator';\n\nimport {\n isValidScriptletRule,\n convertUboScriptletToAdg,\n convertAbpSnippetToAdg,\n convertScriptletToAdg,\n convertAdgScriptletToUbo,\n} from '../helpers/converter';\n\n/**\n * @typedef {Object} Source - scriptlet properties\n * @property {string} name Scriptlet name\n * @property {Array} args Arguments for scriptlet function\n * @property {'extension'|'corelibs'|'test'} engine -\n * Defines the final form of scriptlet string presentation\n * @property {string} [version]\n * @property {boolean} [verbose] flag to enable printing to console debug information\n * @property {string} [ruleText] Source rule text is used for debugging purposes\n * @property {string} [domainName] domain name where scriptlet is applied; for debugging purposes\n */\n\n/**\n * Returns scriptlet code by param\n * @param {Source} source\n * @returns {string} scriptlet code\n */\nfunction getScriptletCode(source) {\n if (!validator.isValidScriptletName(source.name)) {\n return null;\n }\n\n const scriptlet = validator.getScriptletByName(source.name);\n let result = attachDependencies(scriptlet);\n result = addCall(scriptlet, result);\n result = source.engine === 'corelibs' || source.engine === 'test'\n ? wrapInNonameFunc(result)\n : passSourceAndProps(source, result);\n return result;\n}\n\n/**\n * Scriptlets variable\n *\n * @returns {Object} object with methods:\n * `invoke` method receives one argument with `Source` type\n * `validate` method receives one argument with `String` type\n */\nconst scriptletsObject = (() => ({\n invoke: getScriptletCode,\n isValidScriptletName: validator.isValidScriptletName,\n isValidScriptletRule,\n isAdgScriptletRule: validator.isAdgScriptletRule,\n isUboScriptletRule: validator.isUboScriptletRule,\n isAbpSnippetRule: validator.isAbpSnippetRule,\n convertUboToAdg: convertUboScriptletToAdg,\n convertAbpToAdg: convertAbpSnippetToAdg,\n convertScriptletToAdg,\n convertAdgToUbo: convertAdgScriptletToUbo,\n redirects: redirectsCjs,\n}))();\n\nexport default scriptletsObject;\n","import scriptletsObject from './index';\n\n/**\n * Expose scriptlets to global\n */\n// eslint-disable-next-line no-undef\nscriptlets = scriptletsObject;\n"],"names":["randomId","Math","random","toString","substr","setPropertyAccess","object","property","descriptor","currentDescriptor","Object","getOwnPropertyDescriptor","configurable","defineProperty","getPropertyInChain","base","chain","addProp","pos","indexOf","prop","slice","own","undefined","escapeRegExp","str","replace","toRegExp","length","RegExp","escaped","getBeforeRegExp","rx","index","search","substring","startsWith","prefix","endsWith","substringAfter","separator","substringBefore","wrapInSingleQuotes","getStringInBraces","firstIndex","lastIndex","lastIndexOf","createOnErrorHandler","rid","nativeOnError","window","onerror","onError","error","Function","args","apply","noopFunc","noopNull","trueFunc","falseFunc","noopThis","noopArray","noopStr","hit","source","message","verbose","log","console","bind","trace","ruleText","domainName","AG_SCRIPTLET_MARKER","UBO_SCRIPTLET_MARKER","ruleStartIndex","rulePart","LOG_MARKER","e","__debug","observeDOMChanges","callback","observeAttrs","attrsToObserv","throttle","method","delay","wait","savedArgs","wrapper","setTimeout","THROTTLE_DELAY_MS","observer","MutationObserver","callbackWrapper","connect","observe","document","documentElement","childList","subtree","attributes","attributeFilter","disconnect","matchStackTrace","stackRegexp","stackTrace","refinedStackTrace","split","map","line","trim","join","test","attachDependencies","scriptlet","injections","reduce","accum","dep","dependencies","name","addCall","code","passSourceAndProps","sourceString","JSON","stringify","argsString","params","wrapInNonameFunc","_arrayWithHoles","arr","Array","isArray","_iterableToArrayLimit","i","Symbol","iterator","_arr","_n","_d","_e","_i","_s","next","done","push","value","err","_arrayLikeToArray","len","arr2","_unsupportedIterableToArray","o","minLen","arrayLikeToArray","n","prototype","call","constructor","from","_nonIterableRest","TypeError","_slicedToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_defineProperty","obj","key","enumerable","writable","iterateWithTransitions","iterable","transitions","init","state","keys","ADG_SCRIPTLET_MASK","wordSaver","strs","saveSymb","s","saveStr","getAll","parseRule","TRANSITION","OPENED","PARAM","CLOSED","opened","rule","sep","char","transition","symb","Error","param","saver","preIndex","before","abortOnPropertyRead","stack","abort","ReferenceError","setChainPropAccess","owner","chainInfo","setter","a","get","set","names","abortOnPropertyWrite","preventSetTimeout","match","nativeTimeout","nativeIsNaN","Number","isNaN","shouldLog","INVERT_MARKER","isNotMatch","isNotDelay","parseInt","timeoutWrapper","timeout","shouldPrevent","preventSetInterval","nativeInterval","setInterval","intervalWrapper","interval","preventWindowOpen","replacement","nativeOpen","open","openWrapper","result","isProp","propertyPart","propertyName","propertyValue","resObj","abortCurrentInlineScript","searchRegexp","getCurrentScript","currentScript","scripts","getElementsByTagName","ourScript","scriptEl","content","textContent","textContentGetter","Node","HTMLScriptElement","props","propIndex","baseName","currentValue","setConstant","constantValue","parseFloat","abs","canceled","mustCancel","removeCookie","regex","removeCookieFromHost","cookieName","hostName","cookieSpec","domain1","domain2","path","expiration","cookie","rmCookie","forEach","cookieStr","hostParts","location","hostname","addEventListener","preventAddEventListener","eventSearch","funcSearch","eventSearchRegexp","funcSearchRegexp","nativeAddEventListener","EventTarget","addEventListenerWrapper","eventName","funcToCheck","preventBab","nativeSetTimeout","babRegex","signatures","check","tokens","j","token","found","nativeEval","eval","bodyEl","body","style","removeProperty","el","getElementById","parentNode","removeChild","nowebrtc","RTCPeerConnection","webkitRTCPeerConnection","rtcReplacement","config","close","createDataChannel","createOffer","setRemoteDescription","rtc","b","send","logAddEventListener","callbackToLog","logEval","evalWrapper","nativeFunction","FunctionWrapper","create","noeval","preventEvalIf","payload","preventFab","Fab","clearEvent","emitEvent","on","onDetected","onNotDetected","setOption","fab","getSetFab","getsetfab","hasOwnProperty","FuckAdBlock","BlockAdBlock","SniffAdBlock","fuckAdBlock","blockAdBlock","sniffAdBlock","setPopadsDummy","PopAds","popns","defineProperties","preventPopadsNet","throwError","preventAdfly","isDigit","data","handler","encodedURL","evenChars","oddChars","charAt","ii","temp","decodedURL","atob","stop","onbeforeunload","href","val","applyHandler","debugOnPropertyRead","debugOnPropertyWrite","debugCurrentInlineScript","removeAttr","attrs","selector","rmattr","nodes","querySelectorAll","removed","node","attr","removeAttribute","removeClass","classNames","selectors","className","removeClassHandler","Set","foundedNodes","add","elements","element","classList","contains","remove","CLASS_ATTR_NAME","disableNewtabLinks","ev","target","localName","hasAttribute","stopPropagation","preventDefault","adjustSetInterval","boost","nativeIsFinite","isFinite","cb","d","adjustSetTimeout","dirString","times","dir","dirWrapper","jsonPrune","propsToRemove","requiredInitialProps","prunePaths","needlePaths","isPruningNeeded","root","needlePath","details","nestedPropName","pop","nativeParse","parse","parseWrapper","r","ownerObj","preventRequestAnimationFrame","nativeRequestAnimationFrame","requestAnimationFrame","doNotMatch","rafWrapper","logMessage","setCookie","valueToSet","pathToSet","cookieData","encodeURIComponent","JS_RULE_MARKER","COMMENT_MARKER","isComment","UBO_SCRIPTLET_MASK_REG","UBO_SCRIPTLET_MASK_1","UBO_SCRIPTLET_MASK_2","UBO_SCRIPTLET_EXCEPTION_MASK_1","UBO_SCRIPTLET_EXCEPTION_MASK_2","ABP_SCRIPTLET_MASK","ABP_SCRIPTLET_EXCEPTION_MASK","ADG_CSS_MASK_REG","isAdgScriptletRule","isUboScriptletRule","isAbpSnippetRule","getScriptletByName","scriptlets","scriptletsList","find","isValidScriptletName","ADG_UBO_REDIRECT_MARKER","ABP_REDIRECT_MARKER","VALID_SOURCE_TYPES","validAdgRedirects","redirects","filter","adg","objFromEntries","pairs","output","acc","uboToAdgCompatibility","ubo","abpToAdgCompatibility","abp","adgToUboCompatibility","validAdgCompatibility","REDIRECT_RULE_TYPES","VALID_ADG","marker","compatibility","ADG","UBO","ABP","parseModifiers","getRedirectName","ruleModifiers","redirectNamePart","isAdgRedirectRule","MARKER_IN_BASE_PART_MASK","isRedirectRuleByType","type","redirectName","isValidAdgRedirectRule","isAdgRedirectCompatibleWithUbo","isUboRedirectCompatibleWithAdg","isAbpRedirectCompatibleWithAdg","hasValidContentType","sourceType","validator","_iterableToArray","iter","_toArray","iterableToArray","ADGUARD_SCRIPTLET_MASK_REG","ADGUARD_SCRIPTLET_TEMPLATE","ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE","UBO_SCRIPTLET_TEMPLATE","UBO_SCRIPTLET_EXCEPTION_TEMPLATE","UBO_ALIAS_NAME_MARKER","UBO_XHR_TYPE","ADG_XHR_TYPE","getSentences","reg","replacePlaceholders","convertUboScriptletToAdg","domains","mask","template","arg","outputArg","adgRule","convertAbpSnippetToAdg","SEMICOLON_DIVIDER","convertScriptletToAdg","convertAdgScriptletToUbo","res","parsedName","parsedParams","adgScriptletObject","scriptletList","aliases","uboAlias","alias","includes","uboName","uboRule","isValidScriptletRule","input","rulesArray","isValid","parsedRule","convertUboRedirectToAdg","firstPartOfRule","uboModifiers","adgModifiers","adgName","convertAbpRedirectToAdg","abpModifiers","abpName","convertRedirectToAdg","convertAdgRedirectToUbo","GoogleAnalytics","Tracker","proto","googleAnalyticsName","GoogleAnalyticsObject","ga","arguments","lastArg","hitCallback","ex","getByName","loaded","dataLayer","hide","end","GoogleAnalyticsGa","Gaq","Na","O","Sa","Ta","Va","_createAsyncTracker","_getAsyncTracker","_getPlugin","assign","gaq","asyncTrackers","_gaq","shift","qf","Gat","api","tracker","funcName","_getLinkerUrl","_anonymizeIP","_createTracker","_forceSSL","_getTracker","_getTrackerByName","_getTrackers","aa","ab","hb","la","oa","pa","u","gat","_gat","GoogleSyndicationAdsByGoogle","adsbygoogle","adElems","css","statusAttrName","ASWIFT_IFRAME_MARKER","GOOGLE_ADS_IFRAME_MARKER","executed","adElemChildNodes","childNodes","childNodesQuantity","areIframesDefined","tagName","toLowerCase","id","setAttribute","aswiftIframe","createElement","appendChild","googleadsIframe","GoogleTagManagerGtm","google_optimize","eventCallback","googleOptimizeWrapper","GoogleTagServicesGpt","companionAdsService","enableSyncLoading","setRefreshUnfilledSlots","contentService","setContent","PassbackSlot","display","setClickUrl","setTagForChildDirectedTreatment","setTargeting","updateTargetingFromMap","SizeMappingBuilder","addSize","build","Slot","addService","clearCategoryExclusions","clearTargeting","defineSizeMapping","getAdUnitPath","getAttributeKeys","getCategoryExclusions","getDomId","getSlotElementId","getSlotId","getTargeting","getTargetingKeys","setCategoryExclusion","setCollapseEmptyDiv","pubAdsService","clear","clearTagForChildDirectedTreatment","collapseEmptyDivs","defineOutOfPagePassback","definePassback","disableInitialLoad","enableAsyncRendering","enableSingleRequest","enableSyncRendering","enableVideoAds","getSlots","refresh","setCentering","setCookieOptions","setForceSafeFrame","setLocation","setPublisherProvidedId","setRequestNonPersonalizedAds","setSafeFrameConfig","setVideoContent","updateCorrelator","googletag","cmd","apiReady","companionAds","defineOutOfPageSlot","defineSlot","destroySlots","disablePublisherConsole","enableServices","getVersion","pubads","pubadsReady","setAdIframeTitle","sizeMapping","ScoreCardResearchBeacon","COMSCORE","purge","_comscore","beacon","metrikaYandexTag","asyncCallbackFromOptions","options","ctx","addFileExtension","extLink","file","getClientID","hitFunc","notBounce","reachGoal","setUserID","userParams","ym","metrikaYandexWatch","cbName","Metrika","url","Ya","func","AmazonApstag","apstagWrapper","fetchBids","setDisplayBids","targetingKeys","apstag","getRedirectByName","redirectsList","getRedirectCode","redirect","engine","redirectsCjs","getCode","getScriptletCode","scriptletsObject","invoke","convertUboToAdg","convertAbpToAdg","convertAdgToUbo"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 4bc5c84b7..c0a43c228 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,10 @@ "@babel/plugin-transform-regenerator": "^7.7.0", "@babel/plugin-transform-runtime": "^7.6.2", "@babel/preset-env": "^7.9.0", + "@rollup/plugin-babel": "^5.0.4", + "@rollup/plugin-commonjs": "^13.0.0", + "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-node-resolve": "^8.1.0", "dox": "^0.9.0", "eslint": "^6.6.0", "eslint-config-airbnb-base": "^14.0.0", @@ -39,14 +43,10 @@ "husky": "^3.1.0", "node-qunit-puppeteer": "^1.0.16", "qunit": "^2.9.3", - "rollup": "^1.29.1", - "rollup-plugin-babel": "^4.3.3", + "rollup": "^2.21.0", "rollup-plugin-cleanup": "^3.1.1", "rollup-plugin-clear": "^2.0.7", - "rollup-plugin-commonjs": "10.1.0", "rollup-plugin-copy": "^3.1.0", - "rollup-plugin-json": "^4.0.0", - "rollup-plugin-node-resolve": "^5.2.0", "sinon": "^7.5.0" }, "dependencies": { diff --git a/rollup.config.js b/rollup.config.js index b7cdf2342..3cab019f0 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,10 +1,10 @@ -import resolve from 'rollup-plugin-node-resolve'; -import commonjs from 'rollup-plugin-commonjs'; -import babel from 'rollup-plugin-babel'; +import resolve from '@rollup/plugin-node-resolve'; +import commonjs from '@rollup/plugin-commonjs'; +import babel from '@rollup/plugin-babel'; import cleanup from 'rollup-plugin-cleanup'; import copy from 'rollup-plugin-copy'; import clear from 'rollup-plugin-clear'; -import json from 'rollup-plugin-json'; +import json from '@rollup/plugin-json'; import project from './package.json'; @@ -54,8 +54,7 @@ const mainConfig = { namedExports: true, }), babel({ - exclude: 'node_modules/**', - runtimeHelpers: true, + babelHelpers: 'runtime', }), ], }; @@ -86,8 +85,7 @@ const cjsConfig = { namedExports: true, }), babel({ - exclude: 'node_modules/**', - runtimeHelpers: true, + babelHelpers: 'runtime', }), copy({ targets: [ @@ -119,8 +117,7 @@ const redirectsBuild = { namedExports: true, }), babel({ - exclude: 'node_modules/**', - runtimeHelpers: true, + babelHelpers: 'runtime', }), ], }; @@ -151,8 +148,7 @@ const testConfig = { namedExports: true, }), babel({ - exclude: 'node_modules/**', - runtimeHelpers: true, + babelHelpers: 'runtime', }), copy({ targets: [{ @@ -193,8 +189,7 @@ const tmpRedirectsConfig = { namedExports: true, }), babel({ - exclude: 'node_modules/**', - runtimeHelpers: true, + babelHelpers: 'runtime', }), ], }; diff --git a/yarn.lock b/yarn.lock index 24160f113..c55042772 100644 --- a/yarn.lock +++ b/yarn.lock @@ -160,7 +160,7 @@ dependencies: "@babel/types" "^7.10.4" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4": +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.7.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== @@ -861,6 +861,56 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" +"@rollup/plugin-babel@^5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.0.4.tgz#dbfcf86a0561e399579ceb1a534a83c970e76645" + integrity sha512-MBtNoi5gqBEbqy1gE9jZBfPsi10kbuK2CEu9bx53nk1Z3ATRvBOoZ/GsbhXOeVbS76xXi/DeYM+vYX6EGIDv9A== + dependencies: + "@babel/helper-module-imports" "^7.7.4" + "@rollup/pluginutils" "^3.0.8" + +"@rollup/plugin-commonjs@^13.0.0": + version "13.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-13.0.0.tgz#8a1d684ba6848afe8b9e3d85649d4b2f6f7217ec" + integrity sha512-Anxc3qgkAi7peAyesTqGYidG5GRim9jtg8xhmykNaZkImtvjA7Wsqep08D2mYsqw1IF7rA3lYfciLgzUSgRoqw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + commondir "^1.0.1" + estree-walker "^1.0.1" + glob "^7.1.2" + is-reference "^1.1.2" + magic-string "^0.25.2" + resolve "^1.11.0" + +"@rollup/plugin-json@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" + integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + +"@rollup/plugin-node-resolve@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.1.0.tgz#1da5f3d0ccabc8f66f5e3c74462aad76cfd96c47" + integrity sha512-ovq7ZM3JJYUUmEjjO+H8tnUdmQmdQudJB7xruX8LFZ1W2q8jXdPUS6SsIYip8ByOApu4RR7729Am9WhCeCMiHA== + dependencies: + "@rollup/pluginutils" "^3.0.8" + "@types/resolve" "0.0.8" + builtin-modules "^3.1.0" + deep-freeze "^0.0.1" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.14.2" + +"@rollup/pluginutils@^3.0.8": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + "@sinonjs/commons@^1", "@sinonjs/commons@^1.3.0", "@sinonjs/commons@^1.4.0", "@sinonjs/commons@^1.7.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.0.tgz#c8d68821a854c555bba172f3b06959a0039b236d" @@ -900,6 +950,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + "@types/fs-extra@^8.0.1": version "8.1.1" resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.1.tgz#1e49f22d09aa46e19b51c0b013cb63d0d923a068" @@ -908,9 +963,9 @@ "@types/node" "*" "@types/glob@^7.1.1": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.2.tgz#06ca26521353a545d94a0adc74f38a59d232c987" - integrity sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA== + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== dependencies: "@types/minimatch" "*" "@types/node" "*" @@ -926,9 +981,9 @@ integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*": - version "14.0.14" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.14.tgz#24a0b5959f16ac141aeb0c5b3cd7a15b7c64cbce" - integrity sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ== + version "14.0.20" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.20.tgz#0da05cddbc761e1fa98af88a17244c8c1ff37231" + integrity sha512-MRn/NP3dee8yL5QhbSA6riuwkS+UOcsPUMOIOG3KMUQpuor/2TopdRBu8QaaB4fGU+gz/bzyDWt0FtUbeJ8H1A== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -947,7 +1002,7 @@ acorn-jsx@^5.2.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== -acorn@^7.1.0, acorn@^7.1.1: +acorn@^7.1.1: version "7.3.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== @@ -1263,14 +1318,14 @@ camelcase@^5.0.0: integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== caniuse-db@^1.0.30001090: - version "1.0.30001094" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001094.tgz#52b199ae897c2551ac213da4e7e72d32c06c1f31" - integrity sha512-2eh4k7/QnSDJE+/UJI+enGQq9383WGQ+2nvOBrW0KMd17RyODdMXxb64jHTXBTLW7f7eBdB8PbyCJk6ZoiC8fA== + version "1.0.30001097" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001097.tgz#e3268a7f2c01695cf486289161ac9ef9cf623349" + integrity sha512-6zCYv0bxVP6ppQ/XpZsTQZNDC2zUutl8Yes2TDj7LyIDyBhq2N9JbQjcqQo6mAe8IVfszW5pmE0yHvAYD0zEmQ== caniuse-lite@^1.0.30001093: - version "1.0.30001094" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001094.tgz#0b11d02e1cdc201348dbd8e3e57bd9b6ce82b175" - integrity sha512-ufHZNtMaDEuRBpTbqD93tIQnngmJ+oBknjvr0IbFympSdtFpAUFmNv4mVKbb53qltxFx0nK3iy32S9AqkLzUNA== + version "1.0.30001097" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001097.tgz#1129c40c9f5ee3282158da08fd915d301f4a9bd8" + integrity sha512-TeuSleKt/vWXaPkLVFqGDnbweYfq4IaZ6rUugFf3rWY6dlII8StUZ8Ddin0PkADfgYZ4wRqCdO2ORl4Rn5eZIA== chalk@0.4.0: version "0.4.0" @@ -1546,11 +1601,21 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +deep-freeze@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/deep-freeze/-/deep-freeze-0.0.1.tgz#3a0b0005de18672819dfd38cd31f91179c893e84" + integrity sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ= + deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -1637,9 +1702,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.488: - version "1.3.488" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.488.tgz#9226229f5fbc825959210e81e0bb3e63035d1c06" - integrity sha512-NReBdOugu1yl8ly+0VDtiQ6Yw/1sLjnvflWq0gvY1nfUXU2PbA+1XAVuEb7ModnwL/MfUPjby7e4pAFnSHiy6Q== + version "1.3.496" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.496.tgz#3f43d32930481d82ad3663d79658e7c59a58af0b" + integrity sha512-TXY4mwoyowwi4Lsrq9vcTUYBThyc1b2hXaTZI13p8/FRhY2CTaq5lK+DVjhYkKiTLsKt569Xes+0J5JsVXFurQ== emoji-regex@^7.0.1: version "7.0.3" @@ -1892,6 +1957,11 @@ estree-walker@^0.6.1: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -2154,6 +2224,11 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -2206,7 +2281,7 @@ glob-parent@^5.0.0, glob-parent@^5.1.0: dependencies: is-glob "^4.0.1" -glob@^7.0.0, glob@^7.1.3: +glob@^7.0.0, glob@^7.1.2, glob@^7.1.3: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -2842,9 +2917,9 @@ lodash@^3.7.0: integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + version "4.17.19" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" + integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== lolex@^4.2.0: version "4.2.0" @@ -2904,9 +2979,9 @@ markdown-it@~7.0.0: uc.micro "^1.0.1" mdn-browser-compat-data@^1.0.28: - version "1.0.29" - resolved "https://registry.yarnpkg.com/mdn-browser-compat-data/-/mdn-browser-compat-data-1.0.29.tgz#9edddaa953221050c6959a538c993e915e619220" - integrity sha512-R9/8Xi1d9by2Ag5O7Sur3zoe8k/61a+yYeC4f6S5UhbEZb2ICmYNZuprm+2IO9bBcT3Pa2BtEx+xKoX/8v8tPw== + version "1.0.30" + resolved "https://registry.yarnpkg.com/mdn-browser-compat-data/-/mdn-browser-compat-data-1.0.30.tgz#0180ce526da19d5816a067a996531fffb286fc2c" + integrity sha512-LBhVq0Nxu9Qk/MrwP6EmqhKKXfyM9TbgIhvFuPhx6jk4Z2C0CMDCZ0OlhyISV2NvhEI9tYSIjJhUUOISft0JNw== dependencies: extend "3.0.2" @@ -3074,9 +3149,9 @@ node-qunit-puppeteer@^1.0.16: puppeteer "^1.9.0" node-releases@^1.1.58: - version "1.1.58" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935" - integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg== + version "1.1.59" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.59.tgz#4d648330641cec704bff10f8e4fe28e453ab8e8e" + integrity sha512-H3JrdUczbdiwxN5FuJPyCHnGHIFqQ0wWxo+9j1kAXAzqNMAHlo+4I/sYYxpyK0irQ73HgdiyzD32oqQDcU2Osw== node-watch@0.6.1: version "0.6.1" @@ -3376,7 +3451,7 @@ perf-regexes@^1.0.1: resolved "https://registry.yarnpkg.com/perf-regexes/-/perf-regexes-1.0.1.tgz#6da1d62f5a94bf9353a0451bccacf69068b75d0b" integrity sha512-L7MXxUDtqr4PUaLFCDCXBfGV/6KLIuSEccizDI7JxT+c9x1G1v04BQ4+4oag84SHaCdrBgQAIs/Cqn+flwFPng== -picomatch@^2.0.5, picomatch@^2.2.1: +picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== @@ -3656,7 +3731,7 @@ resolve@1.9.0: dependencies: path-parse "^1.0.6" -resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.8.1: +resolve@^1.10.0, resolve@^1.11.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.8.1: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== @@ -3695,14 +3770,6 @@ rimraf@^2.6.1, rimraf@^2.6.2: dependencies: glob "^7.1.3" -rollup-plugin-babel@^4.3.3: - version "4.4.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" - integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - rollup-pluginutils "^2.8.1" - rollup-plugin-cleanup@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/rollup-plugin-cleanup/-/rollup-plugin-cleanup-3.1.1.tgz#d012faab5e212b1c4bfa8144ace70fc6ac7b3315" @@ -3718,17 +3785,6 @@ rollup-plugin-clear@^2.0.7: dependencies: rimraf "^2.6.2" -rollup-plugin-commonjs@10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb" - integrity sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q== - dependencies: - estree-walker "^0.6.1" - is-reference "^1.1.2" - magic-string "^0.25.2" - resolve "^1.11.0" - rollup-pluginutils "^2.8.1" - rollup-plugin-copy@^3.1.0: version "3.3.0" resolved "https://registry.yarnpkg.com/rollup-plugin-copy/-/rollup-plugin-copy-3.3.0.tgz#5ba230047f86b9f703a29288f242948a5580e7b9" @@ -3740,39 +3796,19 @@ rollup-plugin-copy@^3.1.0: globby "10.0.1" is-plain-object "^3.0.0" -rollup-plugin-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz#a18da0a4b30bf5ca1ee76ddb1422afbb84ae2b9e" - integrity sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow== - dependencies: - rollup-pluginutils "^2.5.0" - -rollup-plugin-node-resolve@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" - integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== - dependencies: - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.11.1" - rollup-pluginutils "^2.8.1" - -rollup-pluginutils@^2.3.3, rollup-pluginutils@^2.5.0, rollup-pluginutils@^2.8.1: +rollup-pluginutils@^2.3.3: version "2.8.2" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== dependencies: estree-walker "^0.6.1" -rollup@^1.29.1: - version "1.32.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" - integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== - dependencies: - "@types/estree" "*" - "@types/node" "*" - acorn "^7.1.0" +rollup@^2.21.0: + version "2.21.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.21.0.tgz#d2e114533812043d5c9b7b0a83f1b2a242e4e1d6" + integrity sha512-BEGgy+wSzux7Ycq58pRiWEOBZaXRXTuvzl1gsm7gqmsAHxkWf9nyA5V2LN9fGSHhhDQd0/C13iRzSh4bbIpWZQ== + optionalDependencies: + fsevents "~2.1.2" run-async@^2.4.0: version "2.4.1" From e3388b46bdb17ccaec2134630af413e9c85f96c0 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Fri, 10 Jul 2020 13:58:41 +0300 Subject: [PATCH 12/29] try to fix travis --- .travis.yml | 2 +- build.sh | 4 - package.json | 2 +- yarn.lock | 253 +++++++++++++++++++++++++++++++++++++++------------ 4 files changed, 199 insertions(+), 62 deletions(-) diff --git a/.travis.yml b/.travis.yml index 039cbb92b..33220bb8b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,4 +3,4 @@ node_js: - 10 script: - - bash -e -x ./build.sh + - bash -e ./build.sh diff --git a/build.sh b/build.sh index 41136d088..7f5f05491 100644 --- a/build.sh +++ b/build.sh @@ -11,10 +11,6 @@ yarn test # or if it is pull request from fork $TRAVIS_PULL_REQUEST_SLUG != $TRAVIS_REPO_SLUG if [[ ! $TRAVIS || ($TRAVIS && ( $TRAVIS_PULL_REQUEST_SLUG == "$TRAVIS_REPO_SLUG" || $TRAVIS_PULL_REQUEST_SLUG == "" )) ]]; then - - # Kill browserstack processes - lsof -t -i:8585 || echo "no server processes before browserstack tests" - yarn browserstack fi diff --git a/package.json b/package.json index c0a43c228..e5de4e990 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "dependencies": { "@babel/runtime": "^7.7.2", "axios": "^0.19.0", - "browserstack-runner": "^0.9.1", + "browserstack-runner": "git://github.com/Acconut/browserstack-runner.git#fix_etxtbsy", "dotenv": "^8.2.0", "js-yaml": "^3.13.1" }, diff --git a/yarn.lock b/yarn.lock index c55042772..10dfd076d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1031,6 +1031,16 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.11.0" +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" @@ -1048,7 +1058,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0, ansi-styles@^4.1.0: +ansi-styles@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== @@ -1238,10 +1248,9 @@ browserslist@^4.12.0, browserslist@^4.12.2, browserslist@^4.8.5: escalade "^3.0.1" node-releases "^1.1.58" -browserstack-runner@^0.9.1: - version "0.9.2" - resolved "https://registry.yarnpkg.com/browserstack-runner/-/browserstack-runner-0.9.2.tgz#acacec46a2373a7b0d833c76e5a1503bc0f90901" - integrity sha512-WxosmjgBxbfsI1vxXA6yTX2Qa/FCQKoz7HSpNytU7GgTWv6O4ED/syLsU7CsdHqaobTOj0XGncbHlgYzSzQvbg== +"browserstack-runner@git://github.com/Acconut/browserstack-runner.git#fix_etxtbsy": + version "0.9.0" + resolved "git://github.com/Acconut/browserstack-runner.git#01a7f4467ffede45efc3eda3b5aec25dd0525eab" dependencies: browserstack "1.3.0" chalk "0.4.0" @@ -1251,7 +1260,7 @@ browserstack-runner@^0.9.1: resolve "1.1.7" send "0.16.2" tunnel "0.0.3" - yargs "15.3.1" + yargs "12.0.1" browserstack@1.3.0: version "1.3.0" @@ -1312,10 +1321,10 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= caniuse-db@^1.0.30001090: version "1.0.30001097" @@ -1409,14 +1418,19 @@ cli-width@^3.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= collection-visit@^1.0.0: version "1.0.0" @@ -1552,6 +1566,15 @@ cosmiconfig@^5.2.1: js-yaml "^3.13.1" parse-json "^4.0.0" +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -1591,10 +1614,12 @@ debug@^4.0.1, debug@^4.1.0: dependencies: ms "^2.1.1" -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decamelize@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" + integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== + dependencies: + xregexp "4.0.0" decode-uri-component@^0.2.0: version "0.2.0" @@ -1972,6 +1997,19 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -2244,16 +2282,21 @@ gensync@^1.0.0-beta.1: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== get-stdin@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -2516,6 +2559,11 @@ invariant@^2.2.2, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -2611,6 +2659,13 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -2841,6 +2896,13 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -2940,6 +3002,14 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + magic-string@^0.25.1, magic-string@^0.25.2: version "0.25.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" @@ -2990,6 +3060,13 @@ mdurl@^1.0.1: resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= + dependencies: + mimic-fn "^1.0.0" + merge2@^1.2.3, merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" @@ -3037,6 +3114,11 @@ mime@^2.0.3: resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -3187,6 +3269,11 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" @@ -3295,6 +3382,15 @@ optionator@^0.8.3: type-check "~0.3.2" word-wrap "~1.2.3" +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -3526,6 +3622,11 @@ proxy-from-env@^1.0.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -3699,10 +3800,10 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= resolve-from@^3.0.0: version "3.0.0" @@ -4092,6 +4193,23 @@ statuses@~1.4.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + string-width@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -4101,7 +4219,7 @@ string-width@^3.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0, string-width@^4.2.0: +string-width@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== @@ -4133,6 +4251,20 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" @@ -4412,14 +4544,13 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" wrappy@1: version "1.0.2" @@ -4440,35 +4571,45 @@ ws@^6.1.0: dependencies: async-limiter "~1.0.0" -y18n@^4.0.0: +xregexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" + integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== + +"y18n@^3.2.1 || ^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yargs-parser@^18.1.1: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yargs-parser@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" + camelcase "^4.1.0" -yargs@15.3.1: - version "15.3.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" - integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== +yargs@12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.1.tgz#6432e56123bb4e7c3562115401e98374060261c2" + integrity sha512-B0vRAp1hRX4jgIOWFtjfNjd9OA9RWYZ6tqGA9/I/IrTMsxmKvtWy+ersM+jzpQqbC3YfLzeABPdeTgcJ9eu1qQ== dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" + cliui "^4.0.0" + decamelize "^2.0.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" require-directory "^2.1.1" - require-main-filename "^2.0.0" + require-main-filename "^1.0.1" set-blocking "^2.0.0" - string-width "^4.2.0" + string-width "^2.0.0" which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.1" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^10.1.0" yauzl@^2.10.0: version "2.10.0" From 4047ea4e9f8b01e58a2b940cf845abd6850dfa27 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Fri, 10 Jul 2020 14:17:16 +0300 Subject: [PATCH 13/29] try to fix travis --- package.json | 2 +- yarn.lock | 253 ++++++++++++--------------------------------------- 2 files changed, 57 insertions(+), 198 deletions(-) diff --git a/package.json b/package.json index e5de4e990..ffc32cc3a 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "dependencies": { "@babel/runtime": "^7.7.2", "axios": "^0.19.0", - "browserstack-runner": "git://github.com/Acconut/browserstack-runner.git#fix_etxtbsy", + "browserstack-runner": "^0.9.2", "dotenv": "^8.2.0", "js-yaml": "^3.13.1" }, diff --git a/yarn.lock b/yarn.lock index 10dfd076d..1e9cf8efd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1031,16 +1031,6 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.11.0" -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" @@ -1058,7 +1048,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.1.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== @@ -1248,9 +1238,10 @@ browserslist@^4.12.0, browserslist@^4.12.2, browserslist@^4.8.5: escalade "^3.0.1" node-releases "^1.1.58" -"browserstack-runner@git://github.com/Acconut/browserstack-runner.git#fix_etxtbsy": - version "0.9.0" - resolved "git://github.com/Acconut/browserstack-runner.git#01a7f4467ffede45efc3eda3b5aec25dd0525eab" +browserstack-runner@^0.9.2: + version "0.9.2" + resolved "https://registry.yarnpkg.com/browserstack-runner/-/browserstack-runner-0.9.2.tgz#acacec46a2373a7b0d833c76e5a1503bc0f90901" + integrity sha512-WxosmjgBxbfsI1vxXA6yTX2Qa/FCQKoz7HSpNytU7GgTWv6O4ED/syLsU7CsdHqaobTOj0XGncbHlgYzSzQvbg== dependencies: browserstack "1.3.0" chalk "0.4.0" @@ -1260,7 +1251,7 @@ browserslist@^4.12.0, browserslist@^4.12.2, browserslist@^4.8.5: resolve "1.1.7" send "0.16.2" tunnel "0.0.3" - yargs "12.0.1" + yargs "15.3.1" browserstack@1.3.0: version "1.3.0" @@ -1321,10 +1312,10 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== caniuse-db@^1.0.30001090: version "1.0.30001097" @@ -1418,19 +1409,14 @@ cli-width@^3.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" collection-visit@^1.0.0: version "1.0.0" @@ -1566,15 +1552,6 @@ cosmiconfig@^5.2.1: js-yaml "^3.13.1" parse-json "^4.0.0" -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -1614,12 +1591,10 @@ debug@^4.0.1, debug@^4.1.0: dependencies: ms "^2.1.1" -decamelize@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" - integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== - dependencies: - xregexp "4.0.0" +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= decode-uri-component@^0.2.0: version "0.2.0" @@ -1997,19 +1972,6 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -2282,21 +2244,16 @@ gensync@^1.0.0-beta.1: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-stdin@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -2559,11 +2516,6 @@ invariant@^2.2.2, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -2659,13 +2611,6 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -2896,13 +2841,6 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -3002,14 +2940,6 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - magic-string@^0.25.1, magic-string@^0.25.2: version "0.25.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" @@ -3060,13 +2990,6 @@ mdurl@^1.0.1: resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= - dependencies: - mimic-fn "^1.0.0" - merge2@^1.2.3, merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" @@ -3114,11 +3037,6 @@ mime@^2.0.3: resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -3269,11 +3187,6 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" @@ -3382,15 +3295,6 @@ optionator@^0.8.3: type-check "~0.3.2" word-wrap "~1.2.3" -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -3622,11 +3526,6 @@ proxy-from-env@^1.0.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -3800,10 +3699,10 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== resolve-from@^3.0.0: version "3.0.0" @@ -4193,23 +4092,6 @@ statuses@~1.4.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - string-width@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -4219,7 +4101,7 @@ string-width@^3.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0: +string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== @@ -4251,20 +4133,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" @@ -4544,13 +4412,14 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrappy@1: version "1.0.2" @@ -4571,45 +4440,35 @@ ws@^6.1.0: dependencies: async-limiter "~1.0.0" -xregexp@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" - integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== - -"y18n@^3.2.1 || ^4.0.0": +y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yargs-parser@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== +yargs-parser@^18.1.1: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== dependencies: - camelcase "^4.1.0" + camelcase "^5.0.0" + decamelize "^1.2.0" -yargs@12.0.1: - version "12.0.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.1.tgz#6432e56123bb4e7c3562115401e98374060261c2" - integrity sha512-B0vRAp1hRX4jgIOWFtjfNjd9OA9RWYZ6tqGA9/I/IrTMsxmKvtWy+ersM+jzpQqbC3YfLzeABPdeTgcJ9eu1qQ== +yargs@15.3.1: + version "15.3.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" + integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== dependencies: - cliui "^4.0.0" - decamelize "^2.0.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" require-directory "^2.1.1" - require-main-filename "^1.0.1" + require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^2.0.0" + string-width "^4.2.0" which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^10.1.0" + y18n "^4.0.0" + yargs-parser "^18.1.1" yauzl@^2.10.0: version "2.10.0" From b227c579e105117c537776c172c9e37783f000a9 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Fri, 10 Jul 2020 14:33:16 +0300 Subject: [PATCH 14/29] try to fix travis --- build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/build.sh b/build.sh index 7f5f05491..48b128228 100644 --- a/build.sh +++ b/build.sh @@ -11,6 +11,7 @@ yarn test # or if it is pull request from fork $TRAVIS_PULL_REQUEST_SLUG != $TRAVIS_REPO_SLUG if [[ ! $TRAVIS || ($TRAVIS && ( $TRAVIS_PULL_REQUEST_SLUG == "$TRAVIS_REPO_SLUG" || $TRAVIS_PULL_REQUEST_SLUG == "" )) ]]; then + yarn global install browserstack-runner yarn browserstack fi From 9df7e0dee26fe5c3411302fd016972fd2be4ff26 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Fri, 10 Jul 2020 14:35:12 +0300 Subject: [PATCH 15/29] try to fix travis --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index 48b128228..65d29b33f 100644 --- a/build.sh +++ b/build.sh @@ -11,7 +11,7 @@ yarn test # or if it is pull request from fork $TRAVIS_PULL_REQUEST_SLUG != $TRAVIS_REPO_SLUG if [[ ! $TRAVIS || ($TRAVIS && ( $TRAVIS_PULL_REQUEST_SLUG == "$TRAVIS_REPO_SLUG" || $TRAVIS_PULL_REQUEST_SLUG == "" )) ]]; then - yarn global install browserstack-runner + yarn global add browserstack-runner yarn browserstack fi From fae5df013d4f4700e7bb51c9c5678622e3def8e6 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Fri, 10 Jul 2020 14:38:55 +0300 Subject: [PATCH 16/29] try to fix travis --- build.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build.sh b/build.sh index 65d29b33f..6d96434eb 100644 --- a/build.sh +++ b/build.sh @@ -5,14 +5,13 @@ set -x yarn install -yarn test - # we do not run browserstack if environment has $TRAVIS variable # or if it is pull request from fork $TRAVIS_PULL_REQUEST_SLUG != $TRAVIS_REPO_SLUG if [[ ! $TRAVIS || ($TRAVIS && ( $TRAVIS_PULL_REQUEST_SLUG == "$TRAVIS_REPO_SLUG" || $TRAVIS_PULL_REQUEST_SLUG == "" )) ]]; then - yarn global add browserstack-runner yarn browserstack +else + yarn test fi yarn corelibs From 852b6e8a7c67573fc96715ea47166de159cf1a98 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Fri, 10 Jul 2020 20:26:51 +0300 Subject: [PATCH 17/29] try to fix travis --- build.sh | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.sh b/build.sh index 6d96434eb..7f5f05491 100644 --- a/build.sh +++ b/build.sh @@ -5,13 +5,13 @@ set -x yarn install +yarn test + # we do not run browserstack if environment has $TRAVIS variable # or if it is pull request from fork $TRAVIS_PULL_REQUEST_SLUG != $TRAVIS_REPO_SLUG if [[ ! $TRAVIS || ($TRAVIS && ( $TRAVIS_PULL_REQUEST_SLUG == "$TRAVIS_REPO_SLUG" || $TRAVIS_PULL_REQUEST_SLUG == "" )) ]]; then yarn browserstack -else - yarn test fi yarn corelibs diff --git a/package.json b/package.json index ffc32cc3a..800cd60c7 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "build-test": "rollup -c --environment UI_TEST", "test": "yarn build-test && node tests/index.js", "test-watch": "rollup -c --watch --environment UI_TEST", - "browserstack": "yarn build-test && node browserstack.js", + "browserstack": "node browserstack.js", "gui-test": "yarn build-test && open http://localhost:8585 && node ./tests/server.js", "lint": "eslint .", "wiki:build-docs": "node scripts/build-docs.js", From 38c478dfc5ce686d99342903faa6231aa5b0ead7 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Fri, 10 Jul 2020 20:49:27 +0300 Subject: [PATCH 18/29] try to fix travis --- rollup.config.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rollup.config.js b/rollup.config.js index 3cab019f0..cd04e9f4a 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -54,6 +54,7 @@ const mainConfig = { namedExports: true, }), babel({ + exclude: 'node_modules/**', babelHelpers: 'runtime', }), ], @@ -85,6 +86,7 @@ const cjsConfig = { namedExports: true, }), babel({ + exclude: 'node_modules/**', babelHelpers: 'runtime', }), copy({ @@ -117,6 +119,7 @@ const redirectsBuild = { namedExports: true, }), babel({ + exclude: 'node_modules/**', babelHelpers: 'runtime', }), ], @@ -148,6 +151,7 @@ const testConfig = { namedExports: true, }), babel({ + exclude: 'node_modules/**', babelHelpers: 'runtime', }), copy({ @@ -189,6 +193,7 @@ const tmpRedirectsConfig = { namedExports: true, }), babel({ + exclude: 'node_modules/**', babelHelpers: 'runtime', }), ], From f09ee31666944e1731c2ebd38b9b998ddf224949 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Fri, 10 Jul 2020 21:08:12 +0300 Subject: [PATCH 19/29] disable cache --- .travis.yml | 2 ++ package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 33220bb8b..1b964c04f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,5 +2,7 @@ language: node_js node_js: - 10 +cache: false + script: - bash -e ./build.sh diff --git a/package.json b/package.json index 800cd60c7..ffc32cc3a 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "build-test": "rollup -c --environment UI_TEST", "test": "yarn build-test && node tests/index.js", "test-watch": "rollup -c --watch --environment UI_TEST", - "browserstack": "node browserstack.js", + "browserstack": "yarn build-test && node browserstack.js", "gui-test": "yarn build-test && open http://localhost:8585 && node ./tests/server.js", "lint": "eslint .", "wiki:build-docs": "node scripts/build-docs.js", From d4a0e8ccfe46846e90b28cb41bd7916f58b7b6a8 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Fri, 10 Jul 2020 21:48:02 +0300 Subject: [PATCH 20/29] upgrade yarn --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 1e9cf8efd..cb8f74ad9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -981,9 +981,9 @@ integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*": - version "14.0.20" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.20.tgz#0da05cddbc761e1fa98af88a17244c8c1ff37231" - integrity sha512-MRn/NP3dee8yL5QhbSA6riuwkS+UOcsPUMOIOG3KMUQpuor/2TopdRBu8QaaB4fGU+gz/bzyDWt0FtUbeJ8H1A== + version "14.0.22" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.22.tgz#23ea4d88189cec7d58f9e6b66f786b215eb61bdc" + integrity sha512-emeGcJvdiZ4Z3ohbmw93E/64jRzUHAItSHt8nF7M4TGgQTiWqFVGB8KNpLGFmUHmHLvjvBgFwVlqNcq+VuGv9g== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -2491,9 +2491,9 @@ inherits@2.0.3: integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= inquirer@^7.0.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.0.tgz#aa3e7cb0c18a410c3c16cdd2bc9dcbe83c4d333e" - integrity sha512-K+LZp6L/6eE5swqIcVXrxl21aGDU4S50gKH0/d96OMQnSBCyGyZl/oZhbkVmdp5sBoINHd4xZvFSARh2dk6DWA== + version "7.3.1" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.1.tgz#ac6aba1abdfdd5ad34e7069370411edba17f6439" + integrity sha512-/+vOpHQHhoh90Znev8BXiuw1TDQ7IDxWsQnFafUEoK5+4uN5Eoz1p+3GqOj/NtzEi9VzWKQcV9Bm+i8moxedsA== dependencies: ansi-escapes "^4.2.1" chalk "^4.1.0" @@ -2501,7 +2501,7 @@ inquirer@^7.0.0: cli-width "^3.0.0" external-editor "^3.0.3" figures "^3.0.0" - lodash "^4.17.15" + lodash "^4.17.16" mute-stream "0.0.8" run-async "^2.4.0" rxjs "^6.6.0" @@ -2916,7 +2916,7 @@ lodash@^3.7.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= -lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15: +lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.16: version "4.17.19" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== From 02ded91c24de02c4c2a194afe82d6b18a42e07ed Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Thu, 3 Sep 2020 18:11:47 +0300 Subject: [PATCH 21/29] try to export Redirects class --- dist/cjs/scriptletsCjs.js | 3984 ++++++++++++++++++++++++++++++++- dist/redirects.js | 2 +- dist/redirects.yml | 2 +- dist/scriptlets.corelibs.json | 2 +- dist/scriptlets.js | 3984 ++++++++++++++++++++++++++++++++- package.json | 2 +- src/scriptlets/index.js | 3 + 7 files changed, 7971 insertions(+), 8 deletions(-) diff --git a/dist/cjs/scriptletsCjs.js b/dist/cjs/scriptletsCjs.js index 8d6bdb1c6..a78dce6a1 100644 --- a/dist/cjs/scriptletsCjs.js +++ b/dist/cjs/scriptletsCjs.js @@ -1,7 +1,7 @@ /** * AdGuard Scriptlets - * Version 1.3.2 + * Version 1.3.3 */ /** @@ -5246,6 +5246,3985 @@ var redirectsCjs = { convertAdgRedirectToUbo: convertAdgRedirectToUbo }; +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +var classCallCheck = _classCallCheck; + +function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } +} + +function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; +} + +var createClass = _createClass; + +function isNothing(subject) { + return typeof subject === 'undefined' || subject === null; +} + +function isObject(subject) { + return typeof subject === 'object' && subject !== null; +} + +function toArray$1(sequence) { + if (Array.isArray(sequence)) return sequence;else if (isNothing(sequence)) return []; + return [sequence]; +} + +function extend(target, source) { + var index, length, key, sourceKeys; + + if (source) { + sourceKeys = Object.keys(source); + + for (index = 0, length = sourceKeys.length; index < length; index += 1) { + key = sourceKeys[index]; + target[key] = source[key]; + } + } + + return target; +} + +function repeat(string, count) { + var result = '', + cycle; + + for (cycle = 0; cycle < count; cycle += 1) { + result += string; + } + + return result; +} + +function isNegativeZero(number) { + return number === 0 && Number.NEGATIVE_INFINITY === 1 / number; +} + +var isNothing_1 = isNothing; +var isObject_1 = isObject; +var toArray_1 = toArray$1; +var repeat_1 = repeat; +var isNegativeZero_1 = isNegativeZero; +var extend_1 = extend; +var common = { + isNothing: isNothing_1, + isObject: isObject_1, + toArray: toArray_1, + repeat: repeat_1, + isNegativeZero: isNegativeZero_1, + extend: extend_1 +}; + +// YAML error class. http://stackoverflow.com/questions/8458984 + +function YAMLException(reason, mark) { + // Super constructor + Error.call(this); + this.name = 'YAMLException'; + this.reason = reason; + this.mark = mark; + this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : ''); // Include stack trace in error object + + if (Error.captureStackTrace) { + // Chrome and NodeJS + Error.captureStackTrace(this, this.constructor); + } else { + // FF, IE 10+ and Safari 6+. Fallback for others + this.stack = new Error().stack || ''; + } +} // Inherit from Error + + +YAMLException.prototype = Object.create(Error.prototype); +YAMLException.prototype.constructor = YAMLException; + +YAMLException.prototype.toString = function toString(compact) { + var result = this.name + ': '; + result += this.reason || '(unknown reason)'; + + if (!compact && this.mark) { + result += ' ' + this.mark.toString(); + } + + return result; +}; + +var exception = YAMLException; + +function Mark(name, buffer, position, line, column) { + this.name = name; + this.buffer = buffer; + this.position = position; + this.line = line; + this.column = column; +} + +Mark.prototype.getSnippet = function getSnippet(indent, maxLength) { + var head, start, tail, end, snippet; + if (!this.buffer) return null; + indent = indent || 4; + maxLength = maxLength || 75; + head = ''; + start = this.position; + + while (start > 0 && "\0\r\n\x85\u2028\u2029".indexOf(this.buffer.charAt(start - 1)) === -1) { + start -= 1; + + if (this.position - start > maxLength / 2 - 1) { + head = ' ... '; + start += 5; + break; + } + } + + tail = ''; + end = this.position; + + while (end < this.buffer.length && "\0\r\n\x85\u2028\u2029".indexOf(this.buffer.charAt(end)) === -1) { + end += 1; + + if (end - this.position > maxLength / 2 - 1) { + tail = ' ... '; + end -= 5; + break; + } + } + + snippet = this.buffer.slice(start, end); + return common.repeat(' ', indent) + head + snippet + tail + '\n' + common.repeat(' ', indent + this.position - start + head.length) + '^'; +}; + +Mark.prototype.toString = function toString(compact) { + var snippet, + where = ''; + + if (this.name) { + where += 'in "' + this.name + '" '; + } + + where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1); + + if (!compact) { + snippet = this.getSnippet(); + + if (snippet) { + where += ':\n' + snippet; + } + } + + return where; +}; + +var mark = Mark; + +var TYPE_CONSTRUCTOR_OPTIONS = ['kind', 'resolve', 'construct', 'instanceOf', 'predicate', 'represent', 'defaultStyle', 'styleAliases']; +var YAML_NODE_KINDS = ['scalar', 'sequence', 'mapping']; + +function compileStyleAliases(map) { + var result = {}; + + if (map !== null) { + Object.keys(map).forEach(function (style) { + map[style].forEach(function (alias) { + result[String(alias)] = style; + }); + }); + } + + return result; +} + +function Type(tag, options) { + options = options || {}; + Object.keys(options).forEach(function (name) { + if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { + throw new exception('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); + } + }); // TODO: Add tag format check. + + this.tag = tag; + this.kind = options['kind'] || null; + + this.resolve = options['resolve'] || function () { + return true; + }; + + this.construct = options['construct'] || function (data) { + return data; + }; + + this.instanceOf = options['instanceOf'] || null; + this.predicate = options['predicate'] || null; + this.represent = options['represent'] || null; + this.defaultStyle = options['defaultStyle'] || null; + this.styleAliases = compileStyleAliases(options['styleAliases'] || null); + + if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { + throw new exception('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); + } +} + +var type = Type; + +/*eslint-disable max-len*/ + + +function compileList(schema, name, result) { + var exclude = []; + schema.include.forEach(function (includedSchema) { + result = compileList(includedSchema, name, result); + }); + schema[name].forEach(function (currentType) { + result.forEach(function (previousType, previousIndex) { + if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) { + exclude.push(previousIndex); + } + }); + result.push(currentType); + }); + return result.filter(function (type, index) { + return exclude.indexOf(index) === -1; + }); +} + +function compileMap() +/* lists... */ +{ + var result = { + scalar: {}, + sequence: {}, + mapping: {}, + fallback: {} + }, + index, + length; + + function collectType(type) { + result[type.kind][type.tag] = result['fallback'][type.tag] = type; + } + + for (index = 0, length = arguments.length; index < length; index += 1) { + arguments[index].forEach(collectType); + } + + return result; +} + +function Schema(definition) { + this.include = definition.include || []; + this.implicit = definition.implicit || []; + this.explicit = definition.explicit || []; + this.implicit.forEach(function (type) { + if (type.loadKind && type.loadKind !== 'scalar') { + throw new exception('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); + } + }); + this.compiledImplicit = compileList(this, 'implicit', []); + this.compiledExplicit = compileList(this, 'explicit', []); + this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit); +} + +Schema.DEFAULT = null; + +Schema.create = function createSchema() { + var schemas, types; + + switch (arguments.length) { + case 1: + schemas = Schema.DEFAULT; + types = arguments[0]; + break; + + case 2: + schemas = arguments[0]; + types = arguments[1]; + break; + + default: + throw new exception('Wrong number of arguments for Schema.create function'); + } + + schemas = common.toArray(schemas); + types = common.toArray(types); + + if (!schemas.every(function (schema) { + return schema instanceof Schema; + })) { + throw new exception('Specified list of super schemas (or a single Schema object) contains a non-Schema object.'); + } + + if (!types.every(function (type$1) { + return type$1 instanceof type; + })) { + throw new exception('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + } + + return new Schema({ + include: schemas, + explicit: types + }); +}; + +var schema = Schema; + +var str = new type('tag:yaml.org,2002:str', { + kind: 'scalar', + construct: function construct(data) { + return data !== null ? data : ''; + } +}); + +var seq = new type('tag:yaml.org,2002:seq', { + kind: 'sequence', + construct: function construct(data) { + return data !== null ? data : []; + } +}); + +var map = new type('tag:yaml.org,2002:map', { + kind: 'mapping', + construct: function construct(data) { + return data !== null ? data : {}; + } +}); + +var failsafe = new schema({ + explicit: [str, seq, map] +}); + +function resolveYamlNull(data) { + if (data === null) return true; + var max = data.length; + return max === 1 && data === '~' || max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'); +} + +function constructYamlNull() { + return null; +} + +function isNull(object) { + return object === null; +} + +var _null = new type('tag:yaml.org,2002:null', { + kind: 'scalar', + resolve: resolveYamlNull, + construct: constructYamlNull, + predicate: isNull, + represent: { + canonical: function canonical() { + return '~'; + }, + lowercase: function lowercase() { + return 'null'; + }, + uppercase: function uppercase() { + return 'NULL'; + }, + camelcase: function camelcase() { + return 'Null'; + } + }, + defaultStyle: 'lowercase' +}); + +function resolveYamlBoolean(data) { + if (data === null) return false; + var max = data.length; + return max === 4 && (data === 'true' || data === 'True' || data === 'TRUE') || max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'); +} + +function constructYamlBoolean(data) { + return data === 'true' || data === 'True' || data === 'TRUE'; +} + +function isBoolean(object) { + return Object.prototype.toString.call(object) === '[object Boolean]'; +} + +var bool = new type('tag:yaml.org,2002:bool', { + kind: 'scalar', + resolve: resolveYamlBoolean, + construct: constructYamlBoolean, + predicate: isBoolean, + represent: { + lowercase: function lowercase(object) { + return object ? 'true' : 'false'; + }, + uppercase: function uppercase(object) { + return object ? 'TRUE' : 'FALSE'; + }, + camelcase: function camelcase(object) { + return object ? 'True' : 'False'; + } + }, + defaultStyle: 'lowercase' +}); + +function isHexCode(c) { + return 0x30 + /* 0 */ + <= c && c <= 0x39 + /* 9 */ + || 0x41 + /* A */ + <= c && c <= 0x46 + /* F */ + || 0x61 + /* a */ + <= c && c <= 0x66 + /* f */ + ; +} + +function isOctCode(c) { + return 0x30 + /* 0 */ + <= c && c <= 0x37 + /* 7 */ + ; +} + +function isDecCode(c) { + return 0x30 + /* 0 */ + <= c && c <= 0x39 + /* 9 */ + ; +} + +function resolveYamlInteger(data) { + if (data === null) return false; + var max = data.length, + index = 0, + hasDigits = false, + ch; + if (!max) return false; + ch = data[index]; // sign + + if (ch === '-' || ch === '+') { + ch = data[++index]; + } + + if (ch === '0') { + // 0 + if (index + 1 === max) return true; + ch = data[++index]; // base 2, base 8, base 16 + + if (ch === 'b') { + // base 2 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (ch !== '0' && ch !== '1') return false; + hasDigits = true; + } + + return hasDigits && ch !== '_'; + } + + if (ch === 'x') { + // base 16 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isHexCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + + return hasDigits && ch !== '_'; + } // base 8 + + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isOctCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + + return hasDigits && ch !== '_'; + } // base 10 (except 0) or base 60 + // value should not start with `_`; + + + if (ch === '_') return false; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (ch === ':') break; + + if (!isDecCode(data.charCodeAt(index))) { + return false; + } + + hasDigits = true; + } // Should have digits and should not end with `_` + + + if (!hasDigits || ch === '_') return false; // if !base60 - done; + + if (ch !== ':') return true; // base60 almost not used, no needs to optimize + + return /^(:[0-5]?[0-9])+$/.test(data.slice(index)); +} + +function constructYamlInteger(data) { + var value = data, + sign = 1, + ch, + base, + digits = []; + + if (value.indexOf('_') !== -1) { + value = value.replace(/_/g, ''); + } + + ch = value[0]; + + if (ch === '-' || ch === '+') { + if (ch === '-') sign = -1; + value = value.slice(1); + ch = value[0]; + } + + if (value === '0') return 0; + + if (ch === '0') { + if (value[1] === 'b') return sign * parseInt(value.slice(2), 2); + if (value[1] === 'x') return sign * parseInt(value, 16); + return sign * parseInt(value, 8); + } + + if (value.indexOf(':') !== -1) { + value.split(':').forEach(function (v) { + digits.unshift(parseInt(v, 10)); + }); + value = 0; + base = 1; + digits.forEach(function (d) { + value += d * base; + base *= 60; + }); + return sign * value; + } + + return sign * parseInt(value, 10); +} + +function isInteger(object) { + return Object.prototype.toString.call(object) === '[object Number]' && object % 1 === 0 && !common.isNegativeZero(object); +} + +var int_1 = new type('tag:yaml.org,2002:int', { + kind: 'scalar', + resolve: resolveYamlInteger, + construct: constructYamlInteger, + predicate: isInteger, + represent: { + binary: function binary(obj) { + return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); + }, + octal: function octal(obj) { + return obj >= 0 ? '0' + obj.toString(8) : '-0' + obj.toString(8).slice(1); + }, + decimal: function decimal(obj) { + return obj.toString(10); + }, + + /* eslint-disable max-len */ + hexadecimal: function hexadecimal(obj) { + return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); + } + }, + defaultStyle: 'decimal', + styleAliases: { + binary: [2, 'bin'], + octal: [8, 'oct'], + decimal: [10, 'dec'], + hexadecimal: [16, 'hex'] + } +}); + +var YAML_FLOAT_PATTERN = new RegExp( // 2.5e4, 2.5 and integers +'^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' + // .2e4, .2 +// special case, seems not from spec +'|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' + // 20:59 +'|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*' + // .inf +'|[-+]?\\.(?:inf|Inf|INF)' + // .nan +'|\\.(?:nan|NaN|NAN))$'); + +function resolveYamlFloat(data) { + if (data === null) return false; + + if (!YAML_FLOAT_PATTERN.test(data) || // Quick hack to not allow integers end with `_` + // Probably should update regexp & check speed + data[data.length - 1] === '_') { + return false; + } + + return true; +} + +function constructYamlFloat(data) { + var value, sign, base, digits; + value = data.replace(/_/g, '').toLowerCase(); + sign = value[0] === '-' ? -1 : 1; + digits = []; + + if ('+-'.indexOf(value[0]) >= 0) { + value = value.slice(1); + } + + if (value === '.inf') { + return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; + } else if (value === '.nan') { + return NaN; + } else if (value.indexOf(':') >= 0) { + value.split(':').forEach(function (v) { + digits.unshift(parseFloat(v, 10)); + }); + value = 0.0; + base = 1; + digits.forEach(function (d) { + value += d * base; + base *= 60; + }); + return sign * value; + } + + return sign * parseFloat(value, 10); +} + +var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; + +function representYamlFloat(object, style) { + var res; + + if (isNaN(object)) { + switch (style) { + case 'lowercase': + return '.nan'; + + case 'uppercase': + return '.NAN'; + + case 'camelcase': + return '.NaN'; + } + } else if (Number.POSITIVE_INFINITY === object) { + switch (style) { + case 'lowercase': + return '.inf'; + + case 'uppercase': + return '.INF'; + + case 'camelcase': + return '.Inf'; + } + } else if (Number.NEGATIVE_INFINITY === object) { + switch (style) { + case 'lowercase': + return '-.inf'; + + case 'uppercase': + return '-.INF'; + + case 'camelcase': + return '-.Inf'; + } + } else if (common.isNegativeZero(object)) { + return '-0.0'; + } + + res = object.toString(10); // JS stringifier can build scientific format without dots: 5e-100, + // while YAML requres dot: 5.e-100. Fix it with simple hack + + return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res; +} + +function isFloat(object) { + return Object.prototype.toString.call(object) === '[object Number]' && (object % 1 !== 0 || common.isNegativeZero(object)); +} + +var float_1 = new type('tag:yaml.org,2002:float', { + kind: 'scalar', + resolve: resolveYamlFloat, + construct: constructYamlFloat, + predicate: isFloat, + represent: representYamlFloat, + defaultStyle: 'lowercase' +}); + +var json = new schema({ + include: [failsafe], + implicit: [_null, bool, int_1, float_1] +}); + +var core = new schema({ + include: [json] +}); + +var YAML_DATE_REGEXP = new RegExp('^([0-9][0-9][0-9][0-9])' + // [1] year +'-([0-9][0-9])' + // [2] month +'-([0-9][0-9])$'); // [3] day + +var YAML_TIMESTAMP_REGEXP = new RegExp('^([0-9][0-9][0-9][0-9])' + // [1] year +'-([0-9][0-9]?)' + // [2] month +'-([0-9][0-9]?)' + // [3] day +'(?:[Tt]|[ \\t]+)' + // ... +'([0-9][0-9]?)' + // [4] hour +':([0-9][0-9])' + // [5] minute +':([0-9][0-9])' + // [6] second +'(?:\\.([0-9]*))?' + // [7] fraction +'(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour +'(?::([0-9][0-9]))?))?$'); // [11] tz_minute + +function resolveYamlTimestamp(data) { + if (data === null) return false; + if (YAML_DATE_REGEXP.exec(data) !== null) return true; + if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; + return false; +} + +function constructYamlTimestamp(data) { + var match, + year, + month, + day, + hour, + minute, + second, + fraction = 0, + delta = null, + tz_hour, + tz_minute, + date; + match = YAML_DATE_REGEXP.exec(data); + if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); + if (match === null) throw new Error('Date resolve error'); // match: [1] year [2] month [3] day + + year = +match[1]; + month = +match[2] - 1; // JS month starts with 0 + + day = +match[3]; + + if (!match[4]) { + // no hour + return new Date(Date.UTC(year, month, day)); + } // match: [4] hour [5] minute [6] second [7] fraction + + + hour = +match[4]; + minute = +match[5]; + second = +match[6]; + + if (match[7]) { + fraction = match[7].slice(0, 3); + + while (fraction.length < 3) { + // milli-seconds + fraction += '0'; + } + + fraction = +fraction; + } // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute + + + if (match[9]) { + tz_hour = +match[10]; + tz_minute = +(match[11] || 0); + delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds + + if (match[9] === '-') delta = -delta; + } + + date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); + if (delta) date.setTime(date.getTime() - delta); + return date; +} + +function representYamlTimestamp(object +/*, style*/ +) { + return object.toISOString(); +} + +var timestamp = new type('tag:yaml.org,2002:timestamp', { + kind: 'scalar', + resolve: resolveYamlTimestamp, + construct: constructYamlTimestamp, + instanceOf: Date, + represent: representYamlTimestamp +}); + +function resolveYamlMerge(data) { + return data === '<<' || data === null; +} + +var merge = new type('tag:yaml.org,2002:merge', { + kind: 'scalar', + resolve: resolveYamlMerge +}); + +function commonjsRequire () { + throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs'); +} + +/*eslint-disable no-bitwise*/ + + +var NodeBuffer; + +try { + // A trick for browserified version, to not include `Buffer` shim + var _require = commonjsRequire; + NodeBuffer = _require('buffer').Buffer; +} catch (__) {} // [ 64, 65, 66 ] -> [ padding, CR, LF ] + + +var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r'; + +function resolveYamlBinary(data) { + if (data === null) return false; + var code, + idx, + bitlen = 0, + max = data.length, + map = BASE64_MAP; // Convert one by one. + + for (idx = 0; idx < max; idx++) { + code = map.indexOf(data.charAt(idx)); // Skip CR/LF + + if (code > 64) continue; // Fail on illegal characters + + if (code < 0) return false; + bitlen += 6; + } // If there are any bits left, source was corrupted + + + return bitlen % 8 === 0; +} + +function constructYamlBinary(data) { + var idx, + tailbits, + input = data.replace(/[\r\n=]/g, ''), + // remove CR/LF & padding to simplify scan + max = input.length, + map = BASE64_MAP, + bits = 0, + result = []; // Collect by 6*4 bits (3 bytes) + + for (idx = 0; idx < max; idx++) { + if (idx % 4 === 0 && idx) { + result.push(bits >> 16 & 0xFF); + result.push(bits >> 8 & 0xFF); + result.push(bits & 0xFF); + } + + bits = bits << 6 | map.indexOf(input.charAt(idx)); + } // Dump tail + + + tailbits = max % 4 * 6; + + if (tailbits === 0) { + result.push(bits >> 16 & 0xFF); + result.push(bits >> 8 & 0xFF); + result.push(bits & 0xFF); + } else if (tailbits === 18) { + result.push(bits >> 10 & 0xFF); + result.push(bits >> 2 & 0xFF); + } else if (tailbits === 12) { + result.push(bits >> 4 & 0xFF); + } // Wrap into Buffer for NodeJS and leave Array for browser + + + if (NodeBuffer) { + // Support node 6.+ Buffer API when available + return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result); + } + + return result; +} + +function representYamlBinary(object +/*, style*/ +) { + var result = '', + bits = 0, + idx, + tail, + max = object.length, + map = BASE64_MAP; // Convert every three bytes to 4 ASCII characters. + + for (idx = 0; idx < max; idx++) { + if (idx % 3 === 0 && idx) { + result += map[bits >> 18 & 0x3F]; + result += map[bits >> 12 & 0x3F]; + result += map[bits >> 6 & 0x3F]; + result += map[bits & 0x3F]; + } + + bits = (bits << 8) + object[idx]; + } // Dump tail + + + tail = max % 3; + + if (tail === 0) { + result += map[bits >> 18 & 0x3F]; + result += map[bits >> 12 & 0x3F]; + result += map[bits >> 6 & 0x3F]; + result += map[bits & 0x3F]; + } else if (tail === 2) { + result += map[bits >> 10 & 0x3F]; + result += map[bits >> 4 & 0x3F]; + result += map[bits << 2 & 0x3F]; + result += map[64]; + } else if (tail === 1) { + result += map[bits >> 2 & 0x3F]; + result += map[bits << 4 & 0x3F]; + result += map[64]; + result += map[64]; + } + + return result; +} + +function isBinary(object) { + return NodeBuffer && NodeBuffer.isBuffer(object); +} + +var binary = new type('tag:yaml.org,2002:binary', { + kind: 'scalar', + resolve: resolveYamlBinary, + construct: constructYamlBinary, + predicate: isBinary, + represent: representYamlBinary +}); + +var _hasOwnProperty = Object.prototype.hasOwnProperty; +var _toString = Object.prototype.toString; + +function resolveYamlOmap(data) { + if (data === null) return true; + var objectKeys = [], + index, + length, + pair, + pairKey, + pairHasKey, + object = data; + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + pairHasKey = false; + if (_toString.call(pair) !== '[object Object]') return false; + + for (pairKey in pair) { + if (_hasOwnProperty.call(pair, pairKey)) { + if (!pairHasKey) pairHasKey = true;else return false; + } + } + + if (!pairHasKey) return false; + if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);else return false; + } + + return true; +} + +function constructYamlOmap(data) { + return data !== null ? data : []; +} + +var omap = new type('tag:yaml.org,2002:omap', { + kind: 'sequence', + resolve: resolveYamlOmap, + construct: constructYamlOmap +}); + +var _toString$1 = Object.prototype.toString; + +function resolveYamlPairs(data) { + if (data === null) return true; + var index, + length, + pair, + keys, + result, + object = data; + result = new Array(object.length); + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + if (_toString$1.call(pair) !== '[object Object]') return false; + keys = Object.keys(pair); + if (keys.length !== 1) return false; + result[index] = [keys[0], pair[keys[0]]]; + } + + return true; +} + +function constructYamlPairs(data) { + if (data === null) return []; + var index, + length, + pair, + keys, + result, + object = data; + result = new Array(object.length); + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + keys = Object.keys(pair); + result[index] = [keys[0], pair[keys[0]]]; + } + + return result; +} + +var pairs = new type('tag:yaml.org,2002:pairs', { + kind: 'sequence', + resolve: resolveYamlPairs, + construct: constructYamlPairs +}); + +var _hasOwnProperty$1 = Object.prototype.hasOwnProperty; + +function resolveYamlSet(data) { + if (data === null) return true; + var key, + object = data; + + for (key in object) { + if (_hasOwnProperty$1.call(object, key)) { + if (object[key] !== null) return false; + } + } + + return true; +} + +function constructYamlSet(data) { + return data !== null ? data : {}; +} + +var set = new type('tag:yaml.org,2002:set', { + kind: 'mapping', + resolve: resolveYamlSet, + construct: constructYamlSet +}); + +var default_safe = new schema({ + include: [core], + implicit: [timestamp, merge], + explicit: [binary, omap, pairs, set] +}); + +function resolveJavascriptUndefined() { + return true; +} + +function constructJavascriptUndefined() { + /*eslint-disable no-undefined*/ + return undefined; +} + +function representJavascriptUndefined() { + return ''; +} + +function isUndefined(object) { + return typeof object === 'undefined'; +} + +var _undefined = new type('tag:yaml.org,2002:js/undefined', { + kind: 'scalar', + resolve: resolveJavascriptUndefined, + construct: constructJavascriptUndefined, + predicate: isUndefined, + represent: representJavascriptUndefined +}); + +function resolveJavascriptRegExp(data) { + if (data === null) return false; + if (data.length === 0) return false; + var regexp = data, + tail = /\/([gim]*)$/.exec(data), + modifiers = ''; // if regexp starts with '/' it can have modifiers and must be properly closed + // `/foo/gim` - modifiers tail can be maximum 3 chars + + if (regexp[0] === '/') { + if (tail) modifiers = tail[1]; + if (modifiers.length > 3) return false; // if expression starts with /, is should be properly terminated + + if (regexp[regexp.length - modifiers.length - 1] !== '/') return false; + } + + return true; +} + +function constructJavascriptRegExp(data) { + var regexp = data, + tail = /\/([gim]*)$/.exec(data), + modifiers = ''; // `/foo/gim` - tail can be maximum 4 chars + + if (regexp[0] === '/') { + if (tail) modifiers = tail[1]; + regexp = regexp.slice(1, regexp.length - modifiers.length - 1); + } + + return new RegExp(regexp, modifiers); +} + +function representJavascriptRegExp(object +/*, style*/ +) { + var result = '/' + object.source + '/'; + if (object.global) result += 'g'; + if (object.multiline) result += 'm'; + if (object.ignoreCase) result += 'i'; + return result; +} + +function isRegExp(object) { + return Object.prototype.toString.call(object) === '[object RegExp]'; +} + +var regexp = new type('tag:yaml.org,2002:js/regexp', { + kind: 'scalar', + resolve: resolveJavascriptRegExp, + construct: constructJavascriptRegExp, + predicate: isRegExp, + represent: representJavascriptRegExp +}); + +var esprima; // Browserified version does not have esprima +// +// 1. For node.js just require module as deps +// 2. For browser try to require mudule via external AMD system. +// If not found - try to fallback to window.esprima. If not +// found too - then fail to parse. +// + +try { + // workaround to exclude package from browserify list. + var _require$1 = commonjsRequire; + esprima = _require$1('esprima'); +} catch (_) { + /* eslint-disable no-redeclare */ + + /* global window */ + if (typeof window !== 'undefined') esprima = window.esprima; +} + +function resolveJavascriptFunction(data) { + if (data === null) return false; + + try { + var source = '(' + data + ')', + ast = esprima.parse(source, { + range: true + }); + + if (ast.type !== 'Program' || ast.body.length !== 1 || ast.body[0].type !== 'ExpressionStatement' || ast.body[0].expression.type !== 'ArrowFunctionExpression' && ast.body[0].expression.type !== 'FunctionExpression') { + return false; + } + + return true; + } catch (err) { + return false; + } +} + +function constructJavascriptFunction(data) { + /*jslint evil:true*/ + var source = '(' + data + ')', + ast = esprima.parse(source, { + range: true + }), + params = [], + body; + + if (ast.type !== 'Program' || ast.body.length !== 1 || ast.body[0].type !== 'ExpressionStatement' || ast.body[0].expression.type !== 'ArrowFunctionExpression' && ast.body[0].expression.type !== 'FunctionExpression') { + throw new Error('Failed to resolve function'); + } + + ast.body[0].expression.params.forEach(function (param) { + params.push(param.name); + }); + body = ast.body[0].expression.body.range; // Esprima's ranges include the first '{' and the last '}' characters on + // function expressions. So cut them out. + + if (ast.body[0].expression.body.type === 'BlockStatement') { + /*eslint-disable no-new-func*/ + return new Function(params, source.slice(body[0] + 1, body[1] - 1)); + } // ES6 arrow functions can omit the BlockStatement. In that case, just return + // the body. + + /*eslint-disable no-new-func*/ + + + return new Function(params, 'return ' + source.slice(body[0], body[1])); +} + +function representJavascriptFunction(object +/*, style*/ +) { + return object.toString(); +} + +function isFunction(object) { + return Object.prototype.toString.call(object) === '[object Function]'; +} + +var _function = new type('tag:yaml.org,2002:js/function', { + kind: 'scalar', + resolve: resolveJavascriptFunction, + construct: constructJavascriptFunction, + predicate: isFunction, + represent: representJavascriptFunction +}); + +var default_full = schema.DEFAULT = new schema({ + include: [default_safe], + explicit: [_undefined, regexp, _function] +}); + +/*eslint-disable max-len,no-use-before-define*/ + + +var _hasOwnProperty$2 = Object.prototype.hasOwnProperty; +var CONTEXT_FLOW_IN = 1; +var CONTEXT_FLOW_OUT = 2; +var CONTEXT_BLOCK_IN = 3; +var CONTEXT_BLOCK_OUT = 4; +var CHOMPING_CLIP = 1; +var CHOMPING_STRIP = 2; +var CHOMPING_KEEP = 3; +var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; +var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; +var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; +var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; +var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; + +function _class(obj) { + return Object.prototype.toString.call(obj); +} + +function is_EOL(c) { + return c === 0x0A + /* LF */ + || c === 0x0D + /* CR */ + ; +} + +function is_WHITE_SPACE(c) { + return c === 0x09 + /* Tab */ + || c === 0x20 + /* Space */ + ; +} + +function is_WS_OR_EOL(c) { + return c === 0x09 + /* Tab */ + || c === 0x20 + /* Space */ + || c === 0x0A + /* LF */ + || c === 0x0D + /* CR */ + ; +} + +function is_FLOW_INDICATOR(c) { + return c === 0x2C + /* , */ + || c === 0x5B + /* [ */ + || c === 0x5D + /* ] */ + || c === 0x7B + /* { */ + || c === 0x7D + /* } */ + ; +} + +function fromHexCode(c) { + var lc; + + if (0x30 + /* 0 */ + <= c && c <= 0x39 + /* 9 */ + ) { + return c - 0x30; + } + /*eslint-disable no-bitwise*/ + + + lc = c | 0x20; + + if (0x61 + /* a */ + <= lc && lc <= 0x66 + /* f */ + ) { + return lc - 0x61 + 10; + } + + return -1; +} + +function escapedHexLen(c) { + if (c === 0x78 + /* x */ + ) { + return 2; + } + + if (c === 0x75 + /* u */ + ) { + return 4; + } + + if (c === 0x55 + /* U */ + ) { + return 8; + } + + return 0; +} + +function fromDecimalCode(c) { + if (0x30 + /* 0 */ + <= c && c <= 0x39 + /* 9 */ + ) { + return c - 0x30; + } + + return -1; +} + +function simpleEscapeSequence(c) { + /* eslint-disable indent */ + return c === 0x30 + /* 0 */ + ? '\x00' : c === 0x61 + /* a */ + ? '\x07' : c === 0x62 + /* b */ + ? '\x08' : c === 0x74 + /* t */ + ? '\x09' : c === 0x09 + /* Tab */ + ? '\x09' : c === 0x6E + /* n */ + ? '\x0A' : c === 0x76 + /* v */ + ? '\x0B' : c === 0x66 + /* f */ + ? '\x0C' : c === 0x72 + /* r */ + ? '\x0D' : c === 0x65 + /* e */ + ? '\x1B' : c === 0x20 + /* Space */ + ? ' ' : c === 0x22 + /* " */ + ? '\x22' : c === 0x2F + /* / */ + ? '/' : c === 0x5C + /* \ */ + ? '\x5C' : c === 0x4E + /* N */ + ? '\x85' : c === 0x5F + /* _ */ + ? '\xA0' : c === 0x4C + /* L */ + ? "\u2028" : c === 0x50 + /* P */ + ? "\u2029" : ''; +} + +function charFromCodepoint(c) { + if (c <= 0xFFFF) { + return String.fromCharCode(c); + } // Encode UTF-16 surrogate pair + // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF + + + return String.fromCharCode((c - 0x010000 >> 10) + 0xD800, (c - 0x010000 & 0x03FF) + 0xDC00); +} + +var simpleEscapeCheck = new Array(256); // integer, for fast access + +var simpleEscapeMap = new Array(256); + +for (var i = 0; i < 256; i++) { + simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; + simpleEscapeMap[i] = simpleEscapeSequence(i); +} + +function State(input, options) { + this.input = input; + this.filename = options['filename'] || null; + this.schema = options['schema'] || default_full; + this.onWarning = options['onWarning'] || null; + this.legacy = options['legacy'] || false; + this.json = options['json'] || false; + this.listener = options['listener'] || null; + this.implicitTypes = this.schema.compiledImplicit; + this.typeMap = this.schema.compiledTypeMap; + this.length = input.length; + this.position = 0; + this.line = 0; + this.lineStart = 0; + this.lineIndent = 0; + this.documents = []; + /* + this.version; + this.checkLineBreaks; + this.tagMap; + this.anchorMap; + this.tag; + this.anchor; + this.kind; + this.result;*/ +} + +function generateError(state, message) { + return new exception(message, new mark(state.filename, state.input, state.position, state.line, state.position - state.lineStart)); +} + +function throwError(state, message) { + throw generateError(state, message); +} + +function throwWarning(state, message) { + if (state.onWarning) { + state.onWarning.call(null, generateError(state, message)); + } +} + +var directiveHandlers = { + YAML: function handleYamlDirective(state, name, args) { + var match, major, minor; + + if (state.version !== null) { + throwError(state, 'duplication of %YAML directive'); + } + + if (args.length !== 1) { + throwError(state, 'YAML directive accepts exactly one argument'); + } + + match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); + + if (match === null) { + throwError(state, 'ill-formed argument of the YAML directive'); + } + + major = parseInt(match[1], 10); + minor = parseInt(match[2], 10); + + if (major !== 1) { + throwError(state, 'unacceptable YAML version of the document'); + } + + state.version = args[0]; + state.checkLineBreaks = minor < 2; + + if (minor !== 1 && minor !== 2) { + throwWarning(state, 'unsupported YAML version of the document'); + } + }, + TAG: function handleTagDirective(state, name, args) { + var handle, prefix; + + if (args.length !== 2) { + throwError(state, 'TAG directive accepts exactly two arguments'); + } + + handle = args[0]; + prefix = args[1]; + + if (!PATTERN_TAG_HANDLE.test(handle)) { + throwError(state, 'ill-formed tag handle (first argument) of the TAG directive'); + } + + if (_hasOwnProperty$2.call(state.tagMap, handle)) { + throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); + } + + if (!PATTERN_TAG_URI.test(prefix)) { + throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive'); + } + + state.tagMap[handle] = prefix; + } +}; + +function captureSegment(state, start, end, checkJson) { + var _position, _length, _character, _result; + + if (start < end) { + _result = state.input.slice(start, end); + + if (checkJson) { + for (_position = 0, _length = _result.length; _position < _length; _position += 1) { + _character = _result.charCodeAt(_position); + + if (!(_character === 0x09 || 0x20 <= _character && _character <= 0x10FFFF)) { + throwError(state, 'expected valid JSON character'); + } + } + } else if (PATTERN_NON_PRINTABLE.test(_result)) { + throwError(state, 'the stream contains non-printable characters'); + } + + state.result += _result; + } +} + +function mergeMappings(state, destination, source, overridableKeys) { + var sourceKeys, key, index, quantity; + + if (!common.isObject(source)) { + throwError(state, 'cannot merge mappings; the provided source object is unacceptable'); + } + + sourceKeys = Object.keys(source); + + for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { + key = sourceKeys[index]; + + if (!_hasOwnProperty$2.call(destination, key)) { + destination[key] = source[key]; + overridableKeys[key] = true; + } + } +} + +function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) { + var index, quantity; // The output is a plain object here, so keys can only be strings. + // We need to convert keyNode to a string, but doing so can hang the process + // (deeply nested arrays that explode exponentially using aliases). + + if (Array.isArray(keyNode)) { + keyNode = Array.prototype.slice.call(keyNode); + + for (index = 0, quantity = keyNode.length; index < quantity; index += 1) { + if (Array.isArray(keyNode[index])) { + throwError(state, 'nested arrays are not supported inside keys'); + } + + if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') { + keyNode[index] = '[object Object]'; + } + } + } // Avoid code execution in load() via toString property + // (still use its own toString for arrays, timestamps, + // and whatever user schema extensions happen to have @@toStringTag) + + + if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') { + keyNode = '[object Object]'; + } + + keyNode = String(keyNode); + + if (_result === null) { + _result = {}; + } + + if (keyTag === 'tag:yaml.org,2002:merge') { + if (Array.isArray(valueNode)) { + for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { + mergeMappings(state, _result, valueNode[index], overridableKeys); + } + } else { + mergeMappings(state, _result, valueNode, overridableKeys); + } + } else { + if (!state.json && !_hasOwnProperty$2.call(overridableKeys, keyNode) && _hasOwnProperty$2.call(_result, keyNode)) { + state.line = startLine || state.line; + state.position = startPos || state.position; + throwError(state, 'duplicated mapping key'); + } + + _result[keyNode] = valueNode; + delete overridableKeys[keyNode]; + } + + return _result; +} + +function readLineBreak(state) { + var ch; + ch = state.input.charCodeAt(state.position); + + if (ch === 0x0A + /* LF */ + ) { + state.position++; + } else if (ch === 0x0D + /* CR */ + ) { + state.position++; + + if (state.input.charCodeAt(state.position) === 0x0A + /* LF */ + ) { + state.position++; + } + } else { + throwError(state, 'a line break is expected'); + } + + state.line += 1; + state.lineStart = state.position; +} + +function skipSeparationSpace(state, allowComments, checkIndent) { + var lineBreaks = 0, + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (allowComments && ch === 0x23 + /* # */ + ) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0x0A + /* LF */ + && ch !== 0x0D + /* CR */ + && ch !== 0); + } + + if (is_EOL(ch)) { + readLineBreak(state); + ch = state.input.charCodeAt(state.position); + lineBreaks++; + state.lineIndent = 0; + + while (ch === 0x20 + /* Space */ + ) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + } else { + break; + } + } + + if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { + throwWarning(state, 'deficient indentation'); + } + + return lineBreaks; +} + +function testDocumentSeparator(state) { + var _position = state.position, + ch; + ch = state.input.charCodeAt(_position); // Condition state.position === state.lineStart is tested + // in parent on each call, for efficiency. No needs to test here again. + + if ((ch === 0x2D + /* - */ + || ch === 0x2E + /* . */ + ) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) { + _position += 3; + ch = state.input.charCodeAt(_position); + + if (ch === 0 || is_WS_OR_EOL(ch)) { + return true; + } + } + + return false; +} + +function writeFoldedLines(state, count) { + if (count === 1) { + state.result += ' '; + } else if (count > 1) { + state.result += common.repeat('\n', count - 1); + } +} + +function readPlainScalar(state, nodeIndent, withinFlowCollection) { + var preceding, + following, + captureStart, + captureEnd, + hasPendingContent, + _line, + _lineStart, + _lineIndent, + _kind = state.kind, + _result = state.result, + ch; + + ch = state.input.charCodeAt(state.position); + + if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || ch === 0x23 + /* # */ + || ch === 0x26 + /* & */ + || ch === 0x2A + /* * */ + || ch === 0x21 + /* ! */ + || ch === 0x7C + /* | */ + || ch === 0x3E + /* > */ + || ch === 0x27 + /* ' */ + || ch === 0x22 + /* " */ + || ch === 0x25 + /* % */ + || ch === 0x40 + /* @ */ + || ch === 0x60 + /* ` */ + ) { + return false; + } + + if (ch === 0x3F + /* ? */ + || ch === 0x2D + /* - */ + ) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) { + return false; + } + } + + state.kind = 'scalar'; + state.result = ''; + captureStart = captureEnd = state.position; + hasPendingContent = false; + + while (ch !== 0) { + if (ch === 0x3A + /* : */ + ) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) { + break; + } + } else if (ch === 0x23 + /* # */ + ) { + preceding = state.input.charCodeAt(state.position - 1); + + if (is_WS_OR_EOL(preceding)) { + break; + } + } else if (state.position === state.lineStart && testDocumentSeparator(state) || withinFlowCollection && is_FLOW_INDICATOR(ch)) { + break; + } else if (is_EOL(ch)) { + _line = state.line; + _lineStart = state.lineStart; + _lineIndent = state.lineIndent; + skipSeparationSpace(state, false, -1); + + if (state.lineIndent >= nodeIndent) { + hasPendingContent = true; + ch = state.input.charCodeAt(state.position); + continue; + } else { + state.position = captureEnd; + state.line = _line; + state.lineStart = _lineStart; + state.lineIndent = _lineIndent; + break; + } + } + + if (hasPendingContent) { + captureSegment(state, captureStart, captureEnd, false); + writeFoldedLines(state, state.line - _line); + captureStart = captureEnd = state.position; + hasPendingContent = false; + } + + if (!is_WHITE_SPACE(ch)) { + captureEnd = state.position + 1; + } + + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, captureEnd, false); + + if (state.result) { + return true; + } + + state.kind = _kind; + state.result = _result; + return false; +} + +function readSingleQuotedScalar(state, nodeIndent) { + var ch, captureStart, captureEnd; + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x27 + /* ' */ + ) { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x27 + /* ' */ + ) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x27 + /* ' */ + ) { + captureStart = state.position; + state.position++; + captureEnd = state.position; + } else { + return true; + } + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a single quoted scalar'); + } else { + state.position++; + captureEnd = state.position; + } + } + + throwError(state, 'unexpected end of the stream within a single quoted scalar'); +} + +function readDoubleQuotedScalar(state, nodeIndent) { + var captureStart, captureEnd, hexLength, hexResult, tmp, ch; + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x22 + /* " */ + ) { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x22 + /* " */ + ) { + captureSegment(state, captureStart, state.position, true); + state.position++; + return true; + } else if (ch === 0x5C + /* \ */ + ) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (is_EOL(ch)) { + skipSeparationSpace(state, false, nodeIndent); // TODO: rework to inline fn with no type cast? + } else if (ch < 256 && simpleEscapeCheck[ch]) { + state.result += simpleEscapeMap[ch]; + state.position++; + } else if ((tmp = escapedHexLen(ch)) > 0) { + hexLength = tmp; + hexResult = 0; + + for (; hexLength > 0; hexLength--) { + ch = state.input.charCodeAt(++state.position); + + if ((tmp = fromHexCode(ch)) >= 0) { + hexResult = (hexResult << 4) + tmp; + } else { + throwError(state, 'expected hexadecimal character'); + } + } + + state.result += charFromCodepoint(hexResult); + state.position++; + } else { + throwError(state, 'unknown escape sequence'); + } + + captureStart = captureEnd = state.position; + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a double quoted scalar'); + } else { + state.position++; + captureEnd = state.position; + } + } + + throwError(state, 'unexpected end of the stream within a double quoted scalar'); +} + +function readFlowCollection(state, nodeIndent) { + var readNext = true, + _line, + _tag = state.tag, + _result, + _anchor = state.anchor, + following, + terminator, + isPair, + isExplicitPair, + isMapping, + overridableKeys = {}, + keyNode, + keyTag, + valueNode, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x5B + /* [ */ + ) { + terminator = 0x5D; + /* ] */ + + isMapping = false; + _result = []; + } else if (ch === 0x7B + /* { */ + ) { + terminator = 0x7D; + /* } */ + + isMapping = true; + _result = {}; + } else { + return false; + } + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(++state.position); + + while (ch !== 0) { + skipSeparationSpace(state, true, nodeIndent); + ch = state.input.charCodeAt(state.position); + + if (ch === terminator) { + state.position++; + state.tag = _tag; + state.anchor = _anchor; + state.kind = isMapping ? 'mapping' : 'sequence'; + state.result = _result; + return true; + } else if (!readNext) { + throwError(state, 'missed comma between flow collection entries'); + } + + keyTag = keyNode = valueNode = null; + isPair = isExplicitPair = false; + + if (ch === 0x3F + /* ? */ + ) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following)) { + isPair = isExplicitPair = true; + state.position++; + skipSeparationSpace(state, true, nodeIndent); + } + } + + _line = state.line; + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + keyTag = state.tag; + keyNode = state.result; + skipSeparationSpace(state, true, nodeIndent); + ch = state.input.charCodeAt(state.position); + + if ((isExplicitPair || state.line === _line) && ch === 0x3A + /* : */ + ) { + isPair = true; + ch = state.input.charCodeAt(++state.position); + skipSeparationSpace(state, true, nodeIndent); + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + valueNode = state.result; + } + + if (isMapping) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode); + } else if (isPair) { + _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode)); + } else { + _result.push(keyNode); + } + + skipSeparationSpace(state, true, nodeIndent); + ch = state.input.charCodeAt(state.position); + + if (ch === 0x2C + /* , */ + ) { + readNext = true; + ch = state.input.charCodeAt(++state.position); + } else { + readNext = false; + } + } + + throwError(state, 'unexpected end of the stream within a flow collection'); +} + +function readBlockScalar(state, nodeIndent) { + var captureStart, + folding, + chomping = CHOMPING_CLIP, + didReadContent = false, + detectedIndent = false, + textIndent = nodeIndent, + emptyLines = 0, + atMoreIndented = false, + tmp, + ch; + ch = state.input.charCodeAt(state.position); + + if (ch === 0x7C + /* | */ + ) { + folding = false; + } else if (ch === 0x3E + /* > */ + ) { + folding = true; + } else { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + + while (ch !== 0) { + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x2B + /* + */ + || ch === 0x2D + /* - */ + ) { + if (CHOMPING_CLIP === chomping) { + chomping = ch === 0x2B + /* + */ + ? CHOMPING_KEEP : CHOMPING_STRIP; + } else { + throwError(state, 'repeat of a chomping mode identifier'); + } + } else if ((tmp = fromDecimalCode(ch)) >= 0) { + if (tmp === 0) { + throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one'); + } else if (!detectedIndent) { + textIndent = nodeIndent + tmp - 1; + detectedIndent = true; + } else { + throwError(state, 'repeat of an indentation width identifier'); + } + } else { + break; + } + } + + if (is_WHITE_SPACE(ch)) { + do { + ch = state.input.charCodeAt(++state.position); + } while (is_WHITE_SPACE(ch)); + + if (ch === 0x23 + /* # */ + ) { + do { + ch = state.input.charCodeAt(++state.position); + } while (!is_EOL(ch) && ch !== 0); + } + } + + while (ch !== 0) { + readLineBreak(state); + state.lineIndent = 0; + ch = state.input.charCodeAt(state.position); + + while ((!detectedIndent || state.lineIndent < textIndent) && ch === 0x20 + /* Space */ + ) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + + if (!detectedIndent && state.lineIndent > textIndent) { + textIndent = state.lineIndent; + } + + if (is_EOL(ch)) { + emptyLines++; + continue; + } // End of the scalar. + + + if (state.lineIndent < textIndent) { + // Perform the chomping. + if (chomping === CHOMPING_KEEP) { + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } else if (chomping === CHOMPING_CLIP) { + if (didReadContent) { + // i.e. only if the scalar is not empty. + state.result += '\n'; + } + } // Break this `while` cycle and go to the funciton's epilogue. + + + break; + } // Folded style: use fancy rules to handle line breaks. + + + if (folding) { + // Lines starting with white space characters (more-indented lines) are not folded. + if (is_WHITE_SPACE(ch)) { + atMoreIndented = true; // except for the first content line (cf. Example 8.1) + + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); // End of more-indented block. + } else if (atMoreIndented) { + atMoreIndented = false; + state.result += common.repeat('\n', emptyLines + 1); // Just one line break - perceive as the same line. + } else if (emptyLines === 0) { + if (didReadContent) { + // i.e. only if we have already read some scalar content. + state.result += ' '; + } // Several line breaks - perceive as different lines. + + } else { + state.result += common.repeat('\n', emptyLines); + } // Literal style: just add exact number of line breaks between content lines. + + } else { + // Keep all line breaks except the header line break. + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } + + didReadContent = true; + detectedIndent = true; + emptyLines = 0; + captureStart = state.position; + + while (!is_EOL(ch) && ch !== 0) { + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, state.position, false); + } + + return true; +} + +function readBlockSequence(state, nodeIndent) { + var _line, + _tag = state.tag, + _anchor = state.anchor, + _result = [], + following, + detected = false, + ch; + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + if (ch !== 0x2D + /* - */ + ) { + break; + } + + following = state.input.charCodeAt(state.position + 1); + + if (!is_WS_OR_EOL(following)) { + break; + } + + detected = true; + state.position++; + + if (skipSeparationSpace(state, true, -1)) { + if (state.lineIndent <= nodeIndent) { + _result.push(null); + + ch = state.input.charCodeAt(state.position); + continue; + } + } + + _line = state.line; + composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); + + _result.push(state.result); + + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + + if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) { + throwError(state, 'bad indentation of a sequence entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'sequence'; + state.result = _result; + return true; + } + + return false; +} + +function readBlockMapping(state, nodeIndent, flowIndent) { + var following, + allowCompact, + _line, + _pos, + _tag = state.tag, + _anchor = state.anchor, + _result = {}, + overridableKeys = {}, + keyTag = null, + keyNode = null, + valueNode = null, + atExplicitKey = false, + detected = false, + ch; + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + following = state.input.charCodeAt(state.position + 1); + _line = state.line; // Save the current line. + + _pos = state.position; // + // Explicit notation case. There are two separate blocks: + // first for the key (denoted by "?") and second for the value (denoted by ":") + // + + if ((ch === 0x3F + /* ? */ + || ch === 0x3A + /* : */ + ) && is_WS_OR_EOL(following)) { + if (ch === 0x3F + /* ? */ + ) { + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = true; + allowCompact = true; + } else if (atExplicitKey) { + // i.e. 0x3A/* : */ === character after the explicit key. + atExplicitKey = false; + allowCompact = true; + } else { + throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line'); + } + + state.position += 1; + ch = following; // + // Implicit notation case. Flow-style node as the key first, then ":", and the value. + // + } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { + if (state.line === _line) { + ch = state.input.charCodeAt(state.position); + + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x3A + /* : */ + ) { + ch = state.input.charCodeAt(++state.position); + + if (!is_WS_OR_EOL(ch)) { + throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); + } + + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = false; + allowCompact = false; + keyTag = state.tag; + keyNode = state.result; + } else if (detected) { + throwError(state, 'can not read an implicit mapping pair; a colon is missed'); + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } + } else if (detected) { + throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key'); + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } + } else { + break; // Reading is done. Go to the epilogue. + } // + // Common reading code for both explicit and implicit notations. + // + + + if (state.line === _line || state.lineIndent > nodeIndent) { + if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { + if (atExplicitKey) { + keyNode = state.result; + } else { + valueNode = state.result; + } + } + + if (!atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos); + keyTag = keyNode = valueNode = null; + } + + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + } + + if (state.lineIndent > nodeIndent && ch !== 0) { + throwError(state, 'bad indentation of a mapping entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } + } // + // Epilogue. + // + // Special case: last mapping's node contains only the key in explicit notation. + + + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + } // Expose the resulting mapping. + + + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'mapping'; + state.result = _result; + } + + return detected; +} + +function readTagProperty(state) { + var _position, + isVerbatim = false, + isNamed = false, + tagHandle, + tagName, + ch; + + ch = state.input.charCodeAt(state.position); + if (ch !== 0x21 + /* ! */ + ) return false; + + if (state.tag !== null) { + throwError(state, 'duplication of a tag property'); + } + + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x3C + /* < */ + ) { + isVerbatim = true; + ch = state.input.charCodeAt(++state.position); + } else if (ch === 0x21 + /* ! */ + ) { + isNamed = true; + tagHandle = '!!'; + ch = state.input.charCodeAt(++state.position); + } else { + tagHandle = '!'; + } + + _position = state.position; + + if (isVerbatim) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0 && ch !== 0x3E + /* > */ + ); + + if (state.position < state.length) { + tagName = state.input.slice(_position, state.position); + ch = state.input.charCodeAt(++state.position); + } else { + throwError(state, 'unexpected end of the stream within a verbatim tag'); + } + } else { + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + if (ch === 0x21 + /* ! */ + ) { + if (!isNamed) { + tagHandle = state.input.slice(_position - 1, state.position + 1); + + if (!PATTERN_TAG_HANDLE.test(tagHandle)) { + throwError(state, 'named tag handle cannot contain such characters'); + } + + isNamed = true; + _position = state.position + 1; + } else { + throwError(state, 'tag suffix cannot contain exclamation marks'); + } + } + + ch = state.input.charCodeAt(++state.position); + } + + tagName = state.input.slice(_position, state.position); + + if (PATTERN_FLOW_INDICATORS.test(tagName)) { + throwError(state, 'tag suffix cannot contain flow indicator characters'); + } + } + + if (tagName && !PATTERN_TAG_URI.test(tagName)) { + throwError(state, 'tag name cannot contain such characters: ' + tagName); + } + + if (isVerbatim) { + state.tag = tagName; + } else if (_hasOwnProperty$2.call(state.tagMap, tagHandle)) { + state.tag = state.tagMap[tagHandle] + tagName; + } else if (tagHandle === '!') { + state.tag = '!' + tagName; + } else if (tagHandle === '!!') { + state.tag = 'tag:yaml.org,2002:' + tagName; + } else { + throwError(state, 'undeclared tag handle "' + tagHandle + '"'); + } + + return true; +} + +function readAnchorProperty(state) { + var _position, ch; + + ch = state.input.charCodeAt(state.position); + if (ch !== 0x26 + /* & */ + ) return false; + + if (state.anchor !== null) { + throwError(state, 'duplication of an anchor property'); + } + + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === _position) { + throwError(state, 'name of an anchor node must contain at least one character'); + } + + state.anchor = state.input.slice(_position, state.position); + return true; +} + +function readAlias(state) { + var _position, alias, ch; + + ch = state.input.charCodeAt(state.position); + if (ch !== 0x2A + /* * */ + ) return false; + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === _position) { + throwError(state, 'name of an alias node must contain at least one character'); + } + + alias = state.input.slice(_position, state.position); + + if (!state.anchorMap.hasOwnProperty(alias)) { + throwError(state, 'unidentified alias "' + alias + '"'); + } + + state.result = state.anchorMap[alias]; + skipSeparationSpace(state, true, -1); + return true; +} + +function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { + var allowBlockStyles, + allowBlockScalars, + allowBlockCollections, + indentStatus = 1, + // 1: this>parent, 0: this=parent, -1: this parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } + } + + if (indentStatus === 1) { + while (readTagProperty(state) || readAnchorProperty(state)) { + if (skipSeparationSpace(state, true, -1)) { + atNewLine = true; + allowBlockCollections = allowBlockStyles; + + if (state.lineIndent > parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } else { + allowBlockCollections = false; + } + } + } + + if (allowBlockCollections) { + allowBlockCollections = atNewLine || allowCompact; + } + + if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { + if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { + flowIndent = parentIndent; + } else { + flowIndent = parentIndent + 1; + } + + blockIndent = state.position - state.lineStart; + + if (indentStatus === 1) { + if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) { + hasContent = true; + } else { + if (allowBlockScalars && readBlockScalar(state, flowIndent) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) { + hasContent = true; + } else if (readAlias(state)) { + hasContent = true; + + if (state.tag !== null || state.anchor !== null) { + throwError(state, 'alias node should not have any properties'); + } + } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { + hasContent = true; + + if (state.tag === null) { + state.tag = '?'; + } + } + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } else if (indentStatus === 0) { + // Special case: block sequences are allowed to have same indentation level as the parent. + // http://www.yaml.org/spec/1.2/spec.html#id2799784 + hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); + } + } + + if (state.tag !== null && state.tag !== '!') { + if (state.tag === '?') { + // Implicit resolving is not allowed for non-scalar types, and '?' + // non-specific tag is only automatically assigned to plain scalars. + // + // We only need to check kind conformity in case user explicitly assigns '?' + // tag, for example like this: "! [0]" + // + if (state.result !== null && state.kind !== 'scalar') { + throwError(state, 'unacceptable node kind for ! tag; it should be "scalar", not "' + state.kind + '"'); + } + + for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { + type = state.implicitTypes[typeIndex]; + + if (type.resolve(state.result)) { + // `state.result` updated in resolver if matched + state.result = type.construct(state.result); + state.tag = type.tag; + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + + break; + } + } + } else if (_hasOwnProperty$2.call(state.typeMap[state.kind || 'fallback'], state.tag)) { + type = state.typeMap[state.kind || 'fallback'][state.tag]; + + if (state.result !== null && type.kind !== state.kind) { + throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); + } + + if (!type.resolve(state.result)) { + // `state.result` updated in resolver if matched + throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag'); + } else { + state.result = type.construct(state.result); + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } else { + throwError(state, 'unknown tag !<' + state.tag + '>'); + } + } + + if (state.listener !== null) { + state.listener('close', state); + } + + return state.tag !== null || state.anchor !== null || hasContent; +} + +function readDocument(state) { + var documentStart = state.position, + _position, + directiveName, + directiveArgs, + hasDirectives = false, + ch; + + state.version = null; + state.checkLineBreaks = state.legacy; + state.tagMap = {}; + state.anchorMap = {}; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + + if (state.lineIndent > 0 || ch !== 0x25 + /* % */ + ) { + break; + } + + hasDirectives = true; + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveName = state.input.slice(_position, state.position); + directiveArgs = []; + + if (directiveName.length < 1) { + throwError(state, 'directive name must not be less than one character in length'); + } + + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x23 + /* # */ + ) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0 && !is_EOL(ch)); + + break; + } + + if (is_EOL(ch)) break; + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveArgs.push(state.input.slice(_position, state.position)); + } + + if (ch !== 0) readLineBreak(state); + + if (_hasOwnProperty$2.call(directiveHandlers, directiveName)) { + directiveHandlers[directiveName](state, directiveName, directiveArgs); + } else { + throwWarning(state, 'unknown document directive "' + directiveName + '"'); + } + } + + skipSeparationSpace(state, true, -1); + + if (state.lineIndent === 0 && state.input.charCodeAt(state.position) === 0x2D + /* - */ + && state.input.charCodeAt(state.position + 1) === 0x2D + /* - */ + && state.input.charCodeAt(state.position + 2) === 0x2D + /* - */ + ) { + state.position += 3; + skipSeparationSpace(state, true, -1); + } else if (hasDirectives) { + throwError(state, 'directives end mark is expected'); + } + + composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); + skipSeparationSpace(state, true, -1); + + if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { + throwWarning(state, 'non-ASCII line breaks are interpreted as content'); + } + + state.documents.push(state.result); + + if (state.position === state.lineStart && testDocumentSeparator(state)) { + if (state.input.charCodeAt(state.position) === 0x2E + /* . */ + ) { + state.position += 3; + skipSeparationSpace(state, true, -1); + } + + return; + } + + if (state.position < state.length - 1) { + throwError(state, 'end of the stream or a document separator is expected'); + } else { + return; + } +} + +function loadDocuments(input, options) { + input = String(input); + options = options || {}; + + if (input.length !== 0) { + // Add tailing `\n` if not exists + if (input.charCodeAt(input.length - 1) !== 0x0A + /* LF */ + && input.charCodeAt(input.length - 1) !== 0x0D + /* CR */ + ) { + input += '\n'; + } // Strip BOM + + + if (input.charCodeAt(0) === 0xFEFF) { + input = input.slice(1); + } + } + + var state = new State(input, options); + var nullpos = input.indexOf('\0'); + + if (nullpos !== -1) { + state.position = nullpos; + throwError(state, 'null byte is not allowed in input'); + } // Use 0 as string terminator. That significantly simplifies bounds check. + + + state.input += '\0'; + + while (state.input.charCodeAt(state.position) === 0x20 + /* Space */ + ) { + state.lineIndent += 1; + state.position += 1; + } + + while (state.position < state.length - 1) { + readDocument(state); + } + + return state.documents; +} + +function loadAll(input, iterator, options) { + if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') { + options = iterator; + iterator = null; + } + + var documents = loadDocuments(input, options); + + if (typeof iterator !== 'function') { + return documents; + } + + for (var index = 0, length = documents.length; index < length; index += 1) { + iterator(documents[index]); + } +} + +function load(input, options) { + var documents = loadDocuments(input, options); + + if (documents.length === 0) { + /*eslint-disable no-undefined*/ + return undefined; + } else if (documents.length === 1) { + return documents[0]; + } + + throw new exception('expected a single document in the stream, but found more'); +} + +function safeLoadAll(input, iterator, options) { + if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') { + options = iterator; + iterator = null; + } + + return loadAll(input, iterator, common.extend({ + schema: default_safe + }, options)); +} + +function safeLoad(input, options) { + return load(input, common.extend({ + schema: default_safe + }, options)); +} + +var loadAll_1 = loadAll; +var load_1 = load; +var safeLoadAll_1 = safeLoadAll; +var safeLoad_1 = safeLoad; +var loader = { + loadAll: loadAll_1, + load: load_1, + safeLoadAll: safeLoadAll_1, + safeLoad: safeLoad_1 +}; + +/*eslint-disable no-use-before-define*/ + + +var _toString$2 = Object.prototype.toString; +var _hasOwnProperty$3 = Object.prototype.hasOwnProperty; +var CHAR_TAB = 0x09; +/* Tab */ + +var CHAR_LINE_FEED = 0x0A; +/* LF */ + +var CHAR_CARRIAGE_RETURN = 0x0D; +/* CR */ + +var CHAR_SPACE = 0x20; +/* Space */ + +var CHAR_EXCLAMATION = 0x21; +/* ! */ + +var CHAR_DOUBLE_QUOTE = 0x22; +/* " */ + +var CHAR_SHARP = 0x23; +/* # */ + +var CHAR_PERCENT = 0x25; +/* % */ + +var CHAR_AMPERSAND = 0x26; +/* & */ + +var CHAR_SINGLE_QUOTE = 0x27; +/* ' */ + +var CHAR_ASTERISK = 0x2A; +/* * */ + +var CHAR_COMMA = 0x2C; +/* , */ + +var CHAR_MINUS = 0x2D; +/* - */ + +var CHAR_COLON = 0x3A; +/* : */ + +var CHAR_EQUALS = 0x3D; +/* = */ + +var CHAR_GREATER_THAN = 0x3E; +/* > */ + +var CHAR_QUESTION = 0x3F; +/* ? */ + +var CHAR_COMMERCIAL_AT = 0x40; +/* @ */ + +var CHAR_LEFT_SQUARE_BRACKET = 0x5B; +/* [ */ + +var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; +/* ] */ + +var CHAR_GRAVE_ACCENT = 0x60; +/* ` */ + +var CHAR_LEFT_CURLY_BRACKET = 0x7B; +/* { */ + +var CHAR_VERTICAL_LINE = 0x7C; +/* | */ + +var CHAR_RIGHT_CURLY_BRACKET = 0x7D; +/* } */ + +var ESCAPE_SEQUENCES = {}; +ESCAPE_SEQUENCES[0x00] = '\\0'; +ESCAPE_SEQUENCES[0x07] = '\\a'; +ESCAPE_SEQUENCES[0x08] = '\\b'; +ESCAPE_SEQUENCES[0x09] = '\\t'; +ESCAPE_SEQUENCES[0x0A] = '\\n'; +ESCAPE_SEQUENCES[0x0B] = '\\v'; +ESCAPE_SEQUENCES[0x0C] = '\\f'; +ESCAPE_SEQUENCES[0x0D] = '\\r'; +ESCAPE_SEQUENCES[0x1B] = '\\e'; +ESCAPE_SEQUENCES[0x22] = '\\"'; +ESCAPE_SEQUENCES[0x5C] = '\\\\'; +ESCAPE_SEQUENCES[0x85] = '\\N'; +ESCAPE_SEQUENCES[0xA0] = '\\_'; +ESCAPE_SEQUENCES[0x2028] = '\\L'; +ESCAPE_SEQUENCES[0x2029] = '\\P'; +var DEPRECATED_BOOLEANS_SYNTAX = ['y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF']; + +function compileStyleMap(schema, map) { + var result, keys, index, length, tag, style, type; + if (map === null) return {}; + result = {}; + keys = Object.keys(map); + + for (index = 0, length = keys.length; index < length; index += 1) { + tag = keys[index]; + style = String(map[tag]); + + if (tag.slice(0, 2) === '!!') { + tag = 'tag:yaml.org,2002:' + tag.slice(2); + } + + type = schema.compiledTypeMap['fallback'][tag]; + + if (type && _hasOwnProperty$3.call(type.styleAliases, style)) { + style = type.styleAliases[style]; + } + + result[tag] = style; + } + + return result; +} + +function encodeHex(character) { + var string, handle, length; + string = character.toString(16).toUpperCase(); + + if (character <= 0xFF) { + handle = 'x'; + length = 2; + } else if (character <= 0xFFFF) { + handle = 'u'; + length = 4; + } else if (character <= 0xFFFFFFFF) { + handle = 'U'; + length = 8; + } else { + throw new exception('code point within a string may not be greater than 0xFFFFFFFF'); + } + + return '\\' + handle + common.repeat('0', length - string.length) + string; +} + +function State$1(options) { + this.schema = options['schema'] || default_full; + this.indent = Math.max(1, options['indent'] || 2); + this.noArrayIndent = options['noArrayIndent'] || false; + this.skipInvalid = options['skipInvalid'] || false; + this.flowLevel = common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']; + this.styleMap = compileStyleMap(this.schema, options['styles'] || null); + this.sortKeys = options['sortKeys'] || false; + this.lineWidth = options['lineWidth'] || 80; + this.noRefs = options['noRefs'] || false; + this.noCompatMode = options['noCompatMode'] || false; + this.condenseFlow = options['condenseFlow'] || false; + this.implicitTypes = this.schema.compiledImplicit; + this.explicitTypes = this.schema.compiledExplicit; + this.tag = null; + this.result = ''; + this.duplicates = []; + this.usedDuplicates = null; +} // Indents every line in a string. Empty lines (\n only) are not indented. + + +function indentString(string, spaces) { + var ind = common.repeat(' ', spaces), + position = 0, + next = -1, + result = '', + line, + length = string.length; + + while (position < length) { + next = string.indexOf('\n', position); + + if (next === -1) { + line = string.slice(position); + position = length; + } else { + line = string.slice(position, next + 1); + position = next + 1; + } + + if (line.length && line !== '\n') result += ind; + result += line; + } + + return result; +} + +function generateNextLine(state, level) { + return '\n' + common.repeat(' ', state.indent * level); +} + +function testImplicitResolving(state, str) { + var index, length, type; + + for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { + type = state.implicitTypes[index]; + + if (type.resolve(str)) { + return true; + } + } + + return false; +} // [33] s-white ::= s-space | s-tab + + +function isWhitespace(c) { + return c === CHAR_SPACE || c === CHAR_TAB; +} // Returns true if the character can be printed without escaping. +// From YAML 1.2: "any allowed characters known to be non-printable +// should also be escaped. [However,] This isn’t mandatory" +// Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. + + +function isPrintable(c) { + return 0x00020 <= c && c <= 0x00007E || 0x000A1 <= c && c <= 0x00D7FF && c !== 0x2028 && c !== 0x2029 || 0x0E000 <= c && c <= 0x00FFFD && c !== 0xFEFF + /* BOM */ + || 0x10000 <= c && c <= 0x10FFFF; +} // [34] ns-char ::= nb-char - s-white +// [27] nb-char ::= c-printable - b-char - c-byte-order-mark +// [26] b-char ::= b-line-feed | b-carriage-return +// [24] b-line-feed ::= #xA /* LF */ +// [25] b-carriage-return ::= #xD /* CR */ +// [3] c-byte-order-mark ::= #xFEFF + + +function isNsChar(c) { + return isPrintable(c) && !isWhitespace(c) // byte-order-mark + && c !== 0xFEFF // b-char + && c !== CHAR_CARRIAGE_RETURN && c !== CHAR_LINE_FEED; +} // Simplified test for values allowed after the first character in plain style. + + +function isPlainSafe(c, prev) { + // Uses a subset of nb-char - c-flow-indicator - ":" - "#" + // where nb-char ::= c-printable - b-char - c-byte-order-mark. + return isPrintable(c) && c !== 0xFEFF // - c-flow-indicator + && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET // - ":" - "#" + // /* An ns-char preceding */ "#" + && c !== CHAR_COLON && (c !== CHAR_SHARP || prev && isNsChar(prev)); +} // Simplified test for values allowed as the first character in plain style. + + +function isPlainSafeFirst(c) { + // Uses a subset of ns-char - c-indicator + // where ns-char = nb-char - s-white. + return isPrintable(c) && c !== 0xFEFF && !isWhitespace(c) // - s-white + // - (c-indicator ::= + // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” + && c !== CHAR_MINUS && c !== CHAR_QUESTION && c !== CHAR_COLON && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” + && c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && c !== CHAR_EXCLAMATION && c !== CHAR_VERTICAL_LINE && c !== CHAR_EQUALS && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && c !== CHAR_DOUBLE_QUOTE // | “%” | “@” | “`”) + && c !== CHAR_PERCENT && c !== CHAR_COMMERCIAL_AT && c !== CHAR_GRAVE_ACCENT; +} // Determines whether block indentation indicator is required. + + +function needIndentIndicator(string) { + var leadingSpaceRe = /^\n* /; + return leadingSpaceRe.test(string); +} + +var STYLE_PLAIN = 1, + STYLE_SINGLE = 2, + STYLE_LITERAL = 3, + STYLE_FOLDED = 4, + STYLE_DOUBLE = 5; // Determines which scalar styles are possible and returns the preferred style. +// lineWidth = -1 => no limit. +// Pre-conditions: str.length > 0. +// Post-conditions: +// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. +// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). +// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). + +function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) { + var i; + var char, prev_char; + var hasLineBreak = false; + var hasFoldableLine = false; // only checked if shouldTrackWidth + + var shouldTrackWidth = lineWidth !== -1; + var previousLineBreak = -1; // count the first line correctly + + var plain = isPlainSafeFirst(string.charCodeAt(0)) && !isWhitespace(string.charCodeAt(string.length - 1)); + + if (singleLineOnly) { + // Case: no block styles. + // Check for disallowed characters to rule out plain and single. + for (i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + + if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + + prev_char = i > 0 ? string.charCodeAt(i - 1) : null; + plain = plain && isPlainSafe(char, prev_char); + } + } else { + // Case: block styles permitted. + for (i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + + if (char === CHAR_LINE_FEED) { + hasLineBreak = true; // Check if any line can be folded. + + if (shouldTrackWidth) { + hasFoldableLine = hasFoldableLine || // Foldable line = too long, and not more-indented. + i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== ' '; + previousLineBreak = i; + } + } else if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + + prev_char = i > 0 ? string.charCodeAt(i - 1) : null; + plain = plain && isPlainSafe(char, prev_char); + } // in case the end is missing a \n + + + hasFoldableLine = hasFoldableLine || shouldTrackWidth && i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== ' '; + } // Although every style can represent \n without escaping, prefer block styles + // for multiline, since they're more readable and they don't add empty lines. + // Also prefer folding a super-long line. + + + if (!hasLineBreak && !hasFoldableLine) { + // Strings interpretable as another type have to be quoted; + // e.g. the string 'true' vs. the boolean true. + return plain && !testAmbiguousType(string) ? STYLE_PLAIN : STYLE_SINGLE; + } // Edge case: block indentation indicator can only have one digit. + + + if (indentPerLevel > 9 && needIndentIndicator(string)) { + return STYLE_DOUBLE; + } // At this point we know block styles are valid. + // Prefer literal style unless we want to fold. + + + return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; +} // Note: line breaking/folding is implemented for only the folded style. +// NB. We drop the last trailing newline (if any) of a returned block scalar +// since the dumper adds its own newline. This always works: +// • No ending newline => unaffected; already using strip "-" chomping. +// • Ending newline => removed then restored. +// Importantly, this keeps the "+" chomp indicator from gaining an extra line. + + +function writeScalar(state, string, level, iskey) { + state.dump = function () { + if (string.length === 0) { + return "''"; + } + + if (!state.noCompatMode && DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) { + return "'" + string + "'"; + } + + var indent = state.indent * Math.max(1, level); // no 0-indent scalars + // As indentation gets deeper, let the width decrease monotonically + // to the lower bound min(state.lineWidth, 40). + // Note that this implies + // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound. + // state.lineWidth > 40 + state.indent: width decreases until the lower bound. + // This behaves better than a constant minimum width which disallows narrower options, + // or an indent threshold which causes the width to suddenly increase. + + var lineWidth = state.lineWidth === -1 ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); // Without knowing if keys are implicit/explicit, assume implicit for safety. + + var singleLineOnly = iskey // No block styles in flow mode. + || state.flowLevel > -1 && level >= state.flowLevel; + + function testAmbiguity(string) { + return testImplicitResolving(state, string); + } + + switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) { + case STYLE_PLAIN: + return string; + + case STYLE_SINGLE: + return "'" + string.replace(/'/g, "''") + "'"; + + case STYLE_LITERAL: + return '|' + blockHeader(string, state.indent) + dropEndingNewline(indentString(string, indent)); + + case STYLE_FOLDED: + return '>' + blockHeader(string, state.indent) + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); + + case STYLE_DOUBLE: + return '"' + escapeString(string) + '"'; + + default: + throw new exception('impossible error: invalid scalar style'); + } + }(); +} // Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. + + +function blockHeader(string, indentPerLevel) { + var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''; // note the special case: the string '\n' counts as a "trailing" empty line. + + var clip = string[string.length - 1] === '\n'; + var keep = clip && (string[string.length - 2] === '\n' || string === '\n'); + var chomp = keep ? '+' : clip ? '' : '-'; + return indentIndicator + chomp + '\n'; +} // (See the note for writeScalar.) + + +function dropEndingNewline(string) { + return string[string.length - 1] === '\n' ? string.slice(0, -1) : string; +} // Note: a long line without a suitable break point will exceed the width limit. +// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. + + +function foldString(string, width) { + // In folded style, $k$ consecutive newlines output as $k+1$ newlines— + // unless they're before or after a more-indented line, or at the very + // beginning or end, in which case $k$ maps to $k$. + // Therefore, parse each chunk as newline(s) followed by a content line. + var lineRe = /(\n+)([^\n]*)/g; // first line (possibly an empty line) + + var result = function () { + var nextLF = string.indexOf('\n'); + nextLF = nextLF !== -1 ? nextLF : string.length; + lineRe.lastIndex = nextLF; + return foldLine(string.slice(0, nextLF), width); + }(); // If we haven't reached the first content line yet, don't add an extra \n. + + + var prevMoreIndented = string[0] === '\n' || string[0] === ' '; + var moreIndented; // rest of the lines + + var match; + + while (match = lineRe.exec(string)) { + var prefix = match[1], + line = match[2]; + moreIndented = line[0] === ' '; + result += prefix + (!prevMoreIndented && !moreIndented && line !== '' ? '\n' : '') + foldLine(line, width); + prevMoreIndented = moreIndented; + } + + return result; +} // Greedy line breaking. +// Picks the longest line under the limit each time, +// otherwise settles for the shortest line over the limit. +// NB. More-indented lines *cannot* be folded, as that would add an extra \n. + + +function foldLine(line, width) { + if (line === '' || line[0] === ' ') return line; // Since a more-indented line adds a \n, breaks can't be followed by a space. + + var breakRe = / [^ ]/g; // note: the match index will always be <= length-2. + + var match; // start is an inclusive index. end, curr, and next are exclusive. + + var start = 0, + end, + curr = 0, + next = 0; + var result = ''; // Invariants: 0 <= start <= length-1. + // 0 <= curr <= next <= max(0, length-2). curr - start <= width. + // Inside the loop: + // A match implies length >= 2, so curr and next are <= length-2. + + while (match = breakRe.exec(line)) { + next = match.index; // maintain invariant: curr - start <= width + + if (next - start > width) { + end = curr > start ? curr : next; // derive end <= length-2 + + result += '\n' + line.slice(start, end); // skip the space that was output as \n + + start = end + 1; // derive start <= length-1 + } + + curr = next; + } // By the invariants, start <= length-1, so there is something left over. + // It is either the whole string or a part starting from non-whitespace. + + + result += '\n'; // Insert a break if the remainder is too long and there is a break available. + + if (line.length - start > width && curr > start) { + result += line.slice(start, curr) + '\n' + line.slice(curr + 1); + } else { + result += line.slice(start); + } + + return result.slice(1); // drop extra \n joiner +} // Escapes a double-quoted string. + + +function escapeString(string) { + var result = ''; + var char, nextChar; + var escapeSeq; + + for (var i = 0; i < string.length; i++) { + char = string.charCodeAt(i); // Check for surrogate pairs (reference Unicode 3.0 section "3.7 Surrogates"). + + if (char >= 0xD800 && char <= 0xDBFF + /* high surrogate */ + ) { + nextChar = string.charCodeAt(i + 1); + + if (nextChar >= 0xDC00 && nextChar <= 0xDFFF + /* low surrogate */ + ) { + // Combine the surrogate pair and store it escaped. + result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000); // Advance index one extra since we already used that char here. + + i++; + continue; + } + } + + escapeSeq = ESCAPE_SEQUENCES[char]; + result += !escapeSeq && isPrintable(char) ? string[i] : escapeSeq || encodeHex(char); + } + + return result; +} + +function writeFlowSequence(state, level, object) { + var _result = '', + _tag = state.tag, + index, + length; + + for (index = 0, length = object.length; index < length; index += 1) { + // Write only valid elements. + if (writeNode(state, level, object[index], false, false)) { + if (index !== 0) _result += ',' + (!state.condenseFlow ? ' ' : ''); + _result += state.dump; + } + } + + state.tag = _tag; + state.dump = '[' + _result + ']'; +} + +function writeBlockSequence(state, level, object, compact) { + var _result = '', + _tag = state.tag, + index, + length; + + for (index = 0, length = object.length; index < length; index += 1) { + // Write only valid elements. + if (writeNode(state, level + 1, object[index], true, true)) { + if (!compact || index !== 0) { + _result += generateNextLine(state, level); + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + _result += '-'; + } else { + _result += '- '; + } + + _result += state.dump; + } + } + + state.tag = _tag; + state.dump = _result || '[]'; // Empty sequence if no valid values. +} + +function writeFlowMapping(state, level, object) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + pairBuffer; + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + pairBuffer = ''; + if (index !== 0) pairBuffer += ', '; + if (state.condenseFlow) pairBuffer += '"'; + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + if (!writeNode(state, level, objectKey, false, false)) { + continue; // Skip this pair because of invalid key; + } + + if (state.dump.length > 1024) pairBuffer += '? '; + pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' '); + + if (!writeNode(state, level, objectValue, false, false)) { + continue; // Skip this pair because of invalid value. + } + + pairBuffer += state.dump; // Both key and value are valid. + + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = '{' + _result + '}'; +} + +function writeBlockMapping(state, level, object, compact) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + explicitPair, + pairBuffer; // Allow sorting keys so that the output file is deterministic + + if (state.sortKeys === true) { + // Default sorting + objectKeyList.sort(); + } else if (typeof state.sortKeys === 'function') { + // Custom sort function + objectKeyList.sort(state.sortKeys); + } else if (state.sortKeys) { + // Something is wrong + throw new exception('sortKeys must be a boolean or a function'); + } + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + pairBuffer = ''; + + if (!compact || index !== 0) { + pairBuffer += generateNextLine(state, level); + } + + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + if (!writeNode(state, level + 1, objectKey, true, true, true)) { + continue; // Skip this pair because of invalid key. + } + + explicitPair = state.tag !== null && state.tag !== '?' || state.dump && state.dump.length > 1024; + + if (explicitPair) { + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += '?'; + } else { + pairBuffer += '? '; + } + } + + pairBuffer += state.dump; + + if (explicitPair) { + pairBuffer += generateNextLine(state, level); + } + + if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { + continue; // Skip this pair because of invalid value. + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += ':'; + } else { + pairBuffer += ': '; + } + + pairBuffer += state.dump; // Both key and value are valid. + + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = _result || '{}'; // Empty mapping if no valid pairs. +} + +function detectType(state, object, explicit) { + var _result, typeList, index, length, type, style; + + typeList = explicit ? state.explicitTypes : state.implicitTypes; + + for (index = 0, length = typeList.length; index < length; index += 1) { + type = typeList[index]; + + if ((type.instanceOf || type.predicate) && (!type.instanceOf || typeof object === 'object' && object instanceof type.instanceOf) && (!type.predicate || type.predicate(object))) { + state.tag = explicit ? type.tag : '?'; + + if (type.represent) { + style = state.styleMap[type.tag] || type.defaultStyle; + + if (_toString$2.call(type.represent) === '[object Function]') { + _result = type.represent(object, style); + } else if (_hasOwnProperty$3.call(type.represent, style)) { + _result = type.represent[style](object, style); + } else { + throw new exception('!<' + type.tag + '> tag resolver accepts not "' + style + '" style'); + } + + state.dump = _result; + } + + return true; + } + } + + return false; +} // Serializes `object` and writes it to global `result`. +// Returns true on success, or false on invalid object. +// + + +function writeNode(state, level, object, block, compact, iskey) { + state.tag = null; + state.dump = object; + + if (!detectType(state, object, false)) { + detectType(state, object, true); + } + + var type = _toString$2.call(state.dump); + + if (block) { + block = state.flowLevel < 0 || state.flowLevel > level; + } + + var objectOrArray = type === '[object Object]' || type === '[object Array]', + duplicateIndex, + duplicate; + + if (objectOrArray) { + duplicateIndex = state.duplicates.indexOf(object); + duplicate = duplicateIndex !== -1; + } + + if (state.tag !== null && state.tag !== '?' || duplicate || state.indent !== 2 && level > 0) { + compact = false; + } + + if (duplicate && state.usedDuplicates[duplicateIndex]) { + state.dump = '*ref_' + duplicateIndex; + } else { + if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { + state.usedDuplicates[duplicateIndex] = true; + } + + if (type === '[object Object]') { + if (block && Object.keys(state.dump).length !== 0) { + writeBlockMapping(state, level, state.dump, compact); + + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowMapping(state, level, state.dump); + + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object Array]') { + var arrayLevel = state.noArrayIndent && level > 0 ? level - 1 : level; + + if (block && state.dump.length !== 0) { + writeBlockSequence(state, arrayLevel, state.dump, compact); + + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowSequence(state, arrayLevel, state.dump); + + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object String]') { + if (state.tag !== '?') { + writeScalar(state, state.dump, level, iskey); + } + } else { + if (state.skipInvalid) return false; + throw new exception('unacceptable kind of an object to dump ' + type); + } + + if (state.tag !== null && state.tag !== '?') { + state.dump = '!<' + state.tag + '> ' + state.dump; + } + } + + return true; +} + +function getDuplicateReferences(object, state) { + var objects = [], + duplicatesIndexes = [], + index, + length; + inspectNode(object, objects, duplicatesIndexes); + + for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { + state.duplicates.push(objects[duplicatesIndexes[index]]); + } + + state.usedDuplicates = new Array(length); +} + +function inspectNode(object, objects, duplicatesIndexes) { + var objectKeyList, index, length; + + if (object !== null && typeof object === 'object') { + index = objects.indexOf(object); + + if (index !== -1) { + if (duplicatesIndexes.indexOf(index) === -1) { + duplicatesIndexes.push(index); + } + } else { + objects.push(object); + + if (Array.isArray(object)) { + for (index = 0, length = object.length; index < length; index += 1) { + inspectNode(object[index], objects, duplicatesIndexes); + } + } else { + objectKeyList = Object.keys(object); + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); + } + } + } + } +} + +function dump(input, options) { + options = options || {}; + var state = new State$1(options); + if (!state.noRefs) getDuplicateReferences(input, state); + if (writeNode(state, 0, input, true, true)) return state.dump + '\n'; + return ''; +} + +function safeDump(input, options) { + return dump(input, common.extend({ + schema: default_safe + }, options)); +} + +var dump_1 = dump; +var safeDump_1 = safeDump; +var dumper = { + dump: dump_1, + safeDump: safeDump_1 +}; + +function deprecated(name) { + return function () { + throw new Error('Function ' + name + ' is deprecated and cannot be used.'); + }; +} + +var Type$1 = type; +var Schema$1 = schema; +var FAILSAFE_SCHEMA = failsafe; +var JSON_SCHEMA = json; +var CORE_SCHEMA = core; +var DEFAULT_SAFE_SCHEMA = default_safe; +var DEFAULT_FULL_SCHEMA = default_full; +var load$1 = loader.load; +var loadAll$1 = loader.loadAll; +var safeLoad$1 = loader.safeLoad; +var safeLoadAll$1 = loader.safeLoadAll; +var dump$1 = dumper.dump; +var safeDump$1 = dumper.safeDump; +var YAMLException$1 = exception; // Deprecated schema names from JS-YAML 2.0.x + +var MINIMAL_SCHEMA = failsafe; +var SAFE_SCHEMA = default_safe; +var DEFAULT_SCHEMA = default_full; // Deprecated functions from JS-YAML 1.x.x + +var scan = deprecated('scan'); +var parse = deprecated('parse'); +var compose = deprecated('compose'); +var addConstructor = deprecated('addConstructor'); +var jsYaml = { + Type: Type$1, + Schema: Schema$1, + FAILSAFE_SCHEMA: FAILSAFE_SCHEMA, + JSON_SCHEMA: JSON_SCHEMA, + CORE_SCHEMA: CORE_SCHEMA, + DEFAULT_SAFE_SCHEMA: DEFAULT_SAFE_SCHEMA, + DEFAULT_FULL_SCHEMA: DEFAULT_FULL_SCHEMA, + load: load$1, + loadAll: loadAll$1, + safeLoad: safeLoad$1, + safeLoadAll: safeLoadAll$1, + dump: dump$1, + safeDump: safeDump$1, + YAMLException: YAMLException$1, + MINIMAL_SCHEMA: MINIMAL_SCHEMA, + SAFE_SCHEMA: SAFE_SCHEMA, + DEFAULT_SCHEMA: DEFAULT_SCHEMA, + scan: scan, + parse: parse, + compose: compose, + addConstructor: addConstructor +}; + +var jsYaml$1 = jsYaml; + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } +/** + * Redirect - object used to redirect some requests + * e.g. + * { + * title: 1x1-transparent.gif + * comment: http://probablyprogramming.com/2009/03/15/the-tiniest-gif-ever + * contentType: image/gif;base64 + * content: R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== + * } + * @typedef {Object} Redirect + * @property {string} title + * @property {string} comment + * @property {string} content + * @property {string} contentType + */ + +var Redirects = /*#__PURE__*/function () { + /** + * Converts rawYaml into JS object with sources titles used as keys + * @param rawYaml + * @returns {Object} - return object with titles in the keys and RedirectSources + * in the values + */ + function Redirects(rawYaml) { + classCallCheck(this, Redirects); + + try { + var arrOfRedirects = jsYaml$1.safeLoad(rawYaml); + this.redirects = arrOfRedirects.reduce(function (acc, redirect) { + return _objectSpread(_objectSpread({}, acc), {}, defineProperty({}, redirect.title, redirect)); + }, {}); + } catch (e) { + // eslint-disable-next-line no-console + console.log("Was unable to load YAML into JS due to: ".concat(e.message)); + throw e; + } + } + /** + * Returns redirect source object + * @param {string} title + * @return {Redirect} + */ + + + createClass(Redirects, [{ + key: "getRedirect", + value: function getRedirect(title) { + var _this = this; + + if (Object.prototype.hasOwnProperty.call(this.redirects, title)) { + return this.redirects[title]; + } // look title among aliases + + + var values = Object.keys(this.redirects).map(function (key) { + return _this.redirects[key]; + }); + return values.find(function (redirect) { + var aliases = redirect.aliases; + + if (!aliases) { + return false; + } + + return aliases.indexOf(title) > -1; + }); + } + }]); + + return Redirects; +}(); + /** * @typedef {Object} Source - scriptlet properties * @property {string} name Scriptlet name @@ -5296,7 +9275,8 @@ var scriptletsObject = function () { convertAbpToAdg: convertAbpSnippetToAdg, convertScriptletToAdg: convertScriptletToAdg, convertAdgToUbo: convertAdgScriptletToUbo, - redirects: redirectsCjs + redirects: redirectsCjs, + Redirects: Redirects }; }(); diff --git a/dist/redirects.js b/dist/redirects.js index fc56de064..6b88bd40d 100644 --- a/dist/redirects.js +++ b/dist/redirects.js @@ -1,7 +1,7 @@ /** * AdGuard Scriptlets - * Version 1.3.2 + * Version 1.3.3 */ var Redirects = (function () { diff --git a/dist/redirects.yml b/dist/redirects.yml index 78a810468..c6e8ab1e7 100644 --- a/dist/redirects.yml +++ b/dist/redirects.yml @@ -1,6 +1,6 @@ # # AdGuard Scriptlets (Redirects Source) -# Version 1.3.2 +# Version 1.3.3 # - title: 1x1-transparent.gif description: |- diff --git a/dist/scriptlets.corelibs.json b/dist/scriptlets.corelibs.json index 8424fcc96..3febc5775 100644 --- a/dist/scriptlets.corelibs.json +++ b/dist/scriptlets.corelibs.json @@ -1,5 +1,5 @@ { - "version": "1.3.2", + "version": "1.3.3", "scriptlets": [ { "names": [ diff --git a/dist/scriptlets.js b/dist/scriptlets.js index 5330141cf..8932610df 100644 --- a/dist/scriptlets.js +++ b/dist/scriptlets.js @@ -1,7 +1,7 @@ /** * AdGuard Scriptlets - * Version 1.3.2 + * Version 1.3.3 */ (function () { @@ -5247,6 +5247,3985 @@ convertAdgRedirectToUbo: convertAdgRedirectToUbo }; + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + var classCallCheck = _classCallCheck; + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; + } + + var createClass = _createClass; + + function isNothing(subject) { + return typeof subject === 'undefined' || subject === null; + } + + function isObject(subject) { + return typeof subject === 'object' && subject !== null; + } + + function toArray$1(sequence) { + if (Array.isArray(sequence)) return sequence;else if (isNothing(sequence)) return []; + return [sequence]; + } + + function extend(target, source) { + var index, length, key, sourceKeys; + + if (source) { + sourceKeys = Object.keys(source); + + for (index = 0, length = sourceKeys.length; index < length; index += 1) { + key = sourceKeys[index]; + target[key] = source[key]; + } + } + + return target; + } + + function repeat(string, count) { + var result = '', + cycle; + + for (cycle = 0; cycle < count; cycle += 1) { + result += string; + } + + return result; + } + + function isNegativeZero(number) { + return number === 0 && Number.NEGATIVE_INFINITY === 1 / number; + } + + var isNothing_1 = isNothing; + var isObject_1 = isObject; + var toArray_1 = toArray$1; + var repeat_1 = repeat; + var isNegativeZero_1 = isNegativeZero; + var extend_1 = extend; + var common = { + isNothing: isNothing_1, + isObject: isObject_1, + toArray: toArray_1, + repeat: repeat_1, + isNegativeZero: isNegativeZero_1, + extend: extend_1 + }; + + // YAML error class. http://stackoverflow.com/questions/8458984 + + function YAMLException(reason, mark) { + // Super constructor + Error.call(this); + this.name = 'YAMLException'; + this.reason = reason; + this.mark = mark; + this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : ''); // Include stack trace in error object + + if (Error.captureStackTrace) { + // Chrome and NodeJS + Error.captureStackTrace(this, this.constructor); + } else { + // FF, IE 10+ and Safari 6+. Fallback for others + this.stack = new Error().stack || ''; + } + } // Inherit from Error + + + YAMLException.prototype = Object.create(Error.prototype); + YAMLException.prototype.constructor = YAMLException; + + YAMLException.prototype.toString = function toString(compact) { + var result = this.name + ': '; + result += this.reason || '(unknown reason)'; + + if (!compact && this.mark) { + result += ' ' + this.mark.toString(); + } + + return result; + }; + + var exception = YAMLException; + + function Mark(name, buffer, position, line, column) { + this.name = name; + this.buffer = buffer; + this.position = position; + this.line = line; + this.column = column; + } + + Mark.prototype.getSnippet = function getSnippet(indent, maxLength) { + var head, start, tail, end, snippet; + if (!this.buffer) return null; + indent = indent || 4; + maxLength = maxLength || 75; + head = ''; + start = this.position; + + while (start > 0 && "\0\r\n\x85\u2028\u2029".indexOf(this.buffer.charAt(start - 1)) === -1) { + start -= 1; + + if (this.position - start > maxLength / 2 - 1) { + head = ' ... '; + start += 5; + break; + } + } + + tail = ''; + end = this.position; + + while (end < this.buffer.length && "\0\r\n\x85\u2028\u2029".indexOf(this.buffer.charAt(end)) === -1) { + end += 1; + + if (end - this.position > maxLength / 2 - 1) { + tail = ' ... '; + end -= 5; + break; + } + } + + snippet = this.buffer.slice(start, end); + return common.repeat(' ', indent) + head + snippet + tail + '\n' + common.repeat(' ', indent + this.position - start + head.length) + '^'; + }; + + Mark.prototype.toString = function toString(compact) { + var snippet, + where = ''; + + if (this.name) { + where += 'in "' + this.name + '" '; + } + + where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1); + + if (!compact) { + snippet = this.getSnippet(); + + if (snippet) { + where += ':\n' + snippet; + } + } + + return where; + }; + + var mark = Mark; + + var TYPE_CONSTRUCTOR_OPTIONS = ['kind', 'resolve', 'construct', 'instanceOf', 'predicate', 'represent', 'defaultStyle', 'styleAliases']; + var YAML_NODE_KINDS = ['scalar', 'sequence', 'mapping']; + + function compileStyleAliases(map) { + var result = {}; + + if (map !== null) { + Object.keys(map).forEach(function (style) { + map[style].forEach(function (alias) { + result[String(alias)] = style; + }); + }); + } + + return result; + } + + function Type(tag, options) { + options = options || {}; + Object.keys(options).forEach(function (name) { + if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { + throw new exception('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); + } + }); // TODO: Add tag format check. + + this.tag = tag; + this.kind = options['kind'] || null; + + this.resolve = options['resolve'] || function () { + return true; + }; + + this.construct = options['construct'] || function (data) { + return data; + }; + + this.instanceOf = options['instanceOf'] || null; + this.predicate = options['predicate'] || null; + this.represent = options['represent'] || null; + this.defaultStyle = options['defaultStyle'] || null; + this.styleAliases = compileStyleAliases(options['styleAliases'] || null); + + if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { + throw new exception('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); + } + } + + var type = Type; + + /*eslint-disable max-len*/ + + + function compileList(schema, name, result) { + var exclude = []; + schema.include.forEach(function (includedSchema) { + result = compileList(includedSchema, name, result); + }); + schema[name].forEach(function (currentType) { + result.forEach(function (previousType, previousIndex) { + if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) { + exclude.push(previousIndex); + } + }); + result.push(currentType); + }); + return result.filter(function (type, index) { + return exclude.indexOf(index) === -1; + }); + } + + function compileMap() + /* lists... */ + { + var result = { + scalar: {}, + sequence: {}, + mapping: {}, + fallback: {} + }, + index, + length; + + function collectType(type) { + result[type.kind][type.tag] = result['fallback'][type.tag] = type; + } + + for (index = 0, length = arguments.length; index < length; index += 1) { + arguments[index].forEach(collectType); + } + + return result; + } + + function Schema(definition) { + this.include = definition.include || []; + this.implicit = definition.implicit || []; + this.explicit = definition.explicit || []; + this.implicit.forEach(function (type) { + if (type.loadKind && type.loadKind !== 'scalar') { + throw new exception('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); + } + }); + this.compiledImplicit = compileList(this, 'implicit', []); + this.compiledExplicit = compileList(this, 'explicit', []); + this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit); + } + + Schema.DEFAULT = null; + + Schema.create = function createSchema() { + var schemas, types; + + switch (arguments.length) { + case 1: + schemas = Schema.DEFAULT; + types = arguments[0]; + break; + + case 2: + schemas = arguments[0]; + types = arguments[1]; + break; + + default: + throw new exception('Wrong number of arguments for Schema.create function'); + } + + schemas = common.toArray(schemas); + types = common.toArray(types); + + if (!schemas.every(function (schema) { + return schema instanceof Schema; + })) { + throw new exception('Specified list of super schemas (or a single Schema object) contains a non-Schema object.'); + } + + if (!types.every(function (type$1) { + return type$1 instanceof type; + })) { + throw new exception('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + } + + return new Schema({ + include: schemas, + explicit: types + }); + }; + + var schema = Schema; + + var str = new type('tag:yaml.org,2002:str', { + kind: 'scalar', + construct: function construct(data) { + return data !== null ? data : ''; + } + }); + + var seq = new type('tag:yaml.org,2002:seq', { + kind: 'sequence', + construct: function construct(data) { + return data !== null ? data : []; + } + }); + + var map = new type('tag:yaml.org,2002:map', { + kind: 'mapping', + construct: function construct(data) { + return data !== null ? data : {}; + } + }); + + var failsafe = new schema({ + explicit: [str, seq, map] + }); + + function resolveYamlNull(data) { + if (data === null) return true; + var max = data.length; + return max === 1 && data === '~' || max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'); + } + + function constructYamlNull() { + return null; + } + + function isNull(object) { + return object === null; + } + + var _null = new type('tag:yaml.org,2002:null', { + kind: 'scalar', + resolve: resolveYamlNull, + construct: constructYamlNull, + predicate: isNull, + represent: { + canonical: function canonical() { + return '~'; + }, + lowercase: function lowercase() { + return 'null'; + }, + uppercase: function uppercase() { + return 'NULL'; + }, + camelcase: function camelcase() { + return 'Null'; + } + }, + defaultStyle: 'lowercase' + }); + + function resolveYamlBoolean(data) { + if (data === null) return false; + var max = data.length; + return max === 4 && (data === 'true' || data === 'True' || data === 'TRUE') || max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'); + } + + function constructYamlBoolean(data) { + return data === 'true' || data === 'True' || data === 'TRUE'; + } + + function isBoolean(object) { + return Object.prototype.toString.call(object) === '[object Boolean]'; + } + + var bool = new type('tag:yaml.org,2002:bool', { + kind: 'scalar', + resolve: resolveYamlBoolean, + construct: constructYamlBoolean, + predicate: isBoolean, + represent: { + lowercase: function lowercase(object) { + return object ? 'true' : 'false'; + }, + uppercase: function uppercase(object) { + return object ? 'TRUE' : 'FALSE'; + }, + camelcase: function camelcase(object) { + return object ? 'True' : 'False'; + } + }, + defaultStyle: 'lowercase' + }); + + function isHexCode(c) { + return 0x30 + /* 0 */ + <= c && c <= 0x39 + /* 9 */ + || 0x41 + /* A */ + <= c && c <= 0x46 + /* F */ + || 0x61 + /* a */ + <= c && c <= 0x66 + /* f */ + ; + } + + function isOctCode(c) { + return 0x30 + /* 0 */ + <= c && c <= 0x37 + /* 7 */ + ; + } + + function isDecCode(c) { + return 0x30 + /* 0 */ + <= c && c <= 0x39 + /* 9 */ + ; + } + + function resolveYamlInteger(data) { + if (data === null) return false; + var max = data.length, + index = 0, + hasDigits = false, + ch; + if (!max) return false; + ch = data[index]; // sign + + if (ch === '-' || ch === '+') { + ch = data[++index]; + } + + if (ch === '0') { + // 0 + if (index + 1 === max) return true; + ch = data[++index]; // base 2, base 8, base 16 + + if (ch === 'b') { + // base 2 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (ch !== '0' && ch !== '1') return false; + hasDigits = true; + } + + return hasDigits && ch !== '_'; + } + + if (ch === 'x') { + // base 16 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isHexCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + + return hasDigits && ch !== '_'; + } // base 8 + + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isOctCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + + return hasDigits && ch !== '_'; + } // base 10 (except 0) or base 60 + // value should not start with `_`; + + + if (ch === '_') return false; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (ch === ':') break; + + if (!isDecCode(data.charCodeAt(index))) { + return false; + } + + hasDigits = true; + } // Should have digits and should not end with `_` + + + if (!hasDigits || ch === '_') return false; // if !base60 - done; + + if (ch !== ':') return true; // base60 almost not used, no needs to optimize + + return /^(:[0-5]?[0-9])+$/.test(data.slice(index)); + } + + function constructYamlInteger(data) { + var value = data, + sign = 1, + ch, + base, + digits = []; + + if (value.indexOf('_') !== -1) { + value = value.replace(/_/g, ''); + } + + ch = value[0]; + + if (ch === '-' || ch === '+') { + if (ch === '-') sign = -1; + value = value.slice(1); + ch = value[0]; + } + + if (value === '0') return 0; + + if (ch === '0') { + if (value[1] === 'b') return sign * parseInt(value.slice(2), 2); + if (value[1] === 'x') return sign * parseInt(value, 16); + return sign * parseInt(value, 8); + } + + if (value.indexOf(':') !== -1) { + value.split(':').forEach(function (v) { + digits.unshift(parseInt(v, 10)); + }); + value = 0; + base = 1; + digits.forEach(function (d) { + value += d * base; + base *= 60; + }); + return sign * value; + } + + return sign * parseInt(value, 10); + } + + function isInteger(object) { + return Object.prototype.toString.call(object) === '[object Number]' && object % 1 === 0 && !common.isNegativeZero(object); + } + + var int_1 = new type('tag:yaml.org,2002:int', { + kind: 'scalar', + resolve: resolveYamlInteger, + construct: constructYamlInteger, + predicate: isInteger, + represent: { + binary: function binary(obj) { + return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); + }, + octal: function octal(obj) { + return obj >= 0 ? '0' + obj.toString(8) : '-0' + obj.toString(8).slice(1); + }, + decimal: function decimal(obj) { + return obj.toString(10); + }, + + /* eslint-disable max-len */ + hexadecimal: function hexadecimal(obj) { + return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); + } + }, + defaultStyle: 'decimal', + styleAliases: { + binary: [2, 'bin'], + octal: [8, 'oct'], + decimal: [10, 'dec'], + hexadecimal: [16, 'hex'] + } + }); + + var YAML_FLOAT_PATTERN = new RegExp( // 2.5e4, 2.5 and integers + '^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' + // .2e4, .2 + // special case, seems not from spec + '|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' + // 20:59 + '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*' + // .inf + '|[-+]?\\.(?:inf|Inf|INF)' + // .nan + '|\\.(?:nan|NaN|NAN))$'); + + function resolveYamlFloat(data) { + if (data === null) return false; + + if (!YAML_FLOAT_PATTERN.test(data) || // Quick hack to not allow integers end with `_` + // Probably should update regexp & check speed + data[data.length - 1] === '_') { + return false; + } + + return true; + } + + function constructYamlFloat(data) { + var value, sign, base, digits; + value = data.replace(/_/g, '').toLowerCase(); + sign = value[0] === '-' ? -1 : 1; + digits = []; + + if ('+-'.indexOf(value[0]) >= 0) { + value = value.slice(1); + } + + if (value === '.inf') { + return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; + } else if (value === '.nan') { + return NaN; + } else if (value.indexOf(':') >= 0) { + value.split(':').forEach(function (v) { + digits.unshift(parseFloat(v, 10)); + }); + value = 0.0; + base = 1; + digits.forEach(function (d) { + value += d * base; + base *= 60; + }); + return sign * value; + } + + return sign * parseFloat(value, 10); + } + + var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; + + function representYamlFloat(object, style) { + var res; + + if (isNaN(object)) { + switch (style) { + case 'lowercase': + return '.nan'; + + case 'uppercase': + return '.NAN'; + + case 'camelcase': + return '.NaN'; + } + } else if (Number.POSITIVE_INFINITY === object) { + switch (style) { + case 'lowercase': + return '.inf'; + + case 'uppercase': + return '.INF'; + + case 'camelcase': + return '.Inf'; + } + } else if (Number.NEGATIVE_INFINITY === object) { + switch (style) { + case 'lowercase': + return '-.inf'; + + case 'uppercase': + return '-.INF'; + + case 'camelcase': + return '-.Inf'; + } + } else if (common.isNegativeZero(object)) { + return '-0.0'; + } + + res = object.toString(10); // JS stringifier can build scientific format without dots: 5e-100, + // while YAML requres dot: 5.e-100. Fix it with simple hack + + return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res; + } + + function isFloat(object) { + return Object.prototype.toString.call(object) === '[object Number]' && (object % 1 !== 0 || common.isNegativeZero(object)); + } + + var float_1 = new type('tag:yaml.org,2002:float', { + kind: 'scalar', + resolve: resolveYamlFloat, + construct: constructYamlFloat, + predicate: isFloat, + represent: representYamlFloat, + defaultStyle: 'lowercase' + }); + + var json = new schema({ + include: [failsafe], + implicit: [_null, bool, int_1, float_1] + }); + + var core = new schema({ + include: [json] + }); + + var YAML_DATE_REGEXP = new RegExp('^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9])' + // [2] month + '-([0-9][0-9])$'); // [3] day + + var YAML_TIMESTAMP_REGEXP = new RegExp('^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9]?)' + // [2] month + '-([0-9][0-9]?)' + // [3] day + '(?:[Tt]|[ \\t]+)' + // ... + '([0-9][0-9]?)' + // [4] hour + ':([0-9][0-9])' + // [5] minute + ':([0-9][0-9])' + // [6] second + '(?:\\.([0-9]*))?' + // [7] fraction + '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour + '(?::([0-9][0-9]))?))?$'); // [11] tz_minute + + function resolveYamlTimestamp(data) { + if (data === null) return false; + if (YAML_DATE_REGEXP.exec(data) !== null) return true; + if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; + return false; + } + + function constructYamlTimestamp(data) { + var match, + year, + month, + day, + hour, + minute, + second, + fraction = 0, + delta = null, + tz_hour, + tz_minute, + date; + match = YAML_DATE_REGEXP.exec(data); + if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); + if (match === null) throw new Error('Date resolve error'); // match: [1] year [2] month [3] day + + year = +match[1]; + month = +match[2] - 1; // JS month starts with 0 + + day = +match[3]; + + if (!match[4]) { + // no hour + return new Date(Date.UTC(year, month, day)); + } // match: [4] hour [5] minute [6] second [7] fraction + + + hour = +match[4]; + minute = +match[5]; + second = +match[6]; + + if (match[7]) { + fraction = match[7].slice(0, 3); + + while (fraction.length < 3) { + // milli-seconds + fraction += '0'; + } + + fraction = +fraction; + } // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute + + + if (match[9]) { + tz_hour = +match[10]; + tz_minute = +(match[11] || 0); + delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds + + if (match[9] === '-') delta = -delta; + } + + date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); + if (delta) date.setTime(date.getTime() - delta); + return date; + } + + function representYamlTimestamp(object + /*, style*/ + ) { + return object.toISOString(); + } + + var timestamp = new type('tag:yaml.org,2002:timestamp', { + kind: 'scalar', + resolve: resolveYamlTimestamp, + construct: constructYamlTimestamp, + instanceOf: Date, + represent: representYamlTimestamp + }); + + function resolveYamlMerge(data) { + return data === '<<' || data === null; + } + + var merge = new type('tag:yaml.org,2002:merge', { + kind: 'scalar', + resolve: resolveYamlMerge + }); + + function commonjsRequire () { + throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs'); + } + + /*eslint-disable no-bitwise*/ + + + var NodeBuffer; + + try { + // A trick for browserified version, to not include `Buffer` shim + var _require = commonjsRequire; + NodeBuffer = _require('buffer').Buffer; + } catch (__) {} // [ 64, 65, 66 ] -> [ padding, CR, LF ] + + + var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r'; + + function resolveYamlBinary(data) { + if (data === null) return false; + var code, + idx, + bitlen = 0, + max = data.length, + map = BASE64_MAP; // Convert one by one. + + for (idx = 0; idx < max; idx++) { + code = map.indexOf(data.charAt(idx)); // Skip CR/LF + + if (code > 64) continue; // Fail on illegal characters + + if (code < 0) return false; + bitlen += 6; + } // If there are any bits left, source was corrupted + + + return bitlen % 8 === 0; + } + + function constructYamlBinary(data) { + var idx, + tailbits, + input = data.replace(/[\r\n=]/g, ''), + // remove CR/LF & padding to simplify scan + max = input.length, + map = BASE64_MAP, + bits = 0, + result = []; // Collect by 6*4 bits (3 bytes) + + for (idx = 0; idx < max; idx++) { + if (idx % 4 === 0 && idx) { + result.push(bits >> 16 & 0xFF); + result.push(bits >> 8 & 0xFF); + result.push(bits & 0xFF); + } + + bits = bits << 6 | map.indexOf(input.charAt(idx)); + } // Dump tail + + + tailbits = max % 4 * 6; + + if (tailbits === 0) { + result.push(bits >> 16 & 0xFF); + result.push(bits >> 8 & 0xFF); + result.push(bits & 0xFF); + } else if (tailbits === 18) { + result.push(bits >> 10 & 0xFF); + result.push(bits >> 2 & 0xFF); + } else if (tailbits === 12) { + result.push(bits >> 4 & 0xFF); + } // Wrap into Buffer for NodeJS and leave Array for browser + + + if (NodeBuffer) { + // Support node 6.+ Buffer API when available + return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result); + } + + return result; + } + + function representYamlBinary(object + /*, style*/ + ) { + var result = '', + bits = 0, + idx, + tail, + max = object.length, + map = BASE64_MAP; // Convert every three bytes to 4 ASCII characters. + + for (idx = 0; idx < max; idx++) { + if (idx % 3 === 0 && idx) { + result += map[bits >> 18 & 0x3F]; + result += map[bits >> 12 & 0x3F]; + result += map[bits >> 6 & 0x3F]; + result += map[bits & 0x3F]; + } + + bits = (bits << 8) + object[idx]; + } // Dump tail + + + tail = max % 3; + + if (tail === 0) { + result += map[bits >> 18 & 0x3F]; + result += map[bits >> 12 & 0x3F]; + result += map[bits >> 6 & 0x3F]; + result += map[bits & 0x3F]; + } else if (tail === 2) { + result += map[bits >> 10 & 0x3F]; + result += map[bits >> 4 & 0x3F]; + result += map[bits << 2 & 0x3F]; + result += map[64]; + } else if (tail === 1) { + result += map[bits >> 2 & 0x3F]; + result += map[bits << 4 & 0x3F]; + result += map[64]; + result += map[64]; + } + + return result; + } + + function isBinary(object) { + return NodeBuffer && NodeBuffer.isBuffer(object); + } + + var binary = new type('tag:yaml.org,2002:binary', { + kind: 'scalar', + resolve: resolveYamlBinary, + construct: constructYamlBinary, + predicate: isBinary, + represent: representYamlBinary + }); + + var _hasOwnProperty = Object.prototype.hasOwnProperty; + var _toString = Object.prototype.toString; + + function resolveYamlOmap(data) { + if (data === null) return true; + var objectKeys = [], + index, + length, + pair, + pairKey, + pairHasKey, + object = data; + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + pairHasKey = false; + if (_toString.call(pair) !== '[object Object]') return false; + + for (pairKey in pair) { + if (_hasOwnProperty.call(pair, pairKey)) { + if (!pairHasKey) pairHasKey = true;else return false; + } + } + + if (!pairHasKey) return false; + if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);else return false; + } + + return true; + } + + function constructYamlOmap(data) { + return data !== null ? data : []; + } + + var omap = new type('tag:yaml.org,2002:omap', { + kind: 'sequence', + resolve: resolveYamlOmap, + construct: constructYamlOmap + }); + + var _toString$1 = Object.prototype.toString; + + function resolveYamlPairs(data) { + if (data === null) return true; + var index, + length, + pair, + keys, + result, + object = data; + result = new Array(object.length); + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + if (_toString$1.call(pair) !== '[object Object]') return false; + keys = Object.keys(pair); + if (keys.length !== 1) return false; + result[index] = [keys[0], pair[keys[0]]]; + } + + return true; + } + + function constructYamlPairs(data) { + if (data === null) return []; + var index, + length, + pair, + keys, + result, + object = data; + result = new Array(object.length); + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + keys = Object.keys(pair); + result[index] = [keys[0], pair[keys[0]]]; + } + + return result; + } + + var pairs = new type('tag:yaml.org,2002:pairs', { + kind: 'sequence', + resolve: resolveYamlPairs, + construct: constructYamlPairs + }); + + var _hasOwnProperty$1 = Object.prototype.hasOwnProperty; + + function resolveYamlSet(data) { + if (data === null) return true; + var key, + object = data; + + for (key in object) { + if (_hasOwnProperty$1.call(object, key)) { + if (object[key] !== null) return false; + } + } + + return true; + } + + function constructYamlSet(data) { + return data !== null ? data : {}; + } + + var set = new type('tag:yaml.org,2002:set', { + kind: 'mapping', + resolve: resolveYamlSet, + construct: constructYamlSet + }); + + var default_safe = new schema({ + include: [core], + implicit: [timestamp, merge], + explicit: [binary, omap, pairs, set] + }); + + function resolveJavascriptUndefined() { + return true; + } + + function constructJavascriptUndefined() { + /*eslint-disable no-undefined*/ + return undefined; + } + + function representJavascriptUndefined() { + return ''; + } + + function isUndefined(object) { + return typeof object === 'undefined'; + } + + var _undefined = new type('tag:yaml.org,2002:js/undefined', { + kind: 'scalar', + resolve: resolveJavascriptUndefined, + construct: constructJavascriptUndefined, + predicate: isUndefined, + represent: representJavascriptUndefined + }); + + function resolveJavascriptRegExp(data) { + if (data === null) return false; + if (data.length === 0) return false; + var regexp = data, + tail = /\/([gim]*)$/.exec(data), + modifiers = ''; // if regexp starts with '/' it can have modifiers and must be properly closed + // `/foo/gim` - modifiers tail can be maximum 3 chars + + if (regexp[0] === '/') { + if (tail) modifiers = tail[1]; + if (modifiers.length > 3) return false; // if expression starts with /, is should be properly terminated + + if (regexp[regexp.length - modifiers.length - 1] !== '/') return false; + } + + return true; + } + + function constructJavascriptRegExp(data) { + var regexp = data, + tail = /\/([gim]*)$/.exec(data), + modifiers = ''; // `/foo/gim` - tail can be maximum 4 chars + + if (regexp[0] === '/') { + if (tail) modifiers = tail[1]; + regexp = regexp.slice(1, regexp.length - modifiers.length - 1); + } + + return new RegExp(regexp, modifiers); + } + + function representJavascriptRegExp(object + /*, style*/ + ) { + var result = '/' + object.source + '/'; + if (object.global) result += 'g'; + if (object.multiline) result += 'm'; + if (object.ignoreCase) result += 'i'; + return result; + } + + function isRegExp(object) { + return Object.prototype.toString.call(object) === '[object RegExp]'; + } + + var regexp = new type('tag:yaml.org,2002:js/regexp', { + kind: 'scalar', + resolve: resolveJavascriptRegExp, + construct: constructJavascriptRegExp, + predicate: isRegExp, + represent: representJavascriptRegExp + }); + + var esprima; // Browserified version does not have esprima + // + // 1. For node.js just require module as deps + // 2. For browser try to require mudule via external AMD system. + // If not found - try to fallback to window.esprima. If not + // found too - then fail to parse. + // + + try { + // workaround to exclude package from browserify list. + var _require$1 = commonjsRequire; + esprima = _require$1('esprima'); + } catch (_) { + /* eslint-disable no-redeclare */ + + /* global window */ + if (typeof window !== 'undefined') esprima = window.esprima; + } + + function resolveJavascriptFunction(data) { + if (data === null) return false; + + try { + var source = '(' + data + ')', + ast = esprima.parse(source, { + range: true + }); + + if (ast.type !== 'Program' || ast.body.length !== 1 || ast.body[0].type !== 'ExpressionStatement' || ast.body[0].expression.type !== 'ArrowFunctionExpression' && ast.body[0].expression.type !== 'FunctionExpression') { + return false; + } + + return true; + } catch (err) { + return false; + } + } + + function constructJavascriptFunction(data) { + /*jslint evil:true*/ + var source = '(' + data + ')', + ast = esprima.parse(source, { + range: true + }), + params = [], + body; + + if (ast.type !== 'Program' || ast.body.length !== 1 || ast.body[0].type !== 'ExpressionStatement' || ast.body[0].expression.type !== 'ArrowFunctionExpression' && ast.body[0].expression.type !== 'FunctionExpression') { + throw new Error('Failed to resolve function'); + } + + ast.body[0].expression.params.forEach(function (param) { + params.push(param.name); + }); + body = ast.body[0].expression.body.range; // Esprima's ranges include the first '{' and the last '}' characters on + // function expressions. So cut them out. + + if (ast.body[0].expression.body.type === 'BlockStatement') { + /*eslint-disable no-new-func*/ + return new Function(params, source.slice(body[0] + 1, body[1] - 1)); + } // ES6 arrow functions can omit the BlockStatement. In that case, just return + // the body. + + /*eslint-disable no-new-func*/ + + + return new Function(params, 'return ' + source.slice(body[0], body[1])); + } + + function representJavascriptFunction(object + /*, style*/ + ) { + return object.toString(); + } + + function isFunction(object) { + return Object.prototype.toString.call(object) === '[object Function]'; + } + + var _function = new type('tag:yaml.org,2002:js/function', { + kind: 'scalar', + resolve: resolveJavascriptFunction, + construct: constructJavascriptFunction, + predicate: isFunction, + represent: representJavascriptFunction + }); + + var default_full = schema.DEFAULT = new schema({ + include: [default_safe], + explicit: [_undefined, regexp, _function] + }); + + /*eslint-disable max-len,no-use-before-define*/ + + + var _hasOwnProperty$2 = Object.prototype.hasOwnProperty; + var CONTEXT_FLOW_IN = 1; + var CONTEXT_FLOW_OUT = 2; + var CONTEXT_BLOCK_IN = 3; + var CONTEXT_BLOCK_OUT = 4; + var CHOMPING_CLIP = 1; + var CHOMPING_STRIP = 2; + var CHOMPING_KEEP = 3; + var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; + var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; + var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; + var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; + var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; + + function _class(obj) { + return Object.prototype.toString.call(obj); + } + + function is_EOL(c) { + return c === 0x0A + /* LF */ + || c === 0x0D + /* CR */ + ; + } + + function is_WHITE_SPACE(c) { + return c === 0x09 + /* Tab */ + || c === 0x20 + /* Space */ + ; + } + + function is_WS_OR_EOL(c) { + return c === 0x09 + /* Tab */ + || c === 0x20 + /* Space */ + || c === 0x0A + /* LF */ + || c === 0x0D + /* CR */ + ; + } + + function is_FLOW_INDICATOR(c) { + return c === 0x2C + /* , */ + || c === 0x5B + /* [ */ + || c === 0x5D + /* ] */ + || c === 0x7B + /* { */ + || c === 0x7D + /* } */ + ; + } + + function fromHexCode(c) { + var lc; + + if (0x30 + /* 0 */ + <= c && c <= 0x39 + /* 9 */ + ) { + return c - 0x30; + } + /*eslint-disable no-bitwise*/ + + + lc = c | 0x20; + + if (0x61 + /* a */ + <= lc && lc <= 0x66 + /* f */ + ) { + return lc - 0x61 + 10; + } + + return -1; + } + + function escapedHexLen(c) { + if (c === 0x78 + /* x */ + ) { + return 2; + } + + if (c === 0x75 + /* u */ + ) { + return 4; + } + + if (c === 0x55 + /* U */ + ) { + return 8; + } + + return 0; + } + + function fromDecimalCode(c) { + if (0x30 + /* 0 */ + <= c && c <= 0x39 + /* 9 */ + ) { + return c - 0x30; + } + + return -1; + } + + function simpleEscapeSequence(c) { + /* eslint-disable indent */ + return c === 0x30 + /* 0 */ + ? '\x00' : c === 0x61 + /* a */ + ? '\x07' : c === 0x62 + /* b */ + ? '\x08' : c === 0x74 + /* t */ + ? '\x09' : c === 0x09 + /* Tab */ + ? '\x09' : c === 0x6E + /* n */ + ? '\x0A' : c === 0x76 + /* v */ + ? '\x0B' : c === 0x66 + /* f */ + ? '\x0C' : c === 0x72 + /* r */ + ? '\x0D' : c === 0x65 + /* e */ + ? '\x1B' : c === 0x20 + /* Space */ + ? ' ' : c === 0x22 + /* " */ + ? '\x22' : c === 0x2F + /* / */ + ? '/' : c === 0x5C + /* \ */ + ? '\x5C' : c === 0x4E + /* N */ + ? '\x85' : c === 0x5F + /* _ */ + ? '\xA0' : c === 0x4C + /* L */ + ? "\u2028" : c === 0x50 + /* P */ + ? "\u2029" : ''; + } + + function charFromCodepoint(c) { + if (c <= 0xFFFF) { + return String.fromCharCode(c); + } // Encode UTF-16 surrogate pair + // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF + + + return String.fromCharCode((c - 0x010000 >> 10) + 0xD800, (c - 0x010000 & 0x03FF) + 0xDC00); + } + + var simpleEscapeCheck = new Array(256); // integer, for fast access + + var simpleEscapeMap = new Array(256); + + for (var i = 0; i < 256; i++) { + simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; + simpleEscapeMap[i] = simpleEscapeSequence(i); + } + + function State(input, options) { + this.input = input; + this.filename = options['filename'] || null; + this.schema = options['schema'] || default_full; + this.onWarning = options['onWarning'] || null; + this.legacy = options['legacy'] || false; + this.json = options['json'] || false; + this.listener = options['listener'] || null; + this.implicitTypes = this.schema.compiledImplicit; + this.typeMap = this.schema.compiledTypeMap; + this.length = input.length; + this.position = 0; + this.line = 0; + this.lineStart = 0; + this.lineIndent = 0; + this.documents = []; + /* + this.version; + this.checkLineBreaks; + this.tagMap; + this.anchorMap; + this.tag; + this.anchor; + this.kind; + this.result;*/ + } + + function generateError(state, message) { + return new exception(message, new mark(state.filename, state.input, state.position, state.line, state.position - state.lineStart)); + } + + function throwError(state, message) { + throw generateError(state, message); + } + + function throwWarning(state, message) { + if (state.onWarning) { + state.onWarning.call(null, generateError(state, message)); + } + } + + var directiveHandlers = { + YAML: function handleYamlDirective(state, name, args) { + var match, major, minor; + + if (state.version !== null) { + throwError(state, 'duplication of %YAML directive'); + } + + if (args.length !== 1) { + throwError(state, 'YAML directive accepts exactly one argument'); + } + + match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); + + if (match === null) { + throwError(state, 'ill-formed argument of the YAML directive'); + } + + major = parseInt(match[1], 10); + minor = parseInt(match[2], 10); + + if (major !== 1) { + throwError(state, 'unacceptable YAML version of the document'); + } + + state.version = args[0]; + state.checkLineBreaks = minor < 2; + + if (minor !== 1 && minor !== 2) { + throwWarning(state, 'unsupported YAML version of the document'); + } + }, + TAG: function handleTagDirective(state, name, args) { + var handle, prefix; + + if (args.length !== 2) { + throwError(state, 'TAG directive accepts exactly two arguments'); + } + + handle = args[0]; + prefix = args[1]; + + if (!PATTERN_TAG_HANDLE.test(handle)) { + throwError(state, 'ill-formed tag handle (first argument) of the TAG directive'); + } + + if (_hasOwnProperty$2.call(state.tagMap, handle)) { + throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); + } + + if (!PATTERN_TAG_URI.test(prefix)) { + throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive'); + } + + state.tagMap[handle] = prefix; + } + }; + + function captureSegment(state, start, end, checkJson) { + var _position, _length, _character, _result; + + if (start < end) { + _result = state.input.slice(start, end); + + if (checkJson) { + for (_position = 0, _length = _result.length; _position < _length; _position += 1) { + _character = _result.charCodeAt(_position); + + if (!(_character === 0x09 || 0x20 <= _character && _character <= 0x10FFFF)) { + throwError(state, 'expected valid JSON character'); + } + } + } else if (PATTERN_NON_PRINTABLE.test(_result)) { + throwError(state, 'the stream contains non-printable characters'); + } + + state.result += _result; + } + } + + function mergeMappings(state, destination, source, overridableKeys) { + var sourceKeys, key, index, quantity; + + if (!common.isObject(source)) { + throwError(state, 'cannot merge mappings; the provided source object is unacceptable'); + } + + sourceKeys = Object.keys(source); + + for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { + key = sourceKeys[index]; + + if (!_hasOwnProperty$2.call(destination, key)) { + destination[key] = source[key]; + overridableKeys[key] = true; + } + } + } + + function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) { + var index, quantity; // The output is a plain object here, so keys can only be strings. + // We need to convert keyNode to a string, but doing so can hang the process + // (deeply nested arrays that explode exponentially using aliases). + + if (Array.isArray(keyNode)) { + keyNode = Array.prototype.slice.call(keyNode); + + for (index = 0, quantity = keyNode.length; index < quantity; index += 1) { + if (Array.isArray(keyNode[index])) { + throwError(state, 'nested arrays are not supported inside keys'); + } + + if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') { + keyNode[index] = '[object Object]'; + } + } + } // Avoid code execution in load() via toString property + // (still use its own toString for arrays, timestamps, + // and whatever user schema extensions happen to have @@toStringTag) + + + if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') { + keyNode = '[object Object]'; + } + + keyNode = String(keyNode); + + if (_result === null) { + _result = {}; + } + + if (keyTag === 'tag:yaml.org,2002:merge') { + if (Array.isArray(valueNode)) { + for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { + mergeMappings(state, _result, valueNode[index], overridableKeys); + } + } else { + mergeMappings(state, _result, valueNode, overridableKeys); + } + } else { + if (!state.json && !_hasOwnProperty$2.call(overridableKeys, keyNode) && _hasOwnProperty$2.call(_result, keyNode)) { + state.line = startLine || state.line; + state.position = startPos || state.position; + throwError(state, 'duplicated mapping key'); + } + + _result[keyNode] = valueNode; + delete overridableKeys[keyNode]; + } + + return _result; + } + + function readLineBreak(state) { + var ch; + ch = state.input.charCodeAt(state.position); + + if (ch === 0x0A + /* LF */ + ) { + state.position++; + } else if (ch === 0x0D + /* CR */ + ) { + state.position++; + + if (state.input.charCodeAt(state.position) === 0x0A + /* LF */ + ) { + state.position++; + } + } else { + throwError(state, 'a line break is expected'); + } + + state.line += 1; + state.lineStart = state.position; + } + + function skipSeparationSpace(state, allowComments, checkIndent) { + var lineBreaks = 0, + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (allowComments && ch === 0x23 + /* # */ + ) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0x0A + /* LF */ + && ch !== 0x0D + /* CR */ + && ch !== 0); + } + + if (is_EOL(ch)) { + readLineBreak(state); + ch = state.input.charCodeAt(state.position); + lineBreaks++; + state.lineIndent = 0; + + while (ch === 0x20 + /* Space */ + ) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + } else { + break; + } + } + + if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { + throwWarning(state, 'deficient indentation'); + } + + return lineBreaks; + } + + function testDocumentSeparator(state) { + var _position = state.position, + ch; + ch = state.input.charCodeAt(_position); // Condition state.position === state.lineStart is tested + // in parent on each call, for efficiency. No needs to test here again. + + if ((ch === 0x2D + /* - */ + || ch === 0x2E + /* . */ + ) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) { + _position += 3; + ch = state.input.charCodeAt(_position); + + if (ch === 0 || is_WS_OR_EOL(ch)) { + return true; + } + } + + return false; + } + + function writeFoldedLines(state, count) { + if (count === 1) { + state.result += ' '; + } else if (count > 1) { + state.result += common.repeat('\n', count - 1); + } + } + + function readPlainScalar(state, nodeIndent, withinFlowCollection) { + var preceding, + following, + captureStart, + captureEnd, + hasPendingContent, + _line, + _lineStart, + _lineIndent, + _kind = state.kind, + _result = state.result, + ch; + + ch = state.input.charCodeAt(state.position); + + if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || ch === 0x23 + /* # */ + || ch === 0x26 + /* & */ + || ch === 0x2A + /* * */ + || ch === 0x21 + /* ! */ + || ch === 0x7C + /* | */ + || ch === 0x3E + /* > */ + || ch === 0x27 + /* ' */ + || ch === 0x22 + /* " */ + || ch === 0x25 + /* % */ + || ch === 0x40 + /* @ */ + || ch === 0x60 + /* ` */ + ) { + return false; + } + + if (ch === 0x3F + /* ? */ + || ch === 0x2D + /* - */ + ) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) { + return false; + } + } + + state.kind = 'scalar'; + state.result = ''; + captureStart = captureEnd = state.position; + hasPendingContent = false; + + while (ch !== 0) { + if (ch === 0x3A + /* : */ + ) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) { + break; + } + } else if (ch === 0x23 + /* # */ + ) { + preceding = state.input.charCodeAt(state.position - 1); + + if (is_WS_OR_EOL(preceding)) { + break; + } + } else if (state.position === state.lineStart && testDocumentSeparator(state) || withinFlowCollection && is_FLOW_INDICATOR(ch)) { + break; + } else if (is_EOL(ch)) { + _line = state.line; + _lineStart = state.lineStart; + _lineIndent = state.lineIndent; + skipSeparationSpace(state, false, -1); + + if (state.lineIndent >= nodeIndent) { + hasPendingContent = true; + ch = state.input.charCodeAt(state.position); + continue; + } else { + state.position = captureEnd; + state.line = _line; + state.lineStart = _lineStart; + state.lineIndent = _lineIndent; + break; + } + } + + if (hasPendingContent) { + captureSegment(state, captureStart, captureEnd, false); + writeFoldedLines(state, state.line - _line); + captureStart = captureEnd = state.position; + hasPendingContent = false; + } + + if (!is_WHITE_SPACE(ch)) { + captureEnd = state.position + 1; + } + + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, captureEnd, false); + + if (state.result) { + return true; + } + + state.kind = _kind; + state.result = _result; + return false; + } + + function readSingleQuotedScalar(state, nodeIndent) { + var ch, captureStart, captureEnd; + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x27 + /* ' */ + ) { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x27 + /* ' */ + ) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x27 + /* ' */ + ) { + captureStart = state.position; + state.position++; + captureEnd = state.position; + } else { + return true; + } + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a single quoted scalar'); + } else { + state.position++; + captureEnd = state.position; + } + } + + throwError(state, 'unexpected end of the stream within a single quoted scalar'); + } + + function readDoubleQuotedScalar(state, nodeIndent) { + var captureStart, captureEnd, hexLength, hexResult, tmp, ch; + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x22 + /* " */ + ) { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x22 + /* " */ + ) { + captureSegment(state, captureStart, state.position, true); + state.position++; + return true; + } else if (ch === 0x5C + /* \ */ + ) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (is_EOL(ch)) { + skipSeparationSpace(state, false, nodeIndent); // TODO: rework to inline fn with no type cast? + } else if (ch < 256 && simpleEscapeCheck[ch]) { + state.result += simpleEscapeMap[ch]; + state.position++; + } else if ((tmp = escapedHexLen(ch)) > 0) { + hexLength = tmp; + hexResult = 0; + + for (; hexLength > 0; hexLength--) { + ch = state.input.charCodeAt(++state.position); + + if ((tmp = fromHexCode(ch)) >= 0) { + hexResult = (hexResult << 4) + tmp; + } else { + throwError(state, 'expected hexadecimal character'); + } + } + + state.result += charFromCodepoint(hexResult); + state.position++; + } else { + throwError(state, 'unknown escape sequence'); + } + + captureStart = captureEnd = state.position; + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a double quoted scalar'); + } else { + state.position++; + captureEnd = state.position; + } + } + + throwError(state, 'unexpected end of the stream within a double quoted scalar'); + } + + function readFlowCollection(state, nodeIndent) { + var readNext = true, + _line, + _tag = state.tag, + _result, + _anchor = state.anchor, + following, + terminator, + isPair, + isExplicitPair, + isMapping, + overridableKeys = {}, + keyNode, + keyTag, + valueNode, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x5B + /* [ */ + ) { + terminator = 0x5D; + /* ] */ + + isMapping = false; + _result = []; + } else if (ch === 0x7B + /* { */ + ) { + terminator = 0x7D; + /* } */ + + isMapping = true; + _result = {}; + } else { + return false; + } + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(++state.position); + + while (ch !== 0) { + skipSeparationSpace(state, true, nodeIndent); + ch = state.input.charCodeAt(state.position); + + if (ch === terminator) { + state.position++; + state.tag = _tag; + state.anchor = _anchor; + state.kind = isMapping ? 'mapping' : 'sequence'; + state.result = _result; + return true; + } else if (!readNext) { + throwError(state, 'missed comma between flow collection entries'); + } + + keyTag = keyNode = valueNode = null; + isPair = isExplicitPair = false; + + if (ch === 0x3F + /* ? */ + ) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following)) { + isPair = isExplicitPair = true; + state.position++; + skipSeparationSpace(state, true, nodeIndent); + } + } + + _line = state.line; + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + keyTag = state.tag; + keyNode = state.result; + skipSeparationSpace(state, true, nodeIndent); + ch = state.input.charCodeAt(state.position); + + if ((isExplicitPair || state.line === _line) && ch === 0x3A + /* : */ + ) { + isPair = true; + ch = state.input.charCodeAt(++state.position); + skipSeparationSpace(state, true, nodeIndent); + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + valueNode = state.result; + } + + if (isMapping) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode); + } else if (isPair) { + _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode)); + } else { + _result.push(keyNode); + } + + skipSeparationSpace(state, true, nodeIndent); + ch = state.input.charCodeAt(state.position); + + if (ch === 0x2C + /* , */ + ) { + readNext = true; + ch = state.input.charCodeAt(++state.position); + } else { + readNext = false; + } + } + + throwError(state, 'unexpected end of the stream within a flow collection'); + } + + function readBlockScalar(state, nodeIndent) { + var captureStart, + folding, + chomping = CHOMPING_CLIP, + didReadContent = false, + detectedIndent = false, + textIndent = nodeIndent, + emptyLines = 0, + atMoreIndented = false, + tmp, + ch; + ch = state.input.charCodeAt(state.position); + + if (ch === 0x7C + /* | */ + ) { + folding = false; + } else if (ch === 0x3E + /* > */ + ) { + folding = true; + } else { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + + while (ch !== 0) { + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x2B + /* + */ + || ch === 0x2D + /* - */ + ) { + if (CHOMPING_CLIP === chomping) { + chomping = ch === 0x2B + /* + */ + ? CHOMPING_KEEP : CHOMPING_STRIP; + } else { + throwError(state, 'repeat of a chomping mode identifier'); + } + } else if ((tmp = fromDecimalCode(ch)) >= 0) { + if (tmp === 0) { + throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one'); + } else if (!detectedIndent) { + textIndent = nodeIndent + tmp - 1; + detectedIndent = true; + } else { + throwError(state, 'repeat of an indentation width identifier'); + } + } else { + break; + } + } + + if (is_WHITE_SPACE(ch)) { + do { + ch = state.input.charCodeAt(++state.position); + } while (is_WHITE_SPACE(ch)); + + if (ch === 0x23 + /* # */ + ) { + do { + ch = state.input.charCodeAt(++state.position); + } while (!is_EOL(ch) && ch !== 0); + } + } + + while (ch !== 0) { + readLineBreak(state); + state.lineIndent = 0; + ch = state.input.charCodeAt(state.position); + + while ((!detectedIndent || state.lineIndent < textIndent) && ch === 0x20 + /* Space */ + ) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + + if (!detectedIndent && state.lineIndent > textIndent) { + textIndent = state.lineIndent; + } + + if (is_EOL(ch)) { + emptyLines++; + continue; + } // End of the scalar. + + + if (state.lineIndent < textIndent) { + // Perform the chomping. + if (chomping === CHOMPING_KEEP) { + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } else if (chomping === CHOMPING_CLIP) { + if (didReadContent) { + // i.e. only if the scalar is not empty. + state.result += '\n'; + } + } // Break this `while` cycle and go to the funciton's epilogue. + + + break; + } // Folded style: use fancy rules to handle line breaks. + + + if (folding) { + // Lines starting with white space characters (more-indented lines) are not folded. + if (is_WHITE_SPACE(ch)) { + atMoreIndented = true; // except for the first content line (cf. Example 8.1) + + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); // End of more-indented block. + } else if (atMoreIndented) { + atMoreIndented = false; + state.result += common.repeat('\n', emptyLines + 1); // Just one line break - perceive as the same line. + } else if (emptyLines === 0) { + if (didReadContent) { + // i.e. only if we have already read some scalar content. + state.result += ' '; + } // Several line breaks - perceive as different lines. + + } else { + state.result += common.repeat('\n', emptyLines); + } // Literal style: just add exact number of line breaks between content lines. + + } else { + // Keep all line breaks except the header line break. + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } + + didReadContent = true; + detectedIndent = true; + emptyLines = 0; + captureStart = state.position; + + while (!is_EOL(ch) && ch !== 0) { + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, state.position, false); + } + + return true; + } + + function readBlockSequence(state, nodeIndent) { + var _line, + _tag = state.tag, + _anchor = state.anchor, + _result = [], + following, + detected = false, + ch; + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + if (ch !== 0x2D + /* - */ + ) { + break; + } + + following = state.input.charCodeAt(state.position + 1); + + if (!is_WS_OR_EOL(following)) { + break; + } + + detected = true; + state.position++; + + if (skipSeparationSpace(state, true, -1)) { + if (state.lineIndent <= nodeIndent) { + _result.push(null); + + ch = state.input.charCodeAt(state.position); + continue; + } + } + + _line = state.line; + composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); + + _result.push(state.result); + + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + + if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) { + throwError(state, 'bad indentation of a sequence entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'sequence'; + state.result = _result; + return true; + } + + return false; + } + + function readBlockMapping(state, nodeIndent, flowIndent) { + var following, + allowCompact, + _line, + _pos, + _tag = state.tag, + _anchor = state.anchor, + _result = {}, + overridableKeys = {}, + keyTag = null, + keyNode = null, + valueNode = null, + atExplicitKey = false, + detected = false, + ch; + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + following = state.input.charCodeAt(state.position + 1); + _line = state.line; // Save the current line. + + _pos = state.position; // + // Explicit notation case. There are two separate blocks: + // first for the key (denoted by "?") and second for the value (denoted by ":") + // + + if ((ch === 0x3F + /* ? */ + || ch === 0x3A + /* : */ + ) && is_WS_OR_EOL(following)) { + if (ch === 0x3F + /* ? */ + ) { + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = true; + allowCompact = true; + } else if (atExplicitKey) { + // i.e. 0x3A/* : */ === character after the explicit key. + atExplicitKey = false; + allowCompact = true; + } else { + throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line'); + } + + state.position += 1; + ch = following; // + // Implicit notation case. Flow-style node as the key first, then ":", and the value. + // + } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { + if (state.line === _line) { + ch = state.input.charCodeAt(state.position); + + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x3A + /* : */ + ) { + ch = state.input.charCodeAt(++state.position); + + if (!is_WS_OR_EOL(ch)) { + throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); + } + + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = false; + allowCompact = false; + keyTag = state.tag; + keyNode = state.result; + } else if (detected) { + throwError(state, 'can not read an implicit mapping pair; a colon is missed'); + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } + } else if (detected) { + throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key'); + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } + } else { + break; // Reading is done. Go to the epilogue. + } // + // Common reading code for both explicit and implicit notations. + // + + + if (state.line === _line || state.lineIndent > nodeIndent) { + if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { + if (atExplicitKey) { + keyNode = state.result; + } else { + valueNode = state.result; + } + } + + if (!atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos); + keyTag = keyNode = valueNode = null; + } + + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + } + + if (state.lineIndent > nodeIndent && ch !== 0) { + throwError(state, 'bad indentation of a mapping entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } + } // + // Epilogue. + // + // Special case: last mapping's node contains only the key in explicit notation. + + + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + } // Expose the resulting mapping. + + + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'mapping'; + state.result = _result; + } + + return detected; + } + + function readTagProperty(state) { + var _position, + isVerbatim = false, + isNamed = false, + tagHandle, + tagName, + ch; + + ch = state.input.charCodeAt(state.position); + if (ch !== 0x21 + /* ! */ + ) return false; + + if (state.tag !== null) { + throwError(state, 'duplication of a tag property'); + } + + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x3C + /* < */ + ) { + isVerbatim = true; + ch = state.input.charCodeAt(++state.position); + } else if (ch === 0x21 + /* ! */ + ) { + isNamed = true; + tagHandle = '!!'; + ch = state.input.charCodeAt(++state.position); + } else { + tagHandle = '!'; + } + + _position = state.position; + + if (isVerbatim) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0 && ch !== 0x3E + /* > */ + ); + + if (state.position < state.length) { + tagName = state.input.slice(_position, state.position); + ch = state.input.charCodeAt(++state.position); + } else { + throwError(state, 'unexpected end of the stream within a verbatim tag'); + } + } else { + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + if (ch === 0x21 + /* ! */ + ) { + if (!isNamed) { + tagHandle = state.input.slice(_position - 1, state.position + 1); + + if (!PATTERN_TAG_HANDLE.test(tagHandle)) { + throwError(state, 'named tag handle cannot contain such characters'); + } + + isNamed = true; + _position = state.position + 1; + } else { + throwError(state, 'tag suffix cannot contain exclamation marks'); + } + } + + ch = state.input.charCodeAt(++state.position); + } + + tagName = state.input.slice(_position, state.position); + + if (PATTERN_FLOW_INDICATORS.test(tagName)) { + throwError(state, 'tag suffix cannot contain flow indicator characters'); + } + } + + if (tagName && !PATTERN_TAG_URI.test(tagName)) { + throwError(state, 'tag name cannot contain such characters: ' + tagName); + } + + if (isVerbatim) { + state.tag = tagName; + } else if (_hasOwnProperty$2.call(state.tagMap, tagHandle)) { + state.tag = state.tagMap[tagHandle] + tagName; + } else if (tagHandle === '!') { + state.tag = '!' + tagName; + } else if (tagHandle === '!!') { + state.tag = 'tag:yaml.org,2002:' + tagName; + } else { + throwError(state, 'undeclared tag handle "' + tagHandle + '"'); + } + + return true; + } + + function readAnchorProperty(state) { + var _position, ch; + + ch = state.input.charCodeAt(state.position); + if (ch !== 0x26 + /* & */ + ) return false; + + if (state.anchor !== null) { + throwError(state, 'duplication of an anchor property'); + } + + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === _position) { + throwError(state, 'name of an anchor node must contain at least one character'); + } + + state.anchor = state.input.slice(_position, state.position); + return true; + } + + function readAlias(state) { + var _position, alias, ch; + + ch = state.input.charCodeAt(state.position); + if (ch !== 0x2A + /* * */ + ) return false; + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === _position) { + throwError(state, 'name of an alias node must contain at least one character'); + } + + alias = state.input.slice(_position, state.position); + + if (!state.anchorMap.hasOwnProperty(alias)) { + throwError(state, 'unidentified alias "' + alias + '"'); + } + + state.result = state.anchorMap[alias]; + skipSeparationSpace(state, true, -1); + return true; + } + + function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { + var allowBlockStyles, + allowBlockScalars, + allowBlockCollections, + indentStatus = 1, + // 1: this>parent, 0: this=parent, -1: this parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } + } + + if (indentStatus === 1) { + while (readTagProperty(state) || readAnchorProperty(state)) { + if (skipSeparationSpace(state, true, -1)) { + atNewLine = true; + allowBlockCollections = allowBlockStyles; + + if (state.lineIndent > parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } else { + allowBlockCollections = false; + } + } + } + + if (allowBlockCollections) { + allowBlockCollections = atNewLine || allowCompact; + } + + if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { + if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { + flowIndent = parentIndent; + } else { + flowIndent = parentIndent + 1; + } + + blockIndent = state.position - state.lineStart; + + if (indentStatus === 1) { + if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) { + hasContent = true; + } else { + if (allowBlockScalars && readBlockScalar(state, flowIndent) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) { + hasContent = true; + } else if (readAlias(state)) { + hasContent = true; + + if (state.tag !== null || state.anchor !== null) { + throwError(state, 'alias node should not have any properties'); + } + } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { + hasContent = true; + + if (state.tag === null) { + state.tag = '?'; + } + } + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } else if (indentStatus === 0) { + // Special case: block sequences are allowed to have same indentation level as the parent. + // http://www.yaml.org/spec/1.2/spec.html#id2799784 + hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); + } + } + + if (state.tag !== null && state.tag !== '!') { + if (state.tag === '?') { + // Implicit resolving is not allowed for non-scalar types, and '?' + // non-specific tag is only automatically assigned to plain scalars. + // + // We only need to check kind conformity in case user explicitly assigns '?' + // tag, for example like this: "! [0]" + // + if (state.result !== null && state.kind !== 'scalar') { + throwError(state, 'unacceptable node kind for ! tag; it should be "scalar", not "' + state.kind + '"'); + } + + for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { + type = state.implicitTypes[typeIndex]; + + if (type.resolve(state.result)) { + // `state.result` updated in resolver if matched + state.result = type.construct(state.result); + state.tag = type.tag; + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + + break; + } + } + } else if (_hasOwnProperty$2.call(state.typeMap[state.kind || 'fallback'], state.tag)) { + type = state.typeMap[state.kind || 'fallback'][state.tag]; + + if (state.result !== null && type.kind !== state.kind) { + throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); + } + + if (!type.resolve(state.result)) { + // `state.result` updated in resolver if matched + throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag'); + } else { + state.result = type.construct(state.result); + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } else { + throwError(state, 'unknown tag !<' + state.tag + '>'); + } + } + + if (state.listener !== null) { + state.listener('close', state); + } + + return state.tag !== null || state.anchor !== null || hasContent; + } + + function readDocument(state) { + var documentStart = state.position, + _position, + directiveName, + directiveArgs, + hasDirectives = false, + ch; + + state.version = null; + state.checkLineBreaks = state.legacy; + state.tagMap = {}; + state.anchorMap = {}; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + + if (state.lineIndent > 0 || ch !== 0x25 + /* % */ + ) { + break; + } + + hasDirectives = true; + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveName = state.input.slice(_position, state.position); + directiveArgs = []; + + if (directiveName.length < 1) { + throwError(state, 'directive name must not be less than one character in length'); + } + + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x23 + /* # */ + ) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0 && !is_EOL(ch)); + + break; + } + + if (is_EOL(ch)) break; + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveArgs.push(state.input.slice(_position, state.position)); + } + + if (ch !== 0) readLineBreak(state); + + if (_hasOwnProperty$2.call(directiveHandlers, directiveName)) { + directiveHandlers[directiveName](state, directiveName, directiveArgs); + } else { + throwWarning(state, 'unknown document directive "' + directiveName + '"'); + } + } + + skipSeparationSpace(state, true, -1); + + if (state.lineIndent === 0 && state.input.charCodeAt(state.position) === 0x2D + /* - */ + && state.input.charCodeAt(state.position + 1) === 0x2D + /* - */ + && state.input.charCodeAt(state.position + 2) === 0x2D + /* - */ + ) { + state.position += 3; + skipSeparationSpace(state, true, -1); + } else if (hasDirectives) { + throwError(state, 'directives end mark is expected'); + } + + composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); + skipSeparationSpace(state, true, -1); + + if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { + throwWarning(state, 'non-ASCII line breaks are interpreted as content'); + } + + state.documents.push(state.result); + + if (state.position === state.lineStart && testDocumentSeparator(state)) { + if (state.input.charCodeAt(state.position) === 0x2E + /* . */ + ) { + state.position += 3; + skipSeparationSpace(state, true, -1); + } + + return; + } + + if (state.position < state.length - 1) { + throwError(state, 'end of the stream or a document separator is expected'); + } else { + return; + } + } + + function loadDocuments(input, options) { + input = String(input); + options = options || {}; + + if (input.length !== 0) { + // Add tailing `\n` if not exists + if (input.charCodeAt(input.length - 1) !== 0x0A + /* LF */ + && input.charCodeAt(input.length - 1) !== 0x0D + /* CR */ + ) { + input += '\n'; + } // Strip BOM + + + if (input.charCodeAt(0) === 0xFEFF) { + input = input.slice(1); + } + } + + var state = new State(input, options); + var nullpos = input.indexOf('\0'); + + if (nullpos !== -1) { + state.position = nullpos; + throwError(state, 'null byte is not allowed in input'); + } // Use 0 as string terminator. That significantly simplifies bounds check. + + + state.input += '\0'; + + while (state.input.charCodeAt(state.position) === 0x20 + /* Space */ + ) { + state.lineIndent += 1; + state.position += 1; + } + + while (state.position < state.length - 1) { + readDocument(state); + } + + return state.documents; + } + + function loadAll(input, iterator, options) { + if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') { + options = iterator; + iterator = null; + } + + var documents = loadDocuments(input, options); + + if (typeof iterator !== 'function') { + return documents; + } + + for (var index = 0, length = documents.length; index < length; index += 1) { + iterator(documents[index]); + } + } + + function load(input, options) { + var documents = loadDocuments(input, options); + + if (documents.length === 0) { + /*eslint-disable no-undefined*/ + return undefined; + } else if (documents.length === 1) { + return documents[0]; + } + + throw new exception('expected a single document in the stream, but found more'); + } + + function safeLoadAll(input, iterator, options) { + if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') { + options = iterator; + iterator = null; + } + + return loadAll(input, iterator, common.extend({ + schema: default_safe + }, options)); + } + + function safeLoad(input, options) { + return load(input, common.extend({ + schema: default_safe + }, options)); + } + + var loadAll_1 = loadAll; + var load_1 = load; + var safeLoadAll_1 = safeLoadAll; + var safeLoad_1 = safeLoad; + var loader = { + loadAll: loadAll_1, + load: load_1, + safeLoadAll: safeLoadAll_1, + safeLoad: safeLoad_1 + }; + + /*eslint-disable no-use-before-define*/ + + + var _toString$2 = Object.prototype.toString; + var _hasOwnProperty$3 = Object.prototype.hasOwnProperty; + var CHAR_TAB = 0x09; + /* Tab */ + + var CHAR_LINE_FEED = 0x0A; + /* LF */ + + var CHAR_CARRIAGE_RETURN = 0x0D; + /* CR */ + + var CHAR_SPACE = 0x20; + /* Space */ + + var CHAR_EXCLAMATION = 0x21; + /* ! */ + + var CHAR_DOUBLE_QUOTE = 0x22; + /* " */ + + var CHAR_SHARP = 0x23; + /* # */ + + var CHAR_PERCENT = 0x25; + /* % */ + + var CHAR_AMPERSAND = 0x26; + /* & */ + + var CHAR_SINGLE_QUOTE = 0x27; + /* ' */ + + var CHAR_ASTERISK = 0x2A; + /* * */ + + var CHAR_COMMA = 0x2C; + /* , */ + + var CHAR_MINUS = 0x2D; + /* - */ + + var CHAR_COLON = 0x3A; + /* : */ + + var CHAR_EQUALS = 0x3D; + /* = */ + + var CHAR_GREATER_THAN = 0x3E; + /* > */ + + var CHAR_QUESTION = 0x3F; + /* ? */ + + var CHAR_COMMERCIAL_AT = 0x40; + /* @ */ + + var CHAR_LEFT_SQUARE_BRACKET = 0x5B; + /* [ */ + + var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; + /* ] */ + + var CHAR_GRAVE_ACCENT = 0x60; + /* ` */ + + var CHAR_LEFT_CURLY_BRACKET = 0x7B; + /* { */ + + var CHAR_VERTICAL_LINE = 0x7C; + /* | */ + + var CHAR_RIGHT_CURLY_BRACKET = 0x7D; + /* } */ + + var ESCAPE_SEQUENCES = {}; + ESCAPE_SEQUENCES[0x00] = '\\0'; + ESCAPE_SEQUENCES[0x07] = '\\a'; + ESCAPE_SEQUENCES[0x08] = '\\b'; + ESCAPE_SEQUENCES[0x09] = '\\t'; + ESCAPE_SEQUENCES[0x0A] = '\\n'; + ESCAPE_SEQUENCES[0x0B] = '\\v'; + ESCAPE_SEQUENCES[0x0C] = '\\f'; + ESCAPE_SEQUENCES[0x0D] = '\\r'; + ESCAPE_SEQUENCES[0x1B] = '\\e'; + ESCAPE_SEQUENCES[0x22] = '\\"'; + ESCAPE_SEQUENCES[0x5C] = '\\\\'; + ESCAPE_SEQUENCES[0x85] = '\\N'; + ESCAPE_SEQUENCES[0xA0] = '\\_'; + ESCAPE_SEQUENCES[0x2028] = '\\L'; + ESCAPE_SEQUENCES[0x2029] = '\\P'; + var DEPRECATED_BOOLEANS_SYNTAX = ['y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF']; + + function compileStyleMap(schema, map) { + var result, keys, index, length, tag, style, type; + if (map === null) return {}; + result = {}; + keys = Object.keys(map); + + for (index = 0, length = keys.length; index < length; index += 1) { + tag = keys[index]; + style = String(map[tag]); + + if (tag.slice(0, 2) === '!!') { + tag = 'tag:yaml.org,2002:' + tag.slice(2); + } + + type = schema.compiledTypeMap['fallback'][tag]; + + if (type && _hasOwnProperty$3.call(type.styleAliases, style)) { + style = type.styleAliases[style]; + } + + result[tag] = style; + } + + return result; + } + + function encodeHex(character) { + var string, handle, length; + string = character.toString(16).toUpperCase(); + + if (character <= 0xFF) { + handle = 'x'; + length = 2; + } else if (character <= 0xFFFF) { + handle = 'u'; + length = 4; + } else if (character <= 0xFFFFFFFF) { + handle = 'U'; + length = 8; + } else { + throw new exception('code point within a string may not be greater than 0xFFFFFFFF'); + } + + return '\\' + handle + common.repeat('0', length - string.length) + string; + } + + function State$1(options) { + this.schema = options['schema'] || default_full; + this.indent = Math.max(1, options['indent'] || 2); + this.noArrayIndent = options['noArrayIndent'] || false; + this.skipInvalid = options['skipInvalid'] || false; + this.flowLevel = common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']; + this.styleMap = compileStyleMap(this.schema, options['styles'] || null); + this.sortKeys = options['sortKeys'] || false; + this.lineWidth = options['lineWidth'] || 80; + this.noRefs = options['noRefs'] || false; + this.noCompatMode = options['noCompatMode'] || false; + this.condenseFlow = options['condenseFlow'] || false; + this.implicitTypes = this.schema.compiledImplicit; + this.explicitTypes = this.schema.compiledExplicit; + this.tag = null; + this.result = ''; + this.duplicates = []; + this.usedDuplicates = null; + } // Indents every line in a string. Empty lines (\n only) are not indented. + + + function indentString(string, spaces) { + var ind = common.repeat(' ', spaces), + position = 0, + next = -1, + result = '', + line, + length = string.length; + + while (position < length) { + next = string.indexOf('\n', position); + + if (next === -1) { + line = string.slice(position); + position = length; + } else { + line = string.slice(position, next + 1); + position = next + 1; + } + + if (line.length && line !== '\n') result += ind; + result += line; + } + + return result; + } + + function generateNextLine(state, level) { + return '\n' + common.repeat(' ', state.indent * level); + } + + function testImplicitResolving(state, str) { + var index, length, type; + + for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { + type = state.implicitTypes[index]; + + if (type.resolve(str)) { + return true; + } + } + + return false; + } // [33] s-white ::= s-space | s-tab + + + function isWhitespace(c) { + return c === CHAR_SPACE || c === CHAR_TAB; + } // Returns true if the character can be printed without escaping. + // From YAML 1.2: "any allowed characters known to be non-printable + // should also be escaped. [However,] This isn’t mandatory" + // Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. + + + function isPrintable(c) { + return 0x00020 <= c && c <= 0x00007E || 0x000A1 <= c && c <= 0x00D7FF && c !== 0x2028 && c !== 0x2029 || 0x0E000 <= c && c <= 0x00FFFD && c !== 0xFEFF + /* BOM */ + || 0x10000 <= c && c <= 0x10FFFF; + } // [34] ns-char ::= nb-char - s-white + // [27] nb-char ::= c-printable - b-char - c-byte-order-mark + // [26] b-char ::= b-line-feed | b-carriage-return + // [24] b-line-feed ::= #xA /* LF */ + // [25] b-carriage-return ::= #xD /* CR */ + // [3] c-byte-order-mark ::= #xFEFF + + + function isNsChar(c) { + return isPrintable(c) && !isWhitespace(c) // byte-order-mark + && c !== 0xFEFF // b-char + && c !== CHAR_CARRIAGE_RETURN && c !== CHAR_LINE_FEED; + } // Simplified test for values allowed after the first character in plain style. + + + function isPlainSafe(c, prev) { + // Uses a subset of nb-char - c-flow-indicator - ":" - "#" + // where nb-char ::= c-printable - b-char - c-byte-order-mark. + return isPrintable(c) && c !== 0xFEFF // - c-flow-indicator + && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET // - ":" - "#" + // /* An ns-char preceding */ "#" + && c !== CHAR_COLON && (c !== CHAR_SHARP || prev && isNsChar(prev)); + } // Simplified test for values allowed as the first character in plain style. + + + function isPlainSafeFirst(c) { + // Uses a subset of ns-char - c-indicator + // where ns-char = nb-char - s-white. + return isPrintable(c) && c !== 0xFEFF && !isWhitespace(c) // - s-white + // - (c-indicator ::= + // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” + && c !== CHAR_MINUS && c !== CHAR_QUESTION && c !== CHAR_COLON && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” + && c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && c !== CHAR_EXCLAMATION && c !== CHAR_VERTICAL_LINE && c !== CHAR_EQUALS && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && c !== CHAR_DOUBLE_QUOTE // | “%” | “@” | “`”) + && c !== CHAR_PERCENT && c !== CHAR_COMMERCIAL_AT && c !== CHAR_GRAVE_ACCENT; + } // Determines whether block indentation indicator is required. + + + function needIndentIndicator(string) { + var leadingSpaceRe = /^\n* /; + return leadingSpaceRe.test(string); + } + + var STYLE_PLAIN = 1, + STYLE_SINGLE = 2, + STYLE_LITERAL = 3, + STYLE_FOLDED = 4, + STYLE_DOUBLE = 5; // Determines which scalar styles are possible and returns the preferred style. + // lineWidth = -1 => no limit. + // Pre-conditions: str.length > 0. + // Post-conditions: + // STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. + // STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). + // STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). + + function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) { + var i; + var char, prev_char; + var hasLineBreak = false; + var hasFoldableLine = false; // only checked if shouldTrackWidth + + var shouldTrackWidth = lineWidth !== -1; + var previousLineBreak = -1; // count the first line correctly + + var plain = isPlainSafeFirst(string.charCodeAt(0)) && !isWhitespace(string.charCodeAt(string.length - 1)); + + if (singleLineOnly) { + // Case: no block styles. + // Check for disallowed characters to rule out plain and single. + for (i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + + if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + + prev_char = i > 0 ? string.charCodeAt(i - 1) : null; + plain = plain && isPlainSafe(char, prev_char); + } + } else { + // Case: block styles permitted. + for (i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + + if (char === CHAR_LINE_FEED) { + hasLineBreak = true; // Check if any line can be folded. + + if (shouldTrackWidth) { + hasFoldableLine = hasFoldableLine || // Foldable line = too long, and not more-indented. + i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== ' '; + previousLineBreak = i; + } + } else if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + + prev_char = i > 0 ? string.charCodeAt(i - 1) : null; + plain = plain && isPlainSafe(char, prev_char); + } // in case the end is missing a \n + + + hasFoldableLine = hasFoldableLine || shouldTrackWidth && i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== ' '; + } // Although every style can represent \n without escaping, prefer block styles + // for multiline, since they're more readable and they don't add empty lines. + // Also prefer folding a super-long line. + + + if (!hasLineBreak && !hasFoldableLine) { + // Strings interpretable as another type have to be quoted; + // e.g. the string 'true' vs. the boolean true. + return plain && !testAmbiguousType(string) ? STYLE_PLAIN : STYLE_SINGLE; + } // Edge case: block indentation indicator can only have one digit. + + + if (indentPerLevel > 9 && needIndentIndicator(string)) { + return STYLE_DOUBLE; + } // At this point we know block styles are valid. + // Prefer literal style unless we want to fold. + + + return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; + } // Note: line breaking/folding is implemented for only the folded style. + // NB. We drop the last trailing newline (if any) of a returned block scalar + // since the dumper adds its own newline. This always works: + // • No ending newline => unaffected; already using strip "-" chomping. + // • Ending newline => removed then restored. + // Importantly, this keeps the "+" chomp indicator from gaining an extra line. + + + function writeScalar(state, string, level, iskey) { + state.dump = function () { + if (string.length === 0) { + return "''"; + } + + if (!state.noCompatMode && DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) { + return "'" + string + "'"; + } + + var indent = state.indent * Math.max(1, level); // no 0-indent scalars + // As indentation gets deeper, let the width decrease monotonically + // to the lower bound min(state.lineWidth, 40). + // Note that this implies + // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound. + // state.lineWidth > 40 + state.indent: width decreases until the lower bound. + // This behaves better than a constant minimum width which disallows narrower options, + // or an indent threshold which causes the width to suddenly increase. + + var lineWidth = state.lineWidth === -1 ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); // Without knowing if keys are implicit/explicit, assume implicit for safety. + + var singleLineOnly = iskey // No block styles in flow mode. + || state.flowLevel > -1 && level >= state.flowLevel; + + function testAmbiguity(string) { + return testImplicitResolving(state, string); + } + + switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) { + case STYLE_PLAIN: + return string; + + case STYLE_SINGLE: + return "'" + string.replace(/'/g, "''") + "'"; + + case STYLE_LITERAL: + return '|' + blockHeader(string, state.indent) + dropEndingNewline(indentString(string, indent)); + + case STYLE_FOLDED: + return '>' + blockHeader(string, state.indent) + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); + + case STYLE_DOUBLE: + return '"' + escapeString(string) + '"'; + + default: + throw new exception('impossible error: invalid scalar style'); + } + }(); + } // Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. + + + function blockHeader(string, indentPerLevel) { + var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''; // note the special case: the string '\n' counts as a "trailing" empty line. + + var clip = string[string.length - 1] === '\n'; + var keep = clip && (string[string.length - 2] === '\n' || string === '\n'); + var chomp = keep ? '+' : clip ? '' : '-'; + return indentIndicator + chomp + '\n'; + } // (See the note for writeScalar.) + + + function dropEndingNewline(string) { + return string[string.length - 1] === '\n' ? string.slice(0, -1) : string; + } // Note: a long line without a suitable break point will exceed the width limit. + // Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. + + + function foldString(string, width) { + // In folded style, $k$ consecutive newlines output as $k+1$ newlines— + // unless they're before or after a more-indented line, or at the very + // beginning or end, in which case $k$ maps to $k$. + // Therefore, parse each chunk as newline(s) followed by a content line. + var lineRe = /(\n+)([^\n]*)/g; // first line (possibly an empty line) + + var result = function () { + var nextLF = string.indexOf('\n'); + nextLF = nextLF !== -1 ? nextLF : string.length; + lineRe.lastIndex = nextLF; + return foldLine(string.slice(0, nextLF), width); + }(); // If we haven't reached the first content line yet, don't add an extra \n. + + + var prevMoreIndented = string[0] === '\n' || string[0] === ' '; + var moreIndented; // rest of the lines + + var match; + + while (match = lineRe.exec(string)) { + var prefix = match[1], + line = match[2]; + moreIndented = line[0] === ' '; + result += prefix + (!prevMoreIndented && !moreIndented && line !== '' ? '\n' : '') + foldLine(line, width); + prevMoreIndented = moreIndented; + } + + return result; + } // Greedy line breaking. + // Picks the longest line under the limit each time, + // otherwise settles for the shortest line over the limit. + // NB. More-indented lines *cannot* be folded, as that would add an extra \n. + + + function foldLine(line, width) { + if (line === '' || line[0] === ' ') return line; // Since a more-indented line adds a \n, breaks can't be followed by a space. + + var breakRe = / [^ ]/g; // note: the match index will always be <= length-2. + + var match; // start is an inclusive index. end, curr, and next are exclusive. + + var start = 0, + end, + curr = 0, + next = 0; + var result = ''; // Invariants: 0 <= start <= length-1. + // 0 <= curr <= next <= max(0, length-2). curr - start <= width. + // Inside the loop: + // A match implies length >= 2, so curr and next are <= length-2. + + while (match = breakRe.exec(line)) { + next = match.index; // maintain invariant: curr - start <= width + + if (next - start > width) { + end = curr > start ? curr : next; // derive end <= length-2 + + result += '\n' + line.slice(start, end); // skip the space that was output as \n + + start = end + 1; // derive start <= length-1 + } + + curr = next; + } // By the invariants, start <= length-1, so there is something left over. + // It is either the whole string or a part starting from non-whitespace. + + + result += '\n'; // Insert a break if the remainder is too long and there is a break available. + + if (line.length - start > width && curr > start) { + result += line.slice(start, curr) + '\n' + line.slice(curr + 1); + } else { + result += line.slice(start); + } + + return result.slice(1); // drop extra \n joiner + } // Escapes a double-quoted string. + + + function escapeString(string) { + var result = ''; + var char, nextChar; + var escapeSeq; + + for (var i = 0; i < string.length; i++) { + char = string.charCodeAt(i); // Check for surrogate pairs (reference Unicode 3.0 section "3.7 Surrogates"). + + if (char >= 0xD800 && char <= 0xDBFF + /* high surrogate */ + ) { + nextChar = string.charCodeAt(i + 1); + + if (nextChar >= 0xDC00 && nextChar <= 0xDFFF + /* low surrogate */ + ) { + // Combine the surrogate pair and store it escaped. + result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000); // Advance index one extra since we already used that char here. + + i++; + continue; + } + } + + escapeSeq = ESCAPE_SEQUENCES[char]; + result += !escapeSeq && isPrintable(char) ? string[i] : escapeSeq || encodeHex(char); + } + + return result; + } + + function writeFlowSequence(state, level, object) { + var _result = '', + _tag = state.tag, + index, + length; + + for (index = 0, length = object.length; index < length; index += 1) { + // Write only valid elements. + if (writeNode(state, level, object[index], false, false)) { + if (index !== 0) _result += ',' + (!state.condenseFlow ? ' ' : ''); + _result += state.dump; + } + } + + state.tag = _tag; + state.dump = '[' + _result + ']'; + } + + function writeBlockSequence(state, level, object, compact) { + var _result = '', + _tag = state.tag, + index, + length; + + for (index = 0, length = object.length; index < length; index += 1) { + // Write only valid elements. + if (writeNode(state, level + 1, object[index], true, true)) { + if (!compact || index !== 0) { + _result += generateNextLine(state, level); + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + _result += '-'; + } else { + _result += '- '; + } + + _result += state.dump; + } + } + + state.tag = _tag; + state.dump = _result || '[]'; // Empty sequence if no valid values. + } + + function writeFlowMapping(state, level, object) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + pairBuffer; + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + pairBuffer = ''; + if (index !== 0) pairBuffer += ', '; + if (state.condenseFlow) pairBuffer += '"'; + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + if (!writeNode(state, level, objectKey, false, false)) { + continue; // Skip this pair because of invalid key; + } + + if (state.dump.length > 1024) pairBuffer += '? '; + pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' '); + + if (!writeNode(state, level, objectValue, false, false)) { + continue; // Skip this pair because of invalid value. + } + + pairBuffer += state.dump; // Both key and value are valid. + + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = '{' + _result + '}'; + } + + function writeBlockMapping(state, level, object, compact) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + explicitPair, + pairBuffer; // Allow sorting keys so that the output file is deterministic + + if (state.sortKeys === true) { + // Default sorting + objectKeyList.sort(); + } else if (typeof state.sortKeys === 'function') { + // Custom sort function + objectKeyList.sort(state.sortKeys); + } else if (state.sortKeys) { + // Something is wrong + throw new exception('sortKeys must be a boolean or a function'); + } + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + pairBuffer = ''; + + if (!compact || index !== 0) { + pairBuffer += generateNextLine(state, level); + } + + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + if (!writeNode(state, level + 1, objectKey, true, true, true)) { + continue; // Skip this pair because of invalid key. + } + + explicitPair = state.tag !== null && state.tag !== '?' || state.dump && state.dump.length > 1024; + + if (explicitPair) { + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += '?'; + } else { + pairBuffer += '? '; + } + } + + pairBuffer += state.dump; + + if (explicitPair) { + pairBuffer += generateNextLine(state, level); + } + + if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { + continue; // Skip this pair because of invalid value. + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += ':'; + } else { + pairBuffer += ': '; + } + + pairBuffer += state.dump; // Both key and value are valid. + + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = _result || '{}'; // Empty mapping if no valid pairs. + } + + function detectType(state, object, explicit) { + var _result, typeList, index, length, type, style; + + typeList = explicit ? state.explicitTypes : state.implicitTypes; + + for (index = 0, length = typeList.length; index < length; index += 1) { + type = typeList[index]; + + if ((type.instanceOf || type.predicate) && (!type.instanceOf || typeof object === 'object' && object instanceof type.instanceOf) && (!type.predicate || type.predicate(object))) { + state.tag = explicit ? type.tag : '?'; + + if (type.represent) { + style = state.styleMap[type.tag] || type.defaultStyle; + + if (_toString$2.call(type.represent) === '[object Function]') { + _result = type.represent(object, style); + } else if (_hasOwnProperty$3.call(type.represent, style)) { + _result = type.represent[style](object, style); + } else { + throw new exception('!<' + type.tag + '> tag resolver accepts not "' + style + '" style'); + } + + state.dump = _result; + } + + return true; + } + } + + return false; + } // Serializes `object` and writes it to global `result`. + // Returns true on success, or false on invalid object. + // + + + function writeNode(state, level, object, block, compact, iskey) { + state.tag = null; + state.dump = object; + + if (!detectType(state, object, false)) { + detectType(state, object, true); + } + + var type = _toString$2.call(state.dump); + + if (block) { + block = state.flowLevel < 0 || state.flowLevel > level; + } + + var objectOrArray = type === '[object Object]' || type === '[object Array]', + duplicateIndex, + duplicate; + + if (objectOrArray) { + duplicateIndex = state.duplicates.indexOf(object); + duplicate = duplicateIndex !== -1; + } + + if (state.tag !== null && state.tag !== '?' || duplicate || state.indent !== 2 && level > 0) { + compact = false; + } + + if (duplicate && state.usedDuplicates[duplicateIndex]) { + state.dump = '*ref_' + duplicateIndex; + } else { + if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { + state.usedDuplicates[duplicateIndex] = true; + } + + if (type === '[object Object]') { + if (block && Object.keys(state.dump).length !== 0) { + writeBlockMapping(state, level, state.dump, compact); + + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowMapping(state, level, state.dump); + + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object Array]') { + var arrayLevel = state.noArrayIndent && level > 0 ? level - 1 : level; + + if (block && state.dump.length !== 0) { + writeBlockSequence(state, arrayLevel, state.dump, compact); + + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowSequence(state, arrayLevel, state.dump); + + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object String]') { + if (state.tag !== '?') { + writeScalar(state, state.dump, level, iskey); + } + } else { + if (state.skipInvalid) return false; + throw new exception('unacceptable kind of an object to dump ' + type); + } + + if (state.tag !== null && state.tag !== '?') { + state.dump = '!<' + state.tag + '> ' + state.dump; + } + } + + return true; + } + + function getDuplicateReferences(object, state) { + var objects = [], + duplicatesIndexes = [], + index, + length; + inspectNode(object, objects, duplicatesIndexes); + + for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { + state.duplicates.push(objects[duplicatesIndexes[index]]); + } + + state.usedDuplicates = new Array(length); + } + + function inspectNode(object, objects, duplicatesIndexes) { + var objectKeyList, index, length; + + if (object !== null && typeof object === 'object') { + index = objects.indexOf(object); + + if (index !== -1) { + if (duplicatesIndexes.indexOf(index) === -1) { + duplicatesIndexes.push(index); + } + } else { + objects.push(object); + + if (Array.isArray(object)) { + for (index = 0, length = object.length; index < length; index += 1) { + inspectNode(object[index], objects, duplicatesIndexes); + } + } else { + objectKeyList = Object.keys(object); + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); + } + } + } + } + } + + function dump(input, options) { + options = options || {}; + var state = new State$1(options); + if (!state.noRefs) getDuplicateReferences(input, state); + if (writeNode(state, 0, input, true, true)) return state.dump + '\n'; + return ''; + } + + function safeDump(input, options) { + return dump(input, common.extend({ + schema: default_safe + }, options)); + } + + var dump_1 = dump; + var safeDump_1 = safeDump; + var dumper = { + dump: dump_1, + safeDump: safeDump_1 + }; + + function deprecated(name) { + return function () { + throw new Error('Function ' + name + ' is deprecated and cannot be used.'); + }; + } + + var Type$1 = type; + var Schema$1 = schema; + var FAILSAFE_SCHEMA = failsafe; + var JSON_SCHEMA = json; + var CORE_SCHEMA = core; + var DEFAULT_SAFE_SCHEMA = default_safe; + var DEFAULT_FULL_SCHEMA = default_full; + var load$1 = loader.load; + var loadAll$1 = loader.loadAll; + var safeLoad$1 = loader.safeLoad; + var safeLoadAll$1 = loader.safeLoadAll; + var dump$1 = dumper.dump; + var safeDump$1 = dumper.safeDump; + var YAMLException$1 = exception; // Deprecated schema names from JS-YAML 2.0.x + + var MINIMAL_SCHEMA = failsafe; + var SAFE_SCHEMA = default_safe; + var DEFAULT_SCHEMA = default_full; // Deprecated functions from JS-YAML 1.x.x + + var scan = deprecated('scan'); + var parse = deprecated('parse'); + var compose = deprecated('compose'); + var addConstructor = deprecated('addConstructor'); + var jsYaml = { + Type: Type$1, + Schema: Schema$1, + FAILSAFE_SCHEMA: FAILSAFE_SCHEMA, + JSON_SCHEMA: JSON_SCHEMA, + CORE_SCHEMA: CORE_SCHEMA, + DEFAULT_SAFE_SCHEMA: DEFAULT_SAFE_SCHEMA, + DEFAULT_FULL_SCHEMA: DEFAULT_FULL_SCHEMA, + load: load$1, + loadAll: loadAll$1, + safeLoad: safeLoad$1, + safeLoadAll: safeLoadAll$1, + dump: dump$1, + safeDump: safeDump$1, + YAMLException: YAMLException$1, + MINIMAL_SCHEMA: MINIMAL_SCHEMA, + SAFE_SCHEMA: SAFE_SCHEMA, + DEFAULT_SCHEMA: DEFAULT_SCHEMA, + scan: scan, + parse: parse, + compose: compose, + addConstructor: addConstructor + }; + + var jsYaml$1 = jsYaml; + + function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + + function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + /** + * Redirect - object used to redirect some requests + * e.g. + * { + * title: 1x1-transparent.gif + * comment: http://probablyprogramming.com/2009/03/15/the-tiniest-gif-ever + * contentType: image/gif;base64 + * content: R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== + * } + * @typedef {Object} Redirect + * @property {string} title + * @property {string} comment + * @property {string} content + * @property {string} contentType + */ + + var Redirects = /*#__PURE__*/function () { + /** + * Converts rawYaml into JS object with sources titles used as keys + * @param rawYaml + * @returns {Object} - return object with titles in the keys and RedirectSources + * in the values + */ + function Redirects(rawYaml) { + classCallCheck(this, Redirects); + + try { + var arrOfRedirects = jsYaml$1.safeLoad(rawYaml); + this.redirects = arrOfRedirects.reduce(function (acc, redirect) { + return _objectSpread(_objectSpread({}, acc), {}, defineProperty({}, redirect.title, redirect)); + }, {}); + } catch (e) { + // eslint-disable-next-line no-console + console.log("Was unable to load YAML into JS due to: ".concat(e.message)); + throw e; + } + } + /** + * Returns redirect source object + * @param {string} title + * @return {Redirect} + */ + + + createClass(Redirects, [{ + key: "getRedirect", + value: function getRedirect(title) { + var _this = this; + + if (Object.prototype.hasOwnProperty.call(this.redirects, title)) { + return this.redirects[title]; + } // look title among aliases + + + var values = Object.keys(this.redirects).map(function (key) { + return _this.redirects[key]; + }); + return values.find(function (redirect) { + var aliases = redirect.aliases; + + if (!aliases) { + return false; + } + + return aliases.indexOf(title) > -1; + }); + } + }]); + + return Redirects; + }(); + /** * @typedef {Object} Source - scriptlet properties * @property {string} name Scriptlet name @@ -5297,7 +9276,8 @@ convertAbpToAdg: convertAbpSnippetToAdg, convertScriptletToAdg: convertScriptletToAdg, convertAdgToUbo: convertAdgScriptletToUbo, - redirects: redirectsCjs + redirects: redirectsCjs, + Redirects: Redirects }; }(); diff --git a/package.json b/package.json index f55eb2fe0..97ce05bac 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "scriptlets", - "version": "1.3.2", + "version": "1.3.3", "scripts": { "watch": "rollup -c -w", "build": "rollup -c && babel-node redirects.build.js", diff --git a/src/scriptlets/index.js b/src/scriptlets/index.js index 9cca9f544..b21393200 100644 --- a/src/scriptlets/index.js +++ b/src/scriptlets/index.js @@ -1,5 +1,7 @@ import { redirectsCjs } from '../redirects'; +import Redirects from '../redirects/redirects'; + import { attachDependencies, addCall, @@ -67,6 +69,7 @@ const scriptletsObject = (() => ({ convertScriptletToAdg, convertAdgToUbo: convertAdgScriptletToUbo, redirects: redirectsCjs, + Redirects, }))(); export default scriptletsObject; From a75329ec000b8509cbae455c1633e61c2af44735 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Thu, 3 Sep 2020 18:39:01 +0300 Subject: [PATCH 22/29] one more update --- dist/cjs/scriptletsCjs.js | 110 +++++++++++++++++----------------- dist/redirects.js | 2 +- dist/redirects.yml | 2 +- dist/scriptlets.corelibs.json | 2 +- dist/scriptlets.js | 110 +++++++++++++++++----------------- package.json | 2 +- src/redirects/index.js | 3 + src/scriptlets/index.js | 3 - 8 files changed, 117 insertions(+), 117 deletions(-) diff --git a/dist/cjs/scriptletsCjs.js b/dist/cjs/scriptletsCjs.js index a78dce6a1..3af02a73e 100644 --- a/dist/cjs/scriptletsCjs.js +++ b/dist/cjs/scriptletsCjs.js @@ -1,7 +1,7 @@ /** * AdGuard Scriptlets - * Version 1.3.3 + * Version 1.3.4 */ /** @@ -5194,58 +5194,6 @@ var redirectsList = /*#__PURE__*/Object.freeze({ AmazonApstag: AmazonApstag }); -/** - * Finds redirect resource by it's name - * @param {string} name - redirect name - */ - -var getRedirectByName = function getRedirectByName(name) { - var redirects = Object.keys(redirectsList).map(function (key) { - return redirectsList[key]; - }); - return redirects.find(function (r) { - return r.names && r.names.indexOf(name) > -1; - }); -}; -/** - * @typedef {Object} Source - redirect properties - * @property {string} name redirect name - * @property {Array} args Arguments for redirect function - * @property {'extension'|'test'} [engine] - - * Defines the final form of redirect string presentation - * @property {boolean} [verbose] flag to enable printing to console debug information - */ - -/** - * Returns redirect code by param - * @param {Source} source - * @returns {string} redirect code - */ - - -var getRedirectCode = function getRedirectCode(source) { - var redirect = getRedirectByName(source.name); - var result = attachDependencies(redirect); - result = addCall(redirect, result); // redirect code for different sources is checked in tests - // so it should be just a code without any source and props passed - - result = source.engine === 'test' ? wrapInNonameFunc(result) : passSourceAndProps(source, result); - return result; -}; - -var redirectsCjs = { - getCode: getRedirectCode, - isAdgRedirectRule: validator.isAdgRedirectRule, - isValidAdgRedirectRule: validator.isValidAdgRedirectRule, - isAdgRedirectCompatibleWithUbo: validator.isAdgRedirectCompatibleWithUbo, - isUboRedirectCompatibleWithAdg: validator.isUboRedirectCompatibleWithAdg, - isAbpRedirectCompatibleWithAdg: validator.isAbpRedirectCompatibleWithAdg, - convertUboRedirectToAdg: convertUboRedirectToAdg, - convertAbpRedirectToAdg: convertAbpRedirectToAdg, - convertRedirectToAdg: convertRedirectToAdg, - convertAdgRedirectToUbo: convertAdgRedirectToUbo -}; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); @@ -9225,6 +9173,59 @@ var Redirects = /*#__PURE__*/function () { return Redirects; }(); +/** + * Finds redirect resource by it's name + * @param {string} name - redirect name + */ + +var getRedirectByName = function getRedirectByName(name) { + var redirects = Object.keys(redirectsList).map(function (key) { + return redirectsList[key]; + }); + return redirects.find(function (r) { + return r.names && r.names.indexOf(name) > -1; + }); +}; +/** + * @typedef {Object} Source - redirect properties + * @property {string} name redirect name + * @property {Array} args Arguments for redirect function + * @property {'extension'|'test'} [engine] - + * Defines the final form of redirect string presentation + * @property {boolean} [verbose] flag to enable printing to console debug information + */ + +/** + * Returns redirect code by param + * @param {Source} source + * @returns {string} redirect code + */ + + +var getRedirectCode = function getRedirectCode(source) { + var redirect = getRedirectByName(source.name); + var result = attachDependencies(redirect); + result = addCall(redirect, result); // redirect code for different sources is checked in tests + // so it should be just a code without any source and props passed + + result = source.engine === 'test' ? wrapInNonameFunc(result) : passSourceAndProps(source, result); + return result; +}; + +var redirectsCjs = { + Redirects: Redirects, + getCode: getRedirectCode, + isAdgRedirectRule: validator.isAdgRedirectRule, + isValidAdgRedirectRule: validator.isValidAdgRedirectRule, + isAdgRedirectCompatibleWithUbo: validator.isAdgRedirectCompatibleWithUbo, + isUboRedirectCompatibleWithAdg: validator.isUboRedirectCompatibleWithAdg, + isAbpRedirectCompatibleWithAdg: validator.isAbpRedirectCompatibleWithAdg, + convertUboRedirectToAdg: convertUboRedirectToAdg, + convertAbpRedirectToAdg: convertAbpRedirectToAdg, + convertRedirectToAdg: convertRedirectToAdg, + convertAdgRedirectToUbo: convertAdgRedirectToUbo +}; + /** * @typedef {Object} Source - scriptlet properties * @property {string} name Scriptlet name @@ -9275,8 +9276,7 @@ var scriptletsObject = function () { convertAbpToAdg: convertAbpSnippetToAdg, convertScriptletToAdg: convertScriptletToAdg, convertAdgToUbo: convertAdgScriptletToUbo, - redirects: redirectsCjs, - Redirects: Redirects + redirects: redirectsCjs }; }(); diff --git a/dist/redirects.js b/dist/redirects.js index 6b88bd40d..668827c0b 100644 --- a/dist/redirects.js +++ b/dist/redirects.js @@ -1,7 +1,7 @@ /** * AdGuard Scriptlets - * Version 1.3.3 + * Version 1.3.4 */ var Redirects = (function () { diff --git a/dist/redirects.yml b/dist/redirects.yml index c6e8ab1e7..c7be16214 100644 --- a/dist/redirects.yml +++ b/dist/redirects.yml @@ -1,6 +1,6 @@ # # AdGuard Scriptlets (Redirects Source) -# Version 1.3.3 +# Version 1.3.4 # - title: 1x1-transparent.gif description: |- diff --git a/dist/scriptlets.corelibs.json b/dist/scriptlets.corelibs.json index 3febc5775..83ddd127e 100644 --- a/dist/scriptlets.corelibs.json +++ b/dist/scriptlets.corelibs.json @@ -1,5 +1,5 @@ { - "version": "1.3.3", + "version": "1.3.4", "scriptlets": [ { "names": [ diff --git a/dist/scriptlets.js b/dist/scriptlets.js index 8932610df..664b95f48 100644 --- a/dist/scriptlets.js +++ b/dist/scriptlets.js @@ -1,7 +1,7 @@ /** * AdGuard Scriptlets - * Version 1.3.3 + * Version 1.3.4 */ (function () { @@ -5195,58 +5195,6 @@ AmazonApstag: AmazonApstag }); - /** - * Finds redirect resource by it's name - * @param {string} name - redirect name - */ - - var getRedirectByName = function getRedirectByName(name) { - var redirects = Object.keys(redirectsList).map(function (key) { - return redirectsList[key]; - }); - return redirects.find(function (r) { - return r.names && r.names.indexOf(name) > -1; - }); - }; - /** - * @typedef {Object} Source - redirect properties - * @property {string} name redirect name - * @property {Array} args Arguments for redirect function - * @property {'extension'|'test'} [engine] - - * Defines the final form of redirect string presentation - * @property {boolean} [verbose] flag to enable printing to console debug information - */ - - /** - * Returns redirect code by param - * @param {Source} source - * @returns {string} redirect code - */ - - - var getRedirectCode = function getRedirectCode(source) { - var redirect = getRedirectByName(source.name); - var result = attachDependencies(redirect); - result = addCall(redirect, result); // redirect code for different sources is checked in tests - // so it should be just a code without any source and props passed - - result = source.engine === 'test' ? wrapInNonameFunc(result) : passSourceAndProps(source, result); - return result; - }; - - var redirectsCjs = { - getCode: getRedirectCode, - isAdgRedirectRule: validator.isAdgRedirectRule, - isValidAdgRedirectRule: validator.isValidAdgRedirectRule, - isAdgRedirectCompatibleWithUbo: validator.isAdgRedirectCompatibleWithUbo, - isUboRedirectCompatibleWithAdg: validator.isUboRedirectCompatibleWithAdg, - isAbpRedirectCompatibleWithAdg: validator.isAbpRedirectCompatibleWithAdg, - convertUboRedirectToAdg: convertUboRedirectToAdg, - convertAbpRedirectToAdg: convertAbpRedirectToAdg, - convertRedirectToAdg: convertRedirectToAdg, - convertAdgRedirectToUbo: convertAdgRedirectToUbo - }; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); @@ -9226,6 +9174,59 @@ return Redirects; }(); + /** + * Finds redirect resource by it's name + * @param {string} name - redirect name + */ + + var getRedirectByName = function getRedirectByName(name) { + var redirects = Object.keys(redirectsList).map(function (key) { + return redirectsList[key]; + }); + return redirects.find(function (r) { + return r.names && r.names.indexOf(name) > -1; + }); + }; + /** + * @typedef {Object} Source - redirect properties + * @property {string} name redirect name + * @property {Array} args Arguments for redirect function + * @property {'extension'|'test'} [engine] - + * Defines the final form of redirect string presentation + * @property {boolean} [verbose] flag to enable printing to console debug information + */ + + /** + * Returns redirect code by param + * @param {Source} source + * @returns {string} redirect code + */ + + + var getRedirectCode = function getRedirectCode(source) { + var redirect = getRedirectByName(source.name); + var result = attachDependencies(redirect); + result = addCall(redirect, result); // redirect code for different sources is checked in tests + // so it should be just a code without any source and props passed + + result = source.engine === 'test' ? wrapInNonameFunc(result) : passSourceAndProps(source, result); + return result; + }; + + var redirectsCjs = { + Redirects: Redirects, + getCode: getRedirectCode, + isAdgRedirectRule: validator.isAdgRedirectRule, + isValidAdgRedirectRule: validator.isValidAdgRedirectRule, + isAdgRedirectCompatibleWithUbo: validator.isAdgRedirectCompatibleWithUbo, + isUboRedirectCompatibleWithAdg: validator.isUboRedirectCompatibleWithAdg, + isAbpRedirectCompatibleWithAdg: validator.isAbpRedirectCompatibleWithAdg, + convertUboRedirectToAdg: convertUboRedirectToAdg, + convertAbpRedirectToAdg: convertAbpRedirectToAdg, + convertRedirectToAdg: convertRedirectToAdg, + convertAdgRedirectToUbo: convertAdgRedirectToUbo + }; + /** * @typedef {Object} Source - scriptlet properties * @property {string} name Scriptlet name @@ -9276,8 +9277,7 @@ convertAbpToAdg: convertAbpSnippetToAdg, convertScriptletToAdg: convertScriptletToAdg, convertAdgToUbo: convertAdgScriptletToUbo, - redirects: redirectsCjs, - Redirects: Redirects + redirects: redirectsCjs }; }(); diff --git a/package.json b/package.json index 97ce05bac..597eb4e20 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "scriptlets", - "version": "1.3.3", + "version": "1.3.4", "scripts": { "watch": "rollup -c -w", "build": "rollup -c && babel-node redirects.build.js", diff --git a/src/redirects/index.js b/src/redirects/index.js index 6baa9ffd6..3ca784378 100644 --- a/src/redirects/index.js +++ b/src/redirects/index.js @@ -16,6 +16,8 @@ import { import * as redirectsList from './redirectsList'; +import Redirects from './redirects'; + /** * Finds redirect resource by it's name * @param {string} name - redirect name @@ -54,6 +56,7 @@ const getRedirectCode = (source) => { }; export const redirectsCjs = { + Redirects, getCode: getRedirectCode, isAdgRedirectRule: validator.isAdgRedirectRule, isValidAdgRedirectRule: validator.isValidAdgRedirectRule, diff --git a/src/scriptlets/index.js b/src/scriptlets/index.js index b21393200..9cca9f544 100644 --- a/src/scriptlets/index.js +++ b/src/scriptlets/index.js @@ -1,7 +1,5 @@ import { redirectsCjs } from '../redirects'; -import Redirects from '../redirects/redirects'; - import { attachDependencies, addCall, @@ -69,7 +67,6 @@ const scriptletsObject = (() => ({ convertScriptletToAdg, convertAdgToUbo: convertAdgScriptletToUbo, redirects: redirectsCjs, - Redirects, }))(); export default scriptletsObject; From 3991f6f809a4daaffa6328255bf2d7bc32bedcb5 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Fri, 4 Sep 2020 11:54:31 +0300 Subject: [PATCH 23/29] one more update --- dist/cjs/scriptlets.d.ts | 38 +++++++++++++++++++++++++++++++++++ dist/cjs/scriptletsCjs.js | 2 +- dist/cjs/scriptletsCjs.js.map | 1 - dist/redirects.js | 2 +- dist/redirects.js.map | 1 - dist/redirects.yml | 2 +- dist/scriptlets.corelibs.json | 2 +- dist/scriptlets.js | 2 +- dist/scriptlets.js.map | 1 - package.json | 2 +- types/scriptlets.d.ts | 38 +++++++++++++++++++++++++++++++++++ 11 files changed, 82 insertions(+), 9 deletions(-) delete mode 100644 dist/cjs/scriptletsCjs.js.map delete mode 100644 dist/redirects.js.map delete mode 100644 dist/scriptlets.js.map diff --git a/dist/cjs/scriptlets.d.ts b/dist/cjs/scriptlets.d.ts index aae85cce6..79e2d0184 100644 --- a/dist/cjs/scriptlets.d.ts +++ b/dist/cjs/scriptlets.d.ts @@ -35,6 +35,39 @@ declare module 'scriptlets' { ruleText: string; } + /** + * Redirect object + */ + interface Redirect { + /** + * Redirect name + */ + title: string; + + /** + * Some comment for redirect resource + */ + comment: string; + + /** + * Data which is redirected to + */ + content: string; + + /** + * Type of content + */ + contentType: string; + } + + /** + * Redirects class + */ + class Redirects { + constructor(rawYaml: string): Redirect; + getRedirect(title: string): Redirect; + } + /** * Returns scriptlet code by param * @@ -61,6 +94,11 @@ declare module 'scriptlets' { * Redirects module */ const redirects: { + /** + * Object with redirects titles in the keys and RedirectSources + */ + Redirects: Redirects; + /** * Checks if the `rule` is AdGuard redirect rule. * diff --git a/dist/cjs/scriptletsCjs.js b/dist/cjs/scriptletsCjs.js index 3af02a73e..7f5f9d7e3 100644 --- a/dist/cjs/scriptletsCjs.js +++ b/dist/cjs/scriptletsCjs.js @@ -1,7 +1,7 @@ /** * AdGuard Scriptlets - * Version 1.3.4 + * Version 1.3.5 */ /** diff --git a/dist/cjs/scriptletsCjs.js.map b/dist/cjs/scriptletsCjs.js.map deleted file mode 100644 index eebf79454..000000000 --- a/dist/cjs/scriptletsCjs.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"scriptletsCjs.js","sources":["../../src/helpers/random-id.js","../../src/helpers/set-property-access.js","../../src/helpers/get-property-in-chain.js","../../src/helpers/get-wildcard-property-in-chain.js","../../src/helpers/string-utils.js","../../src/helpers/create-on-error-handler.js","../../src/helpers/noop.js","../../src/helpers/hit.js","../../src/helpers/observer.js","../../src/helpers/match-stack.js","../../src/helpers/array-utils.js","../../src/helpers/index.js","../../src/helpers/injector.js","../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../node_modules/@babel/runtime/helpers/slicedToArray.js","../../node_modules/@babel/runtime/helpers/defineProperty.js","../../src/helpers/parse-rule.js","../../src/scriptlets/abort-on-property-read.js","../../src/scriptlets/abort-on-property-write.js","../../src/scriptlets/prevent-setTimeout.js","../../src/scriptlets/prevent-setInterval.js","../../src/scriptlets/prevent-window-open.js","../../src/scriptlets/abort-current-inline-script.js","../../src/scriptlets/set-constant.js","../../src/scriptlets/remove-cookie.js","../../src/scriptlets/prevent-addEventListener.js","../../src/scriptlets/prevent-bab.js","../../src/scriptlets/nowebrtc.js","../../src/scriptlets/log-addEventListener.js","../../src/scriptlets/log-eval.js","../../src/scriptlets/log.js","../../src/scriptlets/noeval.js","../../src/scriptlets/prevent-eval-if.js","../../src/scriptlets/prevent-fab-3.2.0.js","../../src/scriptlets/set-popads-dummy.js","../../src/scriptlets/prevent-popads-net.js","../../src/scriptlets/prevent-adfly.js","../../src/scriptlets/debug-on-property-read.js","../../src/scriptlets/debug-on-property-write.js","../../src/scriptlets/debug-current-inline-script.js","../../src/scriptlets/remove-attr.js","../../src/scriptlets/remove-class.js","../../src/scriptlets/disable-newtab-links.js","../../src/scriptlets/adjust-setInterval.js","../../src/scriptlets/adjust-setTimeout.js","../../src/scriptlets/dir-string.js","../../src/scriptlets/json-prune.js","../../src/scriptlets/prevent-requestAnimationFrame.js","../../src/scriptlets/set-cookie.js","../../src/scriptlets/hide-in-shadow-dom.js","../../src/scriptlets/scriptletsList.js","../../src/helpers/validator.js","../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../node_modules/@babel/runtime/helpers/toArray.js","../../src/helpers/converter.js","../../src/redirects/google-analytics.js","../../src/redirects/google-analytics-ga.js","../../src/redirects/googlesyndication-adsbygoogle.js","../../src/redirects/googletagmanager-gtm.js","../../src/redirects/googletagservices-gpt.js","../../src/redirects/scorecardresearch-beacon.js","../../src/redirects/metrika-yandex-tag.js","../../src/redirects/metrika-yandex-watch.js","../../src/redirects/amazon-apstag.js","../../src/redirects/index.js","../../src/scriptlets/index.js","../../src/scriptlets/scriptletsCjsWrapper.js"],"sourcesContent":["/**\n * Generate random six symbols id\n */\nexport function randomId() {\n return Math.random().toString(36).substr(2, 9);\n}\n","/**\n * Set getter and setter to property if it's configurable\n * @param {Object} object target object with property\n * @param {string} property property name\n * @param {Object} descriptor contains getter and setter functions\n * @returns {boolean} is operation successful\n */\nexport function setPropertyAccess(object, property, descriptor) {\n const currentDescriptor = Object.getOwnPropertyDescriptor(object, property);\n if (currentDescriptor && !currentDescriptor.configurable) {\n return false;\n }\n Object.defineProperty(object, property, descriptor);\n return true;\n}\n","/**\n * @typedef Chain\n * @property {Object} base\n * @property {string} prop\n * @property {string} [chain]\n */\n\n/**\n * Check if the property exists in the base object (recursively)\n *\n * If property doesn't exist in base object,\n * defines this property as 'undefined'\n * and returns base, property name and remaining part of property chain\n *\n * @param {Object} base\n * @param {string} chain\n * @returns {Chain}\n */\nexport function getPropertyInChain(base, chain) {\n const pos = chain.indexOf('.');\n if (pos === -1) {\n return { base, prop: chain };\n }\n const prop = chain.slice(0, pos);\n const nextBase = base[prop];\n chain = chain.slice(pos + 1);\n if (nextBase !== undefined) {\n return getPropertyInChain(nextBase, chain);\n }\n\n Object.defineProperty(base, prop, { configurable: true });\n return { base: nextBase, prop, chain };\n}\n","/**\n * @typedef Chain\n * @property {Object} base\n * @property {string} prop\n * @property {string} [chain]\n */\n\n/**\n * Check if the property exists in the base object (recursively).\n * Similar to getPropertyInChain but upgraded for json-prune:\n * handle wildcard properties and does not define nonexistent base property as 'undefined'\n *\n * @param {Object} base\n * @param {string} chain\n * @param {boolean} [lookThrough=false]\n * should the method look through it's props in order to wildcard\n * @param {Array} [output=[]] result acc\n * @returns {Chain[]} array of objects\n */\nexport function getWildcardPropertyInChain(base, chain, lookThrough = false, output = []) {\n const pos = chain.indexOf('.');\n if (pos === -1) {\n // for paths like 'a.b.*' every final nested prop should be processed\n if (chain === '*' || chain === '[]') {\n Object.keys(base).forEach((key) => {\n output.push({ base, prop: key });\n });\n } else {\n output.push({ base, prop: chain });\n }\n\n return output;\n }\n\n const prop = chain.slice(0, pos);\n\n const shouldLookThrough = (prop === '*' || prop === '[]')\n && base instanceof Object;\n\n if (shouldLookThrough) {\n const nextProp = chain.slice(pos + 1);\n const baseKeys = Object.keys(base);\n\n // if there is a wildcard prop in input chain (e.g. 'ad.*.src' for 'ad.0.src ad.1.src'),\n // each one of base keys should be considered as a potential chain prop in final path\n baseKeys.forEach((key) => {\n const item = base[key];\n getWildcardPropertyInChain(item, nextProp, lookThrough, output);\n });\n }\n\n const nextBase = base[prop];\n chain = chain.slice(pos + 1);\n if (nextBase !== undefined) {\n getWildcardPropertyInChain(nextBase, chain, lookThrough, output);\n }\n\n return output;\n}\n","/**\n * Escapes special chars in string\n * @param {string} str\n * @returns {string}\n */\nexport const escapeRegExp = (str) => str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n/**\n * Converts search string to the regexp\n * TODO think about nested dependencies, but be careful with dependency loops\n * @param {string} str search string\n * @returns {RegExp}\n */\nexport const toRegExp = (str) => {\n if (str[0] === '/' && str[str.length - 1] === '/') {\n return new RegExp(str.slice(1, -1));\n }\n const escaped = str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n return new RegExp(escaped);\n};\n\n/**\n * Get string before regexp first match\n * @param {string} str\n * @param {RegExp} rx\n */\nexport const getBeforeRegExp = (str, rx) => {\n const index = str.search(rx);\n return str.substring(0, index);\n};\n\nexport const startsWith = (str, prefix) => {\n // if str === '', (str && false) will return ''\n // that's why it has to be !!str\n return !!str && str.indexOf(prefix) === 0;\n};\n\nexport const endsWith = (str, prefix) => {\n // if str === '', (str && false) will return ''\n // that's why it has to be !!str\n return !!str && str.indexOf(prefix) === str.length - 1;\n};\n\nexport const substringAfter = (str, separator) => {\n if (!str) {\n return str;\n }\n const index = str.indexOf(separator);\n return index < 0 ? '' : str.substring(index + separator.length);\n};\n\nexport const substringBefore = (str, separator) => {\n if (!str || !separator) {\n return str;\n }\n const index = str.indexOf(separator);\n return index < 0 ? str : str.substring(0, index);\n};\n\n/**\n * Wrap str in single qoutes and replaces single quotes to doudle one\n * @param {string} str\n */\nexport const wrapInSingleQuotes = (str) => {\n if ((str[0] === '\\'' && str[str.length - 1] === '\\'')\n || (str[0] === '\"' && str[str.length - 1] === '\"')) {\n str = str.substring(1, str.length - 1);\n }\n // eslint-disable-next-line no-useless-escape\n str = str.replace(/\\'/g, '\"');\n\n return `'${str}'`;\n};\n\n/**\n * Returns substring enclosed in the widest braces\n * @param {string} str\n */\nexport const getStringInBraces = (str) => {\n const firstIndex = str.indexOf('(');\n const lastIndex = str.lastIndexOf(')');\n return str.substring(firstIndex + 1, lastIndex);\n};\n","/**\n * Generates function which silents global errors on page generated by scriptlet\n * If error doesn't belong to our error we transfer it to the native onError handler\n * @param {string} rid - unique identifier of scriptlet\n * @return {onError}\n */\nexport function createOnErrorHandler(rid) {\n // eslint-disable-next-line consistent-return\n const nativeOnError = window.onerror;\n return function onError(error, ...args) {\n if (typeof error === 'string' && error.indexOf(rid) !== -1) {\n return true;\n }\n if (nativeOnError instanceof Function) {\n return nativeOnError.apply(this, [error, ...args]);\n }\n return false;\n };\n}\n","/**\n * Noop function\n */\nexport const noopFunc = () => { };\n\n/**\n * Function returns null\n */\nexport const noopNull = () => null;\n\n/**\n * Function returns true\n */\nexport const trueFunc = () => true;\n\n/**\n * Function returns false\n */\nexport const falseFunc = () => false;\n\n/**\n * Function returns this\n */\nexport function noopThis() {\n return this;\n}\n\n/**\n * Function returns empty array\n */\nexport const noopArray = () => [];\n\n/**\n * Function returns empty string\n */\nexport const noopStr = () => '';\n","/* eslint-disable no-console, no-underscore-dangle */\n/**\n * Hit used only for debug purposes now\n * @param {Source} source\n * @param {string} [message] - optional message;\n * use LOG_MARKER = 'log: ' at the start of a message\n * for logging scriptlets\n */\nexport const hit = (source, message) => {\n if (source.verbose !== true) {\n return;\n }\n\n try {\n const log = console.log.bind(console);\n const trace = console.trace.bind(console);\n\n let prefix = source.ruleText || '';\n\n if (source.domainName) {\n const AG_SCRIPTLET_MARKER = '#%#//';\n const UBO_SCRIPTLET_MARKER = '##+js';\n let ruleStartIndex;\n if (source.ruleText.indexOf(AG_SCRIPTLET_MARKER) > -1) {\n ruleStartIndex = source.ruleText.indexOf(AG_SCRIPTLET_MARKER);\n } else if (source.ruleText.indexOf(UBO_SCRIPTLET_MARKER) > -1) {\n ruleStartIndex = source.ruleText.indexOf(UBO_SCRIPTLET_MARKER);\n }\n // delete all domains from ruleText and leave just rule part\n const rulePart = source.ruleText.slice(ruleStartIndex);\n // prepare applied scriptlet rule for specific domain\n prefix = `${source.domainName}${rulePart}`;\n }\n\n // Used to check if scriptlet uses 'hit' function for logging\n const LOG_MARKER = 'log: ';\n\n if (message) {\n if (message.indexOf(LOG_MARKER) === -1) {\n log(`${prefix} message:\\n${message}`);\n } else {\n log(message.slice(LOG_MARKER.length));\n }\n }\n\n log(`${prefix} trace start`);\n if (trace) {\n trace();\n }\n log(`${prefix} trace end`);\n } catch (e) {\n // try catch for Edge 15\n // In according to this issue https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/14495220/\n // console.log throws an error\n }\n\n // This is necessary for unit-tests only!\n if (typeof window.__debug === 'function') {\n window.__debug(source);\n }\n};\n","/**\n * DOM tree changes observer. Used for 'remove-attr' and 'remove-class' scriptlets\n * @param {Function} callback\n * @param {Boolean} observeAttrs - optional parameter - should observer check attibutes changes\n */\nexport const observeDOMChanges = (callback, observeAttrs = false, attrsToObserv = []) => {\n /**\n * Returns a wrapper, passing the call to 'method' at maximum once per 'delay' milliseconds.\n * Those calls that fall into the \"cooldown\" period, are ignored\n * @param {Function} method\n * @param {Number} delay - milliseconds\n */\n const throttle = (method, delay) => {\n let wait = false;\n let savedArgs;\n const wrapper = (...args) => {\n if (wait) {\n savedArgs = args;\n return;\n }\n method(...args);\n wait = true;\n setTimeout(() => {\n wait = false;\n if (savedArgs) {\n wrapper(savedArgs);\n savedArgs = null;\n }\n }, delay);\n };\n return wrapper;\n };\n\n /**\n * 'delay' in milliseconds for 'throttle' method\n */\n const THROTTLE_DELAY_MS = 20;\n /**\n * Used for remove-class\n */\n // eslint-disable-next-line no-use-before-define\n const observer = new MutationObserver(throttle(callbackWrapper, THROTTLE_DELAY_MS));\n\n const connect = () => {\n if (attrsToObserv.length > 0) {\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n attributes: observeAttrs,\n attributeFilter: attrsToObserv,\n });\n } else {\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n attributes: observeAttrs,\n });\n }\n };\n const disconnect = () => {\n observer.disconnect();\n };\n function callbackWrapper() {\n disconnect();\n callback();\n connect();\n }\n\n connect();\n};\n","/**\n * Checks if the stackTrace contains stackRegexp\n * // https://github.com/AdguardTeam/Scriptlets/issues/82\n * @param {string} stackRegexp - stack regexp\n * @param {string} stackTrace - script error stack trace\n * @returns {boolean}\n */\n\nexport const matchStackTrace = (stackRegexp, stackTrace) => {\n const refinedStackTrace = stackTrace\n .split('\\n')\n .slice(2) // get rid of our own functions in the stack trace\n .map((line) => line.trim()) // trim the lines\n .join('\\n');\n\n return stackRegexp.test(refinedStackTrace);\n};\n","/**\n * Some browsers do not support Array.prototype.flat()\n * for example, Opera 42 which is used for browserstack tests\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat\n * @param {Array} input\n */\nexport const flatten = (input) => {\n const stack = [];\n input.forEach((el) => stack.push(el));\n const res = [];\n while (stack.length) {\n // pop value from stack\n const next = stack.pop();\n if (Array.isArray(next)) {\n // push back array items, won't modify the original input\n next.forEach((el) => stack.push(el));\n } else {\n res.push(next);\n }\n }\n // reverse to restore input order\n return res.reverse();\n};\n","/**\n * This file must export all used dependencies\n */\nexport * from './random-id';\nexport * from './set-property-access';\nexport * from './get-property-in-chain';\nexport * from './get-wildcard-property-in-chain';\nexport * from './string-utils';\nexport * from './create-on-error-handler';\nexport * from './noop';\nexport * from './hit';\nexport * from './observer';\nexport * from './match-stack';\nexport * from './array-utils';\n","import * as dependencies from '.';\n\n/**\n * Concat dependencies to scriptlet code\n * @param {string} scriptlet string view of scriptlet\n */\nexport function attachDependencies(scriptlet) {\n const { injections = [] } = scriptlet;\n return injections.reduce((accum, dep) => `${accum}\\n${dependencies[dep.name]}`, scriptlet.toString());\n}\n\n/**\n * Add scriptlet call to existing code\n * @param {Function} scriptlet\n * @param {string} code\n */\nexport function addCall(scriptlet, code) {\n return `${code};\n const updatedArgs = args ? [].concat(source).concat(args) : [source];\n ${scriptlet.name}.apply(this, updatedArgs);\n `;\n}\n\n/**\n * Wrap function into IIFE (Immediately invoked function expression)\n *\n * @param {Source} source - object with scriptlet properties\n * @param {string} code - scriptlet source code with dependencies\n *\n * @returns {string} full scriptlet code\n *\n * @example\n * const source = {\n * args: [\"aaa\", \"bbb\"],\n * name: 'noeval',\n * };\n * const code = \"function noeval(source, args) { alert(source); } noeval.apply(this, args);\"\n * const result = wrapInIIFE(source, code);\n *\n * // result\n * `(function(source, args) {\n * function noeval(source) { alert(source); }\n * noeval.apply(this, args);\n * )({\"args\": [\"aaa\", \"bbb\"], \"name\":\"noeval\"}, [\"aaa\", \"bbb\"])`\n */\nexport function passSourceAndProps(source, code) {\n if (source.hit) {\n source.hit = source.hit.toString();\n }\n const sourceString = JSON.stringify(source);\n const argsString = source.args ? `[${source.args.map(JSON.stringify)}]` : undefined;\n const params = argsString ? `${sourceString}, ${argsString}` : sourceString;\n return `(function(source, args){\\n${code}\\n})(${params});`;\n}\n\n/**\n * Wrap code in no name function\n * @param {string} code which must be wrapped\n */\nexport function wrapInNonameFunc(code) {\n return `function(source, args){\\n${code}\\n}`;\n}\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","/**\n * Iterate over iterable argument and evaluate current state with transitions\n * @param {string} init first transition name\n * @param {Array|Collection|string} iterable\n * @param {Object} transitions transtion functions\n * @param {any} args arguments which should be passed to transition functions\n */\nfunction iterateWithTransitions(iterable, transitions, init, args) {\n let state = init || Object.keys(transitions)[0];\n for (let i = 0; i < iterable.length; i += 1) {\n state = transitions[state](iterable, i, args);\n }\n return state;\n}\n\n/**\n * AdGuard scriptlet rule mask\n */\nexport const ADG_SCRIPTLET_MASK = '#//scriptlet';\n\n/**\n * Helper to accumulate an array of strings char by char\n */\nconst wordSaver = () => {\n let str = '';\n const strs = [];\n const saveSymb = (s) => {\n str += s;\n return str;\n };\n const saveStr = () => {\n strs.push(str);\n str = '';\n };\n const getAll = () => [...strs];\n\n return { saveSymb, saveStr, getAll };\n};\n\nconst substringAfter = (str, separator) => {\n if (!str) {\n return str;\n }\n const index = str.indexOf(separator);\n return index < 0 ? '' : str.substring(index + separator.length);\n};\n\n/**\n * Parse and validate scriptlet rule\n * @param {*} ruleText\n * @returns {{name: string, args: Array}}\n */\nexport const parseRule = (ruleText) => {\n ruleText = substringAfter(ruleText, ADG_SCRIPTLET_MASK);\n /**\n * Transition names\n */\n const TRANSITION = {\n OPENED: 'opened',\n PARAM: 'param',\n CLOSED: 'closed',\n };\n\n /**\n * Transition function: the current index position in start, end or between params\n * @param {string} rule\n * @param {number} index\n * @param {Object} Object\n * @property {Object} Object.sep contains prop symb with current separator char\n */\n const opened = (rule, index, { sep }) => {\n const char = rule[index];\n let transition;\n switch (char) {\n case ' ':\n case '(':\n case ',': {\n transition = TRANSITION.OPENED;\n break;\n }\n case '\\'':\n case '\"': {\n sep.symb = char;\n transition = TRANSITION.PARAM;\n break;\n }\n case ')': {\n transition = index === rule.length - 1\n ? TRANSITION.CLOSED\n : TRANSITION.OPENED;\n break;\n }\n default: {\n throw new Error('The rule is not a scriptlet');\n }\n }\n\n return transition;\n };\n /**\n * Transition function: the current index position inside param\n * @param {string} rule\n * @param {number} index\n * @param {Object} Object\n * @property {Object} Object.sep contains prop `symb` with current separator char\n * @property {Object} Object.saver helper which allow to save strings by car by char\n */\n const param = (rule, index, { saver, sep }) => {\n const char = rule[index];\n switch (char) {\n case '\\'':\n case '\"': {\n const preIndex = index - 1;\n const before = rule[preIndex];\n if (char === sep.symb && before !== '\\\\') {\n sep.symb = null;\n saver.saveStr();\n return TRANSITION.OPENED;\n }\n }\n // eslint-disable-next-line no-fallthrough\n default: {\n saver.saveSymb(char);\n return TRANSITION.PARAM;\n }\n }\n };\n const transitions = {\n [TRANSITION.OPENED]: opened,\n [TRANSITION.PARAM]: param,\n [TRANSITION.CLOSED]: () => { },\n };\n const sep = { symb: null };\n const saver = wordSaver();\n const state = iterateWithTransitions(ruleText, transitions, TRANSITION.OPENED, { sep, saver });\n\n if (state !== 'closed') {\n throw new Error(`Invalid scriptlet rule ${ruleText}`);\n }\n\n const args = saver.getAll();\n return {\n name: args[0],\n args: args.slice(1),\n };\n};\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet abort-on-property-read\n *\n * @description\n * Aborts a script when it attempts to **read** the specified property.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#abort-on-property-readjs-\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/6b2a309054cc23432102b85d13f12559639ef495/lib/content/snippets.js#L864\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('abort-on-property-read', property[, stack])\n * ```\n *\n * - `property` - required, path to a property (joined with `.` if needed). The property must be attached to `window`\n * - `stack` - optional, string or regular expression that must match the current function call stack trace\n *\n * **Examples**\n * ```\n * ! Aborts script when it tries to access `window.alert`\n * example.org#%#//scriptlet('abort-on-property-read', 'alert')\n *\n * ! Aborts script when it tries to access `navigator.language`\n * example.org#%#//scriptlet('abort-on-property-read', 'navigator.language')\n *\n * ! Aborts script when it tries to access `window.adblock` and it's error stack trace contains `test.js`\n * example.org#%#//scriptlet('abort-on-property-read', 'adblock', 'test.js')\n * ```\n */\n/* eslint-enable max-len */\nexport function abortOnPropertyRead(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n\n const rid = randomId();\n const abort = () => {\n hit(source);\n throw new ReferenceError(rid);\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, {\n get: abort,\n set: () => {\n },\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\nabortOnPropertyRead.names = [\n 'abort-on-property-read',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'abort-on-property-read.js',\n 'ubo-abort-on-property-read.js',\n 'aopr.js',\n 'ubo-aopr.js',\n 'ubo-abort-on-property-read',\n 'ubo-aopr',\n 'abp-abort-on-property-read',\n];\nabortOnPropertyRead.injections = [\n randomId,\n toRegExp,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n matchStackTrace,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet abort-on-property-write\n *\n * @description\n * Aborts a script when it attempts to **write** the specified property.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#abort-on-property-writejs-\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/6b2a309054cc23432102b85d13f12559639ef495/lib/content/snippets.js#L896\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('abort-on-property-write', property[, stack])\n * ```\n *\n * - `property` - required, path to a property (joined with `.` if needed). The property must be attached to `window`\n * - `stack` - optional, string or regular expression that must match the current function call stack trace\n *\n * **Examples**\n * ```\n * ! Aborts script when it tries to set `window.adblock` value\n * example.org#%#//scriptlet('abort-on-property-write', 'adblock')\n *\n * ! Aborts script when it tries to set `window.adblock` value and it's error stack trace contains `checking.js`\n * example.org#%#//scriptlet('abort-on-property-write', 'adblock', 'checking.js')\n * ```\n */\n/* eslint-enable max-len */\nexport function abortOnPropertyWrite(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n\n const rid = randomId();\n const abort = () => {\n hit(source);\n throw new ReferenceError(rid);\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, { set: abort });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid).bind();\n}\n\nabortOnPropertyWrite.names = [\n 'abort-on-property-write',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'abort-on-property-write.js',\n 'ubo-abort-on-property-write.js',\n 'aopw.js',\n 'ubo-aopw.js',\n 'ubo-abort-on-property-write',\n 'ubo-aopw',\n 'abp-abort-on-property-write',\n];\n\nabortOnPropertyWrite.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n];\n","import {\n hit, noopFunc, toRegExp, startsWith,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-setTimeout\n *\n * @description\n * Prevents a `setTimeout` call if:\n * 1) the text of the callback is matching the specified search string/regexp which does not start with `!`;\n * otherwise mismatched calls should be defused;\n * 2) the timeout is matching the specified delay; otherwise mismatched calls should be defused.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#no-settimeout-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout'[, search[, delay]])\n * ```\n *\n * Call with no arguments will log calls to setTimeout while debugging (`log-setTimeout` superseding),\n * so production filter lists' rules definitely require at least one of the parameters:\n * - `search` - optional, string or regular expression.\n * If starts with `!`, scriptlet will not match the stringified callback but all other will be defused.\n * If do not start with `!`, the stringified callback will be matched.\n * If not set, prevents all `setTimeout` calls due to specified `delay`.\n * - `delay` - optional, must be an integer.\n * If starts with `!`, scriptlet will not match the delay but all other will be defused.\n * If do not start with `!`, the delay passed to the `setTimeout` call will be matched.\n *\n * **Examples**\n * 1. Prevents `setTimeout` calls if the callback matches `/\\.test/` regardless of the delay.\n * ```bash\n * example.org#%#//scriptlet('prevent-setTimeout', '/\\.test/')\n * ```\n *\n * For instance, the following call will be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"value\";\n * }, 100);\n * ```\n *\n * 2. Prevents `setTimeout` calls if the callback does not contain `value`.\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout', '!value')\n * ```\n *\n * For instance, only the first of the following calls will be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"test -- prevented\";\n * }, 300);\n * setTimeout(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setTimeout(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n *\n * 3. Prevents `setTimeout` calls if the callback contains `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout', 'value', '!300')\n * ```\n *\n * For instance, only the first of the following calls will not be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"value 1 -- executed\";\n * }, 300);\n * setTimeout(function () {\n * window.test = \"value 2 -- prevented\";\n * }, 400);\n * setTimeout(function () {\n * window.test = \"value 3 -- prevented\";\n * }, 500);\n * ```\n *\n * 4. Prevents `setTimeout` calls if the callback does not contain `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout', '!value', '!300')\n * ```\n *\n * For instance, only the second of the following calls will be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"test -- executed\";\n * }, 300);\n * setTimeout(function () {\n * window.test = \"test -- prevented\";\n * }, 400);\n * setTimeout(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setTimeout(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n */\n/* eslint-enable max-len */\nexport function preventSetTimeout(source, match, delay) {\n const nativeTimeout = window.setTimeout;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const log = console.log.bind(console); // eslint-disable-line no-console\n\n // logs setTimeouts to console if no arguments have been specified\n const shouldLog = ((typeof match === 'undefined') && (typeof delay === 'undefined'));\n\n const INVERT_MARKER = '!';\n\n const isNotMatch = startsWith(match, INVERT_MARKER);\n if (isNotMatch) {\n match = match.slice(1);\n }\n const isNotDelay = startsWith(delay, INVERT_MARKER);\n if (isNotDelay) {\n delay = delay.slice(1);\n }\n\n delay = parseInt(delay, 10);\n delay = nativeIsNaN(delay) ? null : delay;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n const timeoutWrapper = (callback, timeout, ...args) => {\n let shouldPrevent = false;\n if (shouldLog) {\n hit(source);\n log(`setTimeout(\"${callback.toString()}\", ${timeout})`);\n } else if (!delay) {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch;\n } else if (match === '/.?/') {\n shouldPrevent = (timeout === delay) !== isNotDelay;\n } else {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch\n && (timeout === delay) !== isNotDelay;\n }\n\n if (shouldPrevent) {\n hit(source);\n return nativeTimeout(noopFunc, timeout);\n }\n\n return nativeTimeout.apply(window, [callback, timeout, ...args]);\n };\n window.setTimeout = timeoutWrapper;\n}\n\npreventSetTimeout.names = [\n 'prevent-setTimeout',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'no-setTimeout-if.js', // new implementation of setTimeout-defuser.js\n 'ubo-no-setTimeout-if.js',\n 'setTimeout-defuser.js', // old name should be supported as well\n 'ubo-setTimeout-defuser.js',\n 'nostif.js', // new short name of no-setTimeout-if\n 'ubo-nostif.js',\n 'std.js', // old short scriptlet name\n 'ubo-std.js',\n 'ubo-no-setTimeout-if',\n 'ubo-setTimeout-defuser',\n 'ubo-nostif',\n 'ubo-std',\n];\n\npreventSetTimeout.injections = [toRegExp, startsWith, hit, noopFunc];\n","import {\n hit, noopFunc, toRegExp, startsWith,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-setInterval\n *\n * @description\n * Prevents a `setInterval` call if:\n * 1) the text of the callback is matching the specified `search` string/regexp which does not start with `!`;\n * otherwise mismatched calls should be defused;\n * 2) the interval is matching the specified `delay`; otherwise mismatched calls should be defused.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#no-setinterval-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-setInterval'[, search[, delay]])\n * ```\n *\n * Call with no arguments will log calls to setInterval while debugging (`log-setInterval` superseding),\n * so production filter lists' rules definitely require at least one of the parameters:\n * - `search` - optional, string or regular expression.\n * If starts with `!`, scriptlet will not match the stringified callback but all other will be defused.\n * If do not start with `!`, the stringified callback will be matched.\n * If not set, prevents all `setInterval` calls due to specified `delay`.\n * - `delay` - optional, must be an integer.\n * If starts with `!`, scriptlet will not match the delay but all other will be defused.\n * If do not start with `!`, the delay passed to the `setInterval` call will be matched.\n *\n * **Examples**\n * 1. Prevents `setInterval` calls if the callback matches `/\\.test/` regardless of the delay.\n * ```bash\n * example.org#%#//scriptlet('prevent-setInterval', '/\\.test/')\n * ```\n *\n * For instance, the following call will be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"value\";\n * }, 100);\n * ```\n *\n * 2. Prevents `setInterval` calls if the callback does not contain `value`.\n * ```\n * example.org#%#//scriptlet('prevent-setInterval', '!value')\n * ```\n *\n * For instance, only the first of the following calls will be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"test -- prevented\";\n * }, 300);\n * setInterval(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setInterval(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n *\n * 3. Prevents `setInterval` calls if the callback contains `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setInterval', 'value', '!300')\n * ```\n *\n * For instance, only the first of the following calls will not be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"value 1 -- executed\";\n * }, 300);\n * setInterval(function () {\n * window.test = \"value 2 -- prevented\";\n * }, 400);\n * setInterval(function () {\n * window.test = \"value 3 -- prevented\";\n * }, 500);\n * ```\n *\n * 4. Prevents `setInterval` calls if the callback does not contain `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setInterval', '!value', '!300')\n * ```\n *\n * For instance, only the second of the following calls will be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"test -- executed\";\n * }, 300);\n * setInterval(function () {\n * window.test = \"test -- prevented\";\n * }, 400);\n * setInterval(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setInterval(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n */\n/* eslint-enable max-len */\nexport function preventSetInterval(source, match, delay) {\n const nativeInterval = window.setInterval;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const log = console.log.bind(console); // eslint-disable-line no-console\n\n // logs setIntervals to console if no arguments have been specified\n const shouldLog = ((typeof match === 'undefined') && (typeof delay === 'undefined'));\n\n const INVERT_MARKER = '!';\n\n const isNotMatch = startsWith(match, INVERT_MARKER);\n if (isNotMatch) {\n match = match.slice(1);\n }\n const isNotDelay = startsWith(delay, INVERT_MARKER);\n if (isNotDelay) {\n delay = delay.slice(1);\n }\n\n delay = parseInt(delay, 10);\n delay = nativeIsNaN(delay) ? null : delay;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n const intervalWrapper = (callback, interval, ...args) => {\n let shouldPrevent = false;\n if (shouldLog) {\n hit(source);\n log(`setInterval(\"${callback.toString()}\", ${interval})`);\n } else if (!delay) {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch;\n } else if (match === '/.?/') {\n shouldPrevent = (interval === delay) !== isNotDelay;\n } else {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch\n && (interval === delay) !== isNotDelay;\n }\n\n if (shouldPrevent) {\n hit(source);\n return nativeInterval(noopFunc, interval);\n }\n\n return nativeInterval.apply(window, [callback, interval, ...args]);\n };\n window.setInterval = intervalWrapper;\n}\n\npreventSetInterval.names = [\n 'prevent-setInterval',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'no-setInterval-if.js', // new implementation of setInterval-defuser.js\n 'ubo-no-setInterval-if.js',\n 'setInterval-defuser.js', // old name should be supported as well\n 'ubo-setInterval-defuser.js',\n 'nosiif.js', // new short name of no-setInterval-if\n 'ubo-nosiif.js',\n 'sid.js', // old short scriptlet name\n 'ubo-sid.js',\n 'ubo-no-setInterval-if',\n 'ubo-setInterval-defuser',\n 'ubo-nosiif',\n 'ubo-sid',\n];\n\npreventSetInterval.injections = [toRegExp, startsWith, hit, noopFunc];\n","import {\n toRegExp,\n substringBefore,\n substringAfter,\n startsWith,\n endsWith,\n hit,\n noopFunc,\n trueFunc,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-window-open\n *\n * @description\n * Prevents `window.open` calls when URL either matches or not matches the specified string/regexp. Using it without parameters prevents all `window.open` calls.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#windowopen-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-window-open'[, match[, search[, replacement]]])\n * ```\n *\n * - `match` - optional, defaults to \"matching\", any positive number or nothing for \"matching\", 0 or empty string for \"not matching\"\n * - `search` - optional, string or regexp for matching the URL passed to `window.open` call; defaults to search all `window.open` call\n * - `replacement` - optional, string to return prop value or property instead of window.open; defaults to return noopFunc\n *\n * **Example**\n * 1. Prevent all `window.open` calls:\n * ```\n * example.org#%#//scriptlet('prevent-window-open')\n * ```\n *\n * 2. Prevent `window.open` for all URLs containing `example`:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '1', 'example')\n * ```\n *\n * 3. Prevent `window.open` for all URLs matching RegExp `/example\\./`:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '1', '/example\\./')\n * ```\n *\n * 4. Prevent `window.open` for all URLs **NOT** containing `example`:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '0', 'example')\n * ```\n * 5. Prevent all `window.open` calls and return 'trueFunc' instead of it if website checks it:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '', '', 'trueFunc')\n * ```\n * 6. Prevent all `window.open` and returns callback\n * which returns object with property 'propName'=noopFunc\n * as a property of window.open if website checks it:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '1', '', '{propName=noopFunc}')\n * ```\n */\n/* eslint-enable max-len */\nexport function preventWindowOpen(source, match = 1, search, replacement) {\n // Default value of 'match' is needed to prevent all `window.open` calls\n // if the scriptlet is used without parameters\n const nativeOpen = window.open;\n\n // unary plus converts 'match' to a number\n // e.g.: +'1' -> 1; +false -> 0\n match = +match > 0;\n\n search = search\n ? toRegExp(search)\n : toRegExp('/.?/');\n\n // eslint-disable-next-line consistent-return\n const openWrapper = (str, ...args) => {\n if (match !== search.test(str)) {\n return nativeOpen.apply(window, [str, ...args]);\n }\n\n hit(source);\n\n let result;\n\n // defaults to return noopFunc instead of window.open\n if (!replacement) {\n result = noopFunc;\n } else if (replacement === 'trueFunc') {\n result = trueFunc;\n } else if (replacement.indexOf('=') > -1) {\n // We should return noopFunc instead of window.open\n // but with some property if website checks it (examples 5, 6)\n // https://github.com/AdguardTeam/Scriptlets/issues/71\n const isProp = startsWith(replacement, '{') && endsWith(replacement, '}');\n if (isProp) {\n const propertyPart = replacement.slice(1, -1);\n const propertyName = substringBefore(propertyPart, '=');\n const propertyValue = substringAfter(propertyPart, '=');\n if (propertyValue === 'noopFunc') {\n result = () => {\n const resObj = { };\n resObj[propertyName] = noopFunc;\n return resObj;\n };\n }\n }\n }\n\n return result;\n };\n\n window.open = openWrapper;\n}\n\npreventWindowOpen.names = [\n 'prevent-window-open',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'window.open-defuser.js',\n 'ubo-window.open-defuser.js',\n 'ubo-window.open-defuser',\n];\n\npreventWindowOpen.injections = [\n toRegExp,\n startsWith,\n endsWith,\n substringBefore,\n substringAfter,\n hit,\n noopFunc,\n trueFunc,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet abort-current-inline-script\n *\n * @description\n * Aborts an inline script when it attempts to **read** the specified property\n * AND when the contents of the `\n * ```\n *\n * 3. Aborts inline scripts which are trying to access `window.alert` and match this regexp: `/Hello.+world/`.\n * ```\n * example.org#%#//scriptlet('abort-current-inline-script', 'alert', '/Hello.+world/')\n * ```\n *\n * For instance, the following scripts will be aborted:\n * ```html\n * \n * ```\n * ```html\n * \n * ```\n *\n * This script will not be aborted:\n * ```html\n * \n * ```\n */\n/* eslint-enable max-len */\nexport function abortCurrentInlineScript(source, property, search) {\n const searchRegexp = search ? toRegExp(search) : toRegExp('/.?/');\n const rid = randomId();\n\n const getCurrentScript = () => {\n if (!document.currentScript) { // eslint-disable-line compat/compat\n const scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n }\n return document.currentScript; // eslint-disable-line compat/compat\n };\n\n const ourScript = getCurrentScript();\n\n const abort = () => {\n const scriptEl = getCurrentScript();\n if (!scriptEl) {\n return;\n }\n let content = scriptEl.textContent;\n\n // We are using Node.prototype.textContent property descriptor\n // to get the real script content\n // even when document.currentScript.textContent is replaced.\n // https://github.com/AdguardTeam/Scriptlets/issues/57#issuecomment-593638991\n try {\n const textContentGetter = Object.getOwnPropertyDescriptor(Node.prototype, 'textContent').get;\n content = textContentGetter.call(scriptEl);\n } catch (e) { } // eslint-disable-line no-empty\n\n if (scriptEl instanceof HTMLScriptElement\n && content.length > 0\n && scriptEl !== ourScript\n && searchRegexp.test(content)) {\n hit(source);\n throw new ReferenceError(rid);\n }\n };\n\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n\n // The scriptlet might be executed before the chain property has been created\n // (for instance, document.body before the HTML body was loaded).\n // In this case we're checking whether the base element exists or not\n // and if not, we simply exit without overriding anything.\n // e.g. https://github.com/AdguardTeam/Scriptlets/issues/57#issuecomment-575841092\n if (base instanceof Object === false && base === null) {\n const props = property.split('.');\n const propIndex = props.indexOf(prop);\n const baseName = props[propIndex - 1];\n console.log(`The scriptlet had been executed before the ${baseName} was loaded.`); // eslint-disable-line no-console\n return;\n }\n\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n let currentValue = base[prop];\n setPropertyAccess(base, prop, {\n set: (value) => {\n abort();\n currentValue = value;\n },\n get: () => {\n abort();\n return currentValue;\n },\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\nabortCurrentInlineScript.names = [\n 'abort-current-inline-script',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'abort-current-inline-script.js',\n 'ubo-abort-current-inline-script.js',\n 'acis.js',\n 'ubo-acis.js',\n 'ubo-abort-current-inline-script',\n 'ubo-acis',\n 'abp-abort-current-inline-script',\n];\n\nabortCurrentInlineScript.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n];\n","import {\n hit,\n noopFunc,\n trueFunc,\n falseFunc,\n getPropertyInChain,\n setPropertyAccess,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet set-constant\n *\n * @description\n * Creates a constant property and assigns it one of the values from the predefined list.\n *\n * > Actually, it's not a constant. Please note, that it can be rewritten with a value of a different type.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#set-constantjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('set-constant', property, value[, stack])\n * ```\n *\n * - `property` - required, path to a property (joined with `.` if needed). The property must be attached to `window`.\n * - `value` - required. Possible values:\n * - positive decimal integer `<= 32767`\n * - one of the predefined constants:\n * - `undefined`\n * - `false`\n * - `true`\n * - `null`\n * - `noopFunc` - function with empty body\n * - `trueFunc` - function returning true\n * - `falseFunc` - function returning false\n * - `''` - empty string\n * - `-1` - number value `-1`\n * - `stack` - optional, string or regular expression that must match the current function call stack trace\n *\n * **Examples**\n * ```\n * ! window.firstConst === false // this comparision will return false\n * example.org#%#//scriptlet('set-constant', 'firstConst', 'false')\n *\n * ! window.second() === trueFunc // 'second' call will return true\n * example.org#%#//scriptlet('set-constant', 'secondConst', 'trueFunc')\n *\n * ! document.third() === falseFunc // 'third' call will return false if the method is related to checking.js\n * example.org#%#//scriptlet('set-constant', 'secondConst', 'trueFunc', 'checking.js')\n * ```\n */\n/* eslint-enable max-len */\nexport function setConstant(source, property, value, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n\n let constantValue;\n if (value === 'undefined') {\n constantValue = undefined;\n } else if (value === 'false') {\n constantValue = false;\n } else if (value === 'true') {\n constantValue = true;\n } else if (value === 'null') {\n constantValue = null;\n } else if (value === 'noopFunc') {\n constantValue = noopFunc;\n } else if (value === 'trueFunc') {\n constantValue = trueFunc;\n } else if (value === 'falseFunc') {\n constantValue = falseFunc;\n } else if (/^\\d+$/.test(value)) {\n constantValue = parseFloat(value);\n if (nativeIsNaN(constantValue)) {\n return;\n }\n if (Math.abs(constantValue) > 0x7FFF) {\n return;\n }\n } else if (value === '-1') {\n constantValue = -1;\n } else if (value === '') {\n constantValue = '';\n } else {\n return;\n }\n\n let canceled = false;\n const mustCancel = (value) => {\n if (canceled) {\n return canceled;\n }\n canceled = value !== undefined\n && constantValue !== undefined\n && typeof value !== typeof constantValue;\n return canceled;\n };\n\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n\n // The scriptlet might be executed before the chain property has been created.\n // In this case we're checking whether the base element exists or not\n // and if not, we simply exit without overriding anything\n if (base instanceof Object === false && base === null) {\n // log the reason only while debugging\n if (source.verbose) {\n const props = property.split('.');\n const propIndex = props.indexOf(prop);\n const baseName = props[propIndex - 1];\n console.log(`set-constant failed because the property '${baseName}' does not exist`); // eslint-disable-line no-console\n }\n return;\n }\n\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n if (mustCancel(base[prop])) { return; }\n\n hit(source);\n setPropertyAccess(base, prop, {\n get: () => constantValue,\n set: (a) => {\n if (mustCancel(a)) {\n constantValue = a;\n }\n },\n });\n };\n\n setChainPropAccess(window, property);\n}\n\nsetConstant.names = [\n 'set-constant',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'set-constant.js',\n 'ubo-set-constant.js',\n 'set.js',\n 'ubo-set.js',\n 'ubo-set-constant',\n 'ubo-set',\n];\nsetConstant.injections = [\n getPropertyInChain,\n setPropertyAccess,\n toRegExp,\n matchStackTrace,\n hit,\n noopFunc,\n trueFunc,\n falseFunc,\n];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet remove-cookie\n *\n * @description\n * Removes current page cookies by passed string matching with name. For current domain and subdomains. Runs on load and before unload.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#cookie-removerjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('remove-cookie'[, match])\n * ```\n *\n * - `match` - optional, string or regex matching the cookie name. If not specified all accessible cookies will be removed.\n *\n * **Examples**\n * 1. Removes all cookies:\n * ```\n * example.org#%#//scriptlet('remove-cookie')\n * ```\n *\n * 2. Removes cookies which name contains `example` string.\n * ```\n * example.org#%#//scriptlet('remove-cookie', 'example')\n * ```\n *\n * For instance this cookie will be removed\n * ```javascript\n * document.cookie = '__example=randomValue';\n * ```\n */\n/* eslint-enable max-len */\nexport function removeCookie(source, match) {\n const regex = match ? toRegExp(match) : toRegExp('/.?/');\n\n const removeCookieFromHost = (cookieName, hostName) => {\n const cookieSpec = `${cookieName}=`;\n const domain1 = `; domain=${hostName}`;\n const domain2 = `; domain=.${hostName}`;\n const path = '; path=/';\n const expiration = '; expires=Thu, 01 Jan 1970 00:00:00 GMT';\n document.cookie = cookieSpec + expiration;\n document.cookie = cookieSpec + domain1 + expiration;\n document.cookie = cookieSpec + domain2 + expiration;\n document.cookie = cookieSpec + path + expiration;\n document.cookie = cookieSpec + domain1 + path + expiration;\n document.cookie = cookieSpec + domain2 + path + expiration;\n hit(source);\n };\n\n const rmCookie = () => {\n document.cookie.split(';').forEach((cookieStr) => {\n const pos = cookieStr.indexOf('=');\n if (pos === -1) {\n return;\n }\n\n const cookieName = cookieStr.slice(0, pos).trim();\n if (!regex.test(cookieName)) {\n return;\n }\n\n const hostParts = document.location.hostname.split('.');\n for (let i = 0; i <= hostParts.length - 1; i += 1) {\n const hostName = hostParts.slice(i).join('.');\n if (hostName) {\n removeCookieFromHost(cookieName, hostName);\n }\n }\n });\n };\n rmCookie();\n window.addEventListener('beforeunload', rmCookie);\n}\n\nremoveCookie.names = [\n 'remove-cookie',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'cookie-remover.js',\n 'ubo-cookie-remover.js',\n 'ubo-cookie-remover',\n];\n\nremoveCookie.injections = [toRegExp, hit];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-addEventListener\n *\n * @description\n * Prevents adding event listeners for the specified events and callbacks.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#addeventlistener-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-addEventListener'[, eventSearch[, functionSearch]])\n * ```\n *\n * - `eventSearch` - optional, string or regex matching the event name. If not specified, the scriptlets prevents all event listeners\n * - `functionSearch` - optional, string or regex matching the event listener function body. If not set, the scriptlet prevents all event listeners with event name matching `eventSearch`\n *\n * **Examples**\n * 1. Prevent all `click` listeners:\n * ```\n * example.org#%#//scriptlet('prevent-addEventListener', 'click')\n * ```\n\n2. Prevent 'click' listeners with the callback body containing `searchString`.\n * ```\n * example.org#%#//scriptlet('prevent-addEventListener', 'click', 'searchString')\n * ```\n *\n * For instance, this listener will not be called:\n * ```javascript\n * el.addEventListener('click', () => {\n * window.test = 'searchString';\n * });\n * ```\n */\n/* eslint-enable max-len */\nexport function preventAddEventListener(source, eventSearch, funcSearch) {\n const eventSearchRegexp = eventSearch ? toRegExp(eventSearch) : toRegExp('/.?/');\n const funcSearchRegexp = funcSearch ? toRegExp(funcSearch) : toRegExp('/.?/');\n\n const nativeAddEventListener = window.EventTarget.prototype.addEventListener;\n function addEventListenerWrapper(eventName, callback, ...args) {\n // The scriptlet might cause a website broke\n // if the website uses test addEventListener with callback = null\n // https://github.com/AdguardTeam/Scriptlets/issues/76\n let funcToCheck = callback;\n if (callback && typeof callback === 'function') {\n funcToCheck = callback.toString();\n }\n\n if (eventSearchRegexp.test(eventName.toString()) && funcSearchRegexp.test(funcToCheck)) {\n hit(source);\n return undefined;\n }\n return nativeAddEventListener.apply(this, [eventName, callback, ...args]);\n }\n\n window.EventTarget.prototype.addEventListener = addEventListenerWrapper;\n}\n\npreventAddEventListener.names = [\n 'prevent-addEventListener',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'addEventListener-defuser.js',\n 'ubo-addEventListener-defuser.js',\n 'aeld.js',\n 'ubo-aeld.js',\n 'ubo-addEventListener-defuser',\n 'ubo-aeld',\n];\n\npreventAddEventListener.injections = [toRegExp, hit];\n","/* eslint-disable consistent-return, no-eval */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet prevent-bab\n *\n * @description\n * Prevents BlockAdblock script from detecting an ad blocker.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#bab-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-bab')\n * ```\n */\nexport function preventBab(source) {\n const nativeSetTimeout = window.setTimeout;\n const babRegex = /\\.bab_elementid.$/;\n\n window.setTimeout = (callback, ...args) => {\n if (typeof callback !== 'string' || !babRegex.test(callback)) {\n return nativeSetTimeout.call(this, callback, ...args);\n }\n hit(source);\n };\n\n const signatures = [\n ['blockadblock'],\n ['babasbm'],\n [/getItem\\('babn'\\)/],\n ['getElementById', 'String.fromCharCode', 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 'charAt', 'DOMContentLoaded', 'AdBlock', 'addEventListener', 'doScroll', 'fromCharCode', '<<2|r>>4', 'sessionStorage', 'clientWidth', 'localStorage', 'Math', 'random'],\n ];\n const check = (str) => {\n for (let i = 0; i < signatures.length; i += 1) {\n const tokens = signatures[i];\n let match = 0;\n for (let j = 0; j < tokens.length; j += 1) {\n const token = tokens[j];\n const found = token instanceof RegExp ? token.test(str) : str.indexOf(token) > -1;\n if (found) {\n match += 1;\n }\n }\n if (match / tokens.length >= 0.8) {\n return true;\n }\n }\n return false;\n };\n\n const nativeEval = window.eval;\n window.eval = (str) => {\n if (!check(str)) {\n return nativeEval(str);\n }\n hit(source);\n const bodyEl = document.body;\n if (bodyEl) {\n bodyEl.style.removeProperty('visibility');\n }\n const el = document.getElementById('babasbmsgx');\n if (el) {\n el.parentNode.removeChild(el);\n }\n };\n}\n\npreventBab.names = [\n 'prevent-bab',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'nobab.js',\n 'ubo-nobab.js',\n 'bab-defuser.js',\n 'ubo-bab-defuser.js',\n 'ubo-nobab',\n 'ubo-bab-defuser',\n];\n\npreventBab.injections = [hit];\n","/* eslint-disable no-unused-vars, no-extra-bind, func-names */\nimport { hit, noopFunc } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet nowebrtc\n *\n * @description\n * Disables WebRTC by overriding `RTCPeerConnection`. The overriden function will log every attempt to create a new connection.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#nowebrtcjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('nowebrtc')\n * ```\n */\n/* eslint-enable max-len */\nexport function nowebrtc(source) {\n let propertyName = '';\n if (window.RTCPeerConnection) {\n propertyName = 'RTCPeerConnection';\n } else if (window.webkitRTCPeerConnection) {\n propertyName = 'webkitRTCPeerConnection';\n }\n\n if (propertyName === '') {\n return;\n }\n\n const rtcReplacement = (config) => {\n hit(source, `Document tried to create an RTCPeerConnection: ${config}`);\n };\n rtcReplacement.prototype = {\n close: noopFunc,\n createDataChannel: noopFunc,\n createOffer: noopFunc,\n setRemoteDescription: noopFunc,\n };\n const rtc = window[propertyName];\n window[propertyName] = rtcReplacement;\n if (rtc.prototype) {\n rtc.prototype.createDataChannel = function (a, b) {\n return {\n close: noopFunc,\n send: noopFunc,\n };\n }.bind(null);\n }\n}\n\nnowebrtc.names = [\n 'nowebrtc',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'nowebrtc.js',\n 'ubo-nowebrtc.js',\n 'ubo-nowebrtc',\n];\n\nnowebrtc.injections = [hit, noopFunc];\n","/* eslint-disable no-console */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet log-addEventListener\n *\n * @description\n * Logs all addEventListener calls to the console.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#addeventlistener-loggerjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('log-addEventListener')\n * ```\n */\nexport function logAddEventListener(source) {\n const log = console.log.bind(console);\n const nativeAddEventListener = window.EventTarget.prototype.addEventListener;\n function addEventListenerWrapper(eventName, callback, ...args) {\n hit(source);\n // The scriptlet might cause a website broke\n // if the website uses test addEventListener with callback = null\n // https://github.com/AdguardTeam/Scriptlets/issues/76\n let callbackToLog = callback;\n if (callback && typeof callback === 'function') {\n callbackToLog = callback.toString();\n }\n log(`addEventListener(\"${eventName}\", ${callbackToLog})`);\n return nativeAddEventListener.apply(this, [eventName, callback, ...args]);\n }\n window.EventTarget.prototype.addEventListener = addEventListenerWrapper;\n}\n\nlogAddEventListener.names = [\n 'log-addEventListener',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'addEventListener-logger.js',\n 'ubo-addEventListener-logger.js',\n 'aell.js',\n 'ubo-aell.js',\n 'ubo-addEventListener-logger',\n 'ubo-aell',\n];\n\nlogAddEventListener.injections = [hit];\n","/* eslint-disable no-console, no-eval */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet log-eval\n *\n * @description\n * Logs all `eval()` or `new Function()` calls to the console.\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('log-eval')\n * ```\n */\nexport function logEval(source) {\n const log = console.log.bind(console);\n // wrap eval function\n const nativeEval = window.eval;\n function evalWrapper(str) {\n hit(source);\n log(`eval(\"${str}\")`);\n return nativeEval(str);\n }\n window.eval = evalWrapper;\n\n // wrap new Function\n const nativeFunction = window.Function;\n\n function FunctionWrapper(...args) {\n hit(source);\n log(`new Function(${args.join(', ')})`);\n return nativeFunction.apply(this, [...args]);\n }\n\n FunctionWrapper.prototype = Object.create(nativeFunction.prototype);\n FunctionWrapper.prototype.constructor = FunctionWrapper;\n\n window.Function = FunctionWrapper;\n}\n\nlogEval.names = [\n 'log-eval',\n];\n\nlogEval.injections = [hit];\n","/**\n * @scriptlet log\n *\n * @description\n * A simple scriptlet which only purpose is to print arguments to console.\n * This scriptlet can be helpful for debugging and troubleshooting other scriptlets.\n *\n * **Example**\n * ```\n * example.org#%#//scriptlet('log', 'arg1', 'arg2')\n * ```\n */\nexport function log(...args) {\n console.log(args); // eslint-disable-line no-console\n}\nlog.names = ['log'];\n","/* eslint-disable no-eval, no-extra-bind */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet noeval\n *\n * @description\n * Prevents page to use eval.\n * Notifies about attempts in the console\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#noevaljs-\n *\n * It also can be used as `$redirect` rules sometimes.\n * See [redirect description](../wiki/about-redirects.md#noeval).\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('noeval')\n * ```\n */\nexport function noeval(source) {\n window.eval = function evalWrapper(s) {\n hit(source, `AdGuard has prevented eval:\\n${s}`);\n }.bind();\n}\n\nnoeval.names = [\n 'noeval',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'noeval.js',\n 'silent-noeval.js',\n 'ubo-noeval.js',\n 'ubo-silent-noeval.js',\n 'ubo-noeval',\n 'ubo-silent-noeval',\n];\n\nnoeval.injections = [hit];\n","/* eslint-disable no-eval, no-extra-bind, func-names */\n\nimport { toRegExp, hit } from '../helpers';\n\n/**\n * @scriptlet prevent-eval-if\n *\n * @description\n * Prevents page to use eval matching payload.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#noeval-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-eval-if'[, search])\n * ```\n *\n * - `search` - optional, string or regexp for matching stringified eval payload.\n * If 'search is not specified — all stringified eval payload will be matched\n *\n * **Examples**\n * ```\n * ! Prevents eval if it matches 'test'\n * example.org#%#//scriptlet('prevent-eval-if', 'test')\n * ```\n *\n * @param {string|RegExp} [search] string or regexp matching stringified eval payload\n */\nexport function preventEvalIf(source, search) {\n search = search ? toRegExp(search) : toRegExp('/.?/');\n\n const nativeEval = window.eval;\n window.eval = function (payload) {\n if (!search.test(payload.toString())) {\n return nativeEval.call(window, payload);\n }\n hit(source, payload);\n return undefined;\n }.bind(window);\n}\n\npreventEvalIf.names = [\n 'prevent-eval-if',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'noeval-if.js',\n 'ubo-noeval-if.js',\n 'ubo-noeval-if',\n];\n\npreventEvalIf.injections = [toRegExp, hit];\n","/* eslint-disable no-console, func-names, no-multi-assign */\nimport { hit, noopFunc, noopThis } from '../helpers';\n\n/**\n * @scriptlet prevent-fab-3.2.0\n *\n * @description\n * Prevents execution of the FAB script v3.2.0.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#fuckadblockjs-320-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-fab-3.2.0')\n * ```\n */\nexport function preventFab(source) {\n hit(source);\n\n // redefines Fab function for adblock detection\n const Fab = function () {};\n Fab.prototype.check = noopFunc;\n Fab.prototype.clearEvent = noopFunc;\n Fab.prototype.emitEvent = noopFunc;\n Fab.prototype.on = function (a, b) {\n if (!a) {\n b();\n }\n return this;\n };\n Fab.prototype.onDetected = noopThis;\n Fab.prototype.onNotDetected = function (a) {\n a();\n return this;\n };\n Fab.prototype.setOption = noopFunc;\n\n const fab = new Fab();\n const getSetFab = {\n get() { return Fab; },\n set() {},\n };\n const getsetfab = {\n get() { return fab; },\n set() {},\n };\n\n // redefined Fab data properties which if 'FuckAdBlock' variable exists\n if (Object.prototype.hasOwnProperty.call(window, 'FuckAdBlock')) {\n window.FuckAdBlock = Fab;\n } else {\n // or redefined Fab accessor properties\n Object.defineProperty(window, 'FuckAdBlock', getSetFab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'BlockAdBlock')) {\n window.BlockAdBlock = Fab;\n } else {\n Object.defineProperty(window, 'BlockAdBlock', getSetFab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'SniffAdBlock')) {\n window.SniffAdBlock = Fab;\n } else {\n Object.defineProperty(window, 'SniffAdBlock', getSetFab);\n }\n\n if (Object.prototype.hasOwnProperty.call(window, 'fuckAdBlock')) {\n window.fuckAdBlock = fab;\n } else {\n Object.defineProperty(window, 'fuckAdBlock', getsetfab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'blockAdBlock')) {\n window.blockAdBlock = fab;\n } else {\n Object.defineProperty(window, 'blockAdBlock', getsetfab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'sniffAdBlock')) {\n window.sniffAdBlock = fab;\n } else {\n Object.defineProperty(window, 'sniffAdBlock', getsetfab);\n }\n}\n\npreventFab.names = [\n 'prevent-fab-3.2.0',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'nofab.js',\n 'ubo-nofab.js',\n 'fuckadblock.js-3.2.0',\n 'ubo-fuckadblock.js-3.2.0',\n 'ubo-nofab',\n];\n\npreventFab.injections = [hit, noopFunc, noopThis];\n","/* eslint-disable no-console, func-names, no-multi-assign */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet set-popads-dummy\n *\n * @description\n * Sets static properties PopAds and popns.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#popads-dummyjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('set-popads-dummy')\n * ```\n */\nexport function setPopadsDummy(source) {\n delete window.PopAds;\n delete window.popns;\n Object.defineProperties(window, {\n PopAds: {\n get: () => {\n hit(source);\n return {};\n },\n },\n popns: {\n get: () => {\n hit(source);\n return {};\n },\n },\n });\n}\n\nsetPopadsDummy.names = [\n 'set-popads-dummy',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'popads-dummy.js',\n 'ubo-popads-dummy.js',\n 'ubo-popads-dummy',\n];\n\nsetPopadsDummy.injections = [hit];\n","import {\n hit, createOnErrorHandler, randomId,\n} from '../helpers';\n\n/**\n * @scriptlet prevent-popads-net\n *\n * @description\n * Aborts on property write (PopAds, popns), throws reference error with random id.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#popadsnetjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-popads-net')\n * ```\n */\nexport function preventPopadsNet(source) {\n const rid = randomId();\n\n const throwError = () => {\n throw new ReferenceError(rid);\n };\n\n delete window.PopAds;\n delete window.popns;\n Object.defineProperties(window, {\n PopAds: { set: throwError },\n popns: { set: throwError },\n });\n\n window.onerror = createOnErrorHandler(rid).bind();\n hit(source);\n}\n\npreventPopadsNet.names = [\n 'prevent-popads-net',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'popads.net.js',\n 'ubo-popads.net.js',\n 'ubo-popads.net',\n];\n\npreventPopadsNet.injections = [createOnErrorHandler, randomId, hit];\n","/* eslint-disable func-names */\nimport { hit, setPropertyAccess } from '../helpers';\n\n/**\n * @scriptlet prevent-adfly\n *\n * @description\n * Prevents anti-adblock scripts on adfly short links.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#adfly-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-adfly')\n * ```\n */\nexport function preventAdfly(source) {\n const isDigit = (data) => /^\\d$/.test(data);\n const handler = function (encodedURL) {\n let evenChars = '';\n let oddChars = '';\n for (let i = 0; i < encodedURL.length; i += 1) {\n if (i % 2 === 0) {\n evenChars += encodedURL.charAt(i);\n } else {\n oddChars = encodedURL.charAt(i) + oddChars;\n }\n }\n\n let data = (evenChars + oddChars).split('');\n\n for (let i = 0; i < data.length; i += 1) {\n if (isDigit(data[i])) {\n for (let ii = i + 1; ii < data.length; ii += 1) {\n if (isDigit(data[ii])) {\n // eslint-disable-next-line no-bitwise\n const temp = parseInt(data[i], 10) ^ parseInt(data[ii], 10);\n if (temp < 10) {\n data[i] = temp.toString();\n }\n i = ii;\n break;\n }\n }\n }\n }\n data = data.join('');\n const decodedURL = window.atob(data).slice(16, -16);\n /* eslint-disable compat/compat */\n if (window.stop) {\n window.stop();\n }\n /* eslint-enable compat/compat */\n window.onbeforeunload = null;\n window.location.href = decodedURL;\n };\n\n let val;\n // Do not apply handler more than one time\n let applyHandler = true;\n\n const result = setPropertyAccess(window, 'ysmm', {\n configurable: false,\n set: (value) => {\n if (applyHandler) {\n applyHandler = false;\n try {\n if (typeof value === 'string') {\n handler(value);\n }\n } catch (err) { } // eslint-disable-line no-empty\n }\n val = value;\n },\n get: () => val,\n });\n\n if (result) {\n hit(source);\n } else {\n window.console.error('Failed to set up prevent-adfly scriptlet');\n }\n}\n\npreventAdfly.names = [\n 'prevent-adfly',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'adfly-defuser.js',\n 'ubo-adfly-defuser.js',\n 'ubo-adfly-defuser',\n];\n\npreventAdfly.injections = [setPropertyAccess, hit];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n noopFunc,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet debug-on-property-read\n *\n * @description\n * This scriptlet is basically the same as [abort-on-property-read](#abort-on-property-read), but instead of aborting it starts the debugger.\n *\n * **It is not supposed to be used in production filter lists!**\n *\n * **Syntax**\n * ```\n * ! Debug script if it tries to access `window.alert`\n * example.org#%#//scriptlet('debug-on-property-read', 'alert')\n * ! of `window.open`\n * example.org#%#//scriptlet('debug-on-property-read', 'open')\n * ```\n */\n/* eslint-enable max-len */\nexport function debugOnPropertyRead(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n const rid = randomId();\n const abort = () => {\n hit(source);\n debugger; // eslint-disable-line no-debugger\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, {\n get: abort,\n set: noopFunc,\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\ndebugOnPropertyRead.names = [\n 'debug-on-property-read',\n];\ndebugOnPropertyRead.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n noopFunc,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet debug-on-property-write\n *\n * @description\n * This scriptlet is basically the same as [abort-on-property-write](#abort-on-property-write), but instead of aborting it starts the debugger.\n *\n * **It is not supposed to be used in production filter lists!**\n *\n * **Syntax**\n * ```\n * ! Aborts script when it tries to write in property `window.test`\n * example.org#%#//scriptlet('debug-on-property-write', 'test')\n * ```\n */\n/* eslint-enable max-len */\nexport function debugOnPropertyWrite(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n const rid = randomId();\n const abort = () => {\n hit(source);\n debugger; // eslint-disable-line no-debugger\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, { set: abort });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid).bind();\n}\n\ndebugOnPropertyWrite.names = [\n 'debug-on-property-write',\n];\n\ndebugOnPropertyWrite.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet debug-current-inline-script\n *\n * @description\n * This scriptlet is basically the same as [abort-current-inline-script](#abort-current-inline-script), but instead of aborting it starts the debugger.\n *\n * **It is not supposed to be used in production filter lists!**\n *\n * **Syntax**\n *```\n * ! Aborts script when it tries to access `window.alert`\n * example.org#%#//scriptlet('debug-current-inline-script', 'alert')\n * ```\n */\n/* eslint-enable max-len */\nexport function debugCurrentInlineScript(source, property, search = null) {\n const regex = search ? toRegExp(search) : null;\n const rid = randomId();\n\n const getCurrentScript = () => {\n if (!document.currentScript) { // eslint-disable-line compat/compat\n const scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n }\n return document.currentScript; // eslint-disable-line compat/compat\n };\n\n const ourScript = getCurrentScript();\n\n const abort = () => {\n const scriptEl = getCurrentScript();\n if (scriptEl instanceof HTMLScriptElement\n && scriptEl.textContent.length > 0\n && scriptEl !== ourScript\n && (!regex || regex.test(scriptEl.textContent))) {\n hit(source);\n debugger; // eslint-disable-line no-debugger\n }\n };\n\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n let currentValue = base[prop];\n setPropertyAccess(base, prop, {\n set: (value) => {\n abort();\n currentValue = value;\n },\n get: () => {\n abort();\n return currentValue;\n },\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\ndebugCurrentInlineScript.names = [\n 'debug-current-inline-script',\n];\n\ndebugCurrentInlineScript.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n];\n","import { hit, observeDOMChanges } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet remove-attr\n *\n * @description\n * Removes the specified attributes from DOM nodes. This scriptlet runs once when the page loads\n * and after that periodically in order to DOM tree changes.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#remove-attrjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('remove-attr', attrs[, selector])\n * ```\n *\n * - `attrs` — required, attribute or list of attributes joined by '|'\n * - `selector` — optional, CSS selector, specifies DOM nodes from which the attributes will be removed\n *\n * **Examples**\n * 1. Removes by attribute\n * ```\n * example.org#%#//scriptlet('remove-attr', 'example|test')\n * ```\n *\n * ```html\n * \n *
Some text
\n *\n * \n *
Some text
\n * ```\n *\n * 2. Removes with specified selector\n * ```\n * example.org#%#//scriptlet('remove-attr', 'example', 'div[class=\"inner\"]')\n * ```\n *\n * ```html\n * \n *
\n *
Some text
\n *
\n *\n * \n *
\n *
Some text
\n *
\n * ```\n */\n/* eslint-enable max-len */\nexport function removeAttr(source, attrs, selector) {\n if (!attrs) { return; }\n attrs = attrs.split(/\\s*\\|\\s*/);\n if (!selector) {\n selector = `[${attrs.join('],[')}]`;\n }\n\n const rmattr = () => {\n const nodes = [].slice.call(document.querySelectorAll(selector));\n let removed = false;\n nodes.forEach((node) => {\n attrs.forEach((attr) => {\n node.removeAttribute(attr);\n removed = true;\n });\n });\n if (removed) {\n hit(source);\n }\n };\n\n rmattr();\n\n // 'true' for observing attributes\n observeDOMChanges(rmattr, true);\n}\n\nremoveAttr.names = [\n 'remove-attr',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'remove-attr.js',\n 'ubo-remove-attr.js',\n 'ra.js',\n 'ubo-ra.js',\n 'ubo-remove-attr',\n 'ubo-ra',\n];\n\nremoveAttr.injections = [hit, observeDOMChanges];\n","import { hit, observeDOMChanges } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet remove-class\n *\n * @description\n * Removes the specified classes from DOM nodes. This scriptlet runs once after the page loads\n * and after that periodically in order to DOM tree changes.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#remove-classjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('remove-class', classes[, selector])\n * ```\n *\n * - `classes` — required, class or list of classes separated by '|'\n * - `selector` — optional, CSS selector, specifies DOM nodes from which the classes will be removed.\n * If there is no `selector`, each class of `classes` independently will be removed from all nodes which has one\n *\n * **Examples**\n * 1. Removes by classes\n * ```\n * example.org#%#//scriptlet('remove-class', 'example|test')\n * ```\n *\n * ```html\n * \n *
Some text
\n *
Some text
\n *
Some text
\n *\n * \n *
Some text
\n *
Some text
\n *
Some text
\n * ```\n *\n * 2. Removes with specified selector\n * ```\n * example.org#%#//scriptlet('remove-class', 'branding', 'div[class^=\"inner\"]')\n * ```\n *\n * ```html\n * \n *
\n *
Some text
\n *
\n *\n * \n *
\n *
Some text
\n *
\n * ```\n */\n/* eslint-enable max-len */\n\nexport function removeClass(source, classNames, selector) {\n if (!classNames) { return; }\n classNames = classNames.split(/\\s*\\|\\s*/);\n let selectors = [];\n if (!selector) {\n selectors = classNames.map((className) => {\n return `.${className}`;\n });\n }\n\n const removeClassHandler = () => {\n const nodes = new Set();\n if (selector) {\n const foundedNodes = [].slice.call(document.querySelectorAll(selector));\n foundedNodes.forEach((n) => nodes.add(n));\n } else if (selectors.length > 0) {\n selectors.forEach((s) => {\n const elements = document.querySelectorAll(s);\n for (let i = 0; i < elements.length; i += 1) {\n const element = elements[i];\n nodes.add(element);\n }\n });\n }\n\n let removed = false;\n\n nodes.forEach((node) => {\n classNames.forEach((className) => {\n if (node.classList.contains(className)) {\n node.classList.remove(className);\n removed = true;\n }\n });\n });\n\n if (removed) {\n hit(source);\n }\n };\n\n removeClassHandler();\n\n const CLASS_ATTR_NAME = ['class'];\n // 'true' for observing attributes\n // 'class' for observing only classes\n observeDOMChanges(removeClassHandler, true, CLASS_ATTR_NAME);\n}\n\nremoveClass.names = [\n 'remove-class',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'remove-class.js',\n 'ubo-remove-class.js',\n 'rc.js',\n 'ubo-rc.js',\n 'ubo-remove-class',\n 'ubo-rc',\n];\n\nremoveClass.injections = [hit, observeDOMChanges];\n","import { hit } from '../helpers';\n\n/**\n * @scriptlet disable-newtab-links\n *\n * @description\n * Prevents opening new tabs and windows if there is `target` attribute in element.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#disable-newtab-linksjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('disable-newtab-links')\n * ```\n */\nexport function disableNewtabLinks(source) {\n document.addEventListener('click', (ev) => {\n let { target } = ev;\n while (target !== null) {\n if (target.localName === 'a' && target.hasAttribute('target')) {\n ev.stopPropagation();\n ev.preventDefault();\n hit(source);\n break;\n }\n target = target.parentNode;\n }\n });\n}\n\ndisableNewtabLinks.names = [\n 'disable-newtab-links',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'disable-newtab-links.js',\n 'ubo-disable-newtab-links.js',\n 'ubo-disable-newtab-links',\n];\n\ndisableNewtabLinks.injections = [\n hit,\n];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet adjust-setInterval\n *\n * @description\n * Adjusts interval for specified setInterval() callbacks.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#nano-setinterval-boosterjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('adjust-setInterval'[, match [, interval[, boost]]])\n * ```\n *\n * - `match` - optional, string/regular expression, matching in stringified callback function\n * - `interval` - optional, defaults to 1000, decimal integer, matching setInterval delay\n * - `boost` - optional, default to 0.05, float, capped at 50 times for up and down (0.02...50), interval multiplier\n *\n * **Examples**\n * 1. Adjust all setInterval() x20 times where interval equal 1000ms:\n * ```\n * example.org#%#//scriptlet('adjust-setInterval')\n * ```\n *\n * 2. Adjust all setInterval() x20 times where callback mathed with `example` and interval equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', 'example')\n * ```\n *\n * 3. Adjust all setInterval() x20 times where callback mathed with `example` and interval equal 400ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', 'example', '400')\n * ```\n *\n * 4. Slow down setInterval() x2 times where callback matched with `example` and interval equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', 'example', '', '2')\n * ```\n * 5. Adjust all setInterval() x50 times where interval equal 2000ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', '', '2000', '0.02')\n * ```\n */\n/* eslint-enable max-len */\nexport function adjustSetInterval(source, match, interval, boost) {\n const nativeInterval = window.setInterval;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const nativeIsFinite = Number.isFinite || window.isFinite; // eslint-disable-line compat/compat\n\n interval = parseInt(interval, 10);\n interval = nativeIsNaN(interval) ? 1000 : interval;\n\n boost = parseFloat(boost);\n boost = nativeIsNaN(boost) || !nativeIsFinite(boost) ? 0.05 : boost;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n if (boost < 0.02) {\n boost = 0.02;\n }\n if (boost > 50) {\n boost = 50;\n }\n\n const intervalWrapper = (cb, d, ...args) => {\n if (d === interval && match.test(cb.toString())) {\n d *= boost;\n hit(source);\n }\n return nativeInterval.apply(window, [cb, d, ...args]);\n };\n window.setInterval = intervalWrapper;\n}\n\nadjustSetInterval.names = [\n 'adjust-setInterval',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'nano-setInterval-booster.js',\n 'ubo-nano-setInterval-booster.js',\n 'nano-sib.js',\n 'ubo-nano-sib.js',\n 'ubo-nano-setInterval-booster',\n 'ubo-nano-sib',\n];\n\nadjustSetInterval.injections = [toRegExp, hit];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet adjust-setTimeout\n *\n * @description\n * Adjusts timeout for specified setTimout() callbacks.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#nano-settimeout-boosterjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout'[, match [, timeout[, boost]]])\n * ```\n *\n * - `match` - optional, string/regular expression, matching in stringified callback function\n * - `timeout` - optional, defaults to 1000, decimal integer, matching setTimout delay\n * - `boost` - optional, default to 0.05, float, capped at 50 times for up and down (0.02...50), timeout multiplier\n *\n * **Examples**\n * 1. Adjust all setTimeout() x20 times where timeout equal 1000ms:\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout')\n * ```\n *\n * 2. Adjust all setTimeout() x20 times where callback mathed with `example` and timeout equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', 'example')\n * ```\n *\n * 3. Adjust all setTimeout() x20 times where callback mathed with `example` and timeout equal 400ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', 'example', '400')\n * ```\n *\n * 4. Slow down setTimeout() x2 times where callback matched with `example` and timeout equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', 'example', '', '2')\n * ```\n * 5. Adjust all setTimeout() x50 times where timeout equal 2000ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', '', '2000', '0.02')\n * ```\n */\n/* eslint-enable max-len */\nexport function adjustSetTimeout(source, match, timeout, boost) {\n const nativeTimeout = window.setTimeout;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const nativeIsFinite = Number.isFinite || window.isFinite; // eslint-disable-line compat/compat\n\n timeout = parseInt(timeout, 10);\n timeout = nativeIsNaN(timeout) ? 1000 : timeout;\n\n boost = parseFloat(boost);\n boost = nativeIsNaN(boost) || !nativeIsFinite(boost) ? 0.05 : boost;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n if (boost < 0.02) {\n boost = 0.02;\n }\n if (boost > 50) {\n boost = 50;\n }\n\n const timeoutWrapper = (cb, d, ...args) => {\n if (d === timeout && match.test(cb.toString())) {\n d *= boost;\n hit(source);\n }\n return nativeTimeout.apply(window, [cb, d, ...args]);\n };\n window.setTimeout = timeoutWrapper;\n}\n\nadjustSetTimeout.names = [\n 'adjust-setTimeout',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'nano-setTimeout-booster.js',\n 'ubo-nano-setTimeout-booster.js',\n 'nano-stb.js',\n 'ubo-nano-stb.js',\n 'ubo-nano-setTimeout-booster',\n 'ubo-nano-stb',\n];\n\nadjustSetTimeout.injections = [toRegExp, hit];\n","import { hit } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet dir-string\n *\n * @description\n * Wraps the `console.dir` API to call the `toString` method of the argument.\n * There are several adblock circumvention systems that detect browser devtools\n * and hide themselves. Therefore, if we force them to think\n * that devtools are open (using this scrciptlet),\n * it will automatically disable the adblock circumvention script.\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/6b2a309054cc23432102b85d13f12559639ef495/lib/content/snippets.js#L766\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('dir-string'[, times])\n * ```\n * - `times` - optional, the number of times to call the `toString` method of the argument to `console.dir`\n *\n * **Example**\n * ```\n * ! Run 2 times\n * example.org#%#//scriptlet('dir-string', '2')\n * ```\n */\n/* eslint-enable max-len */\nexport function dirString(source, times) {\n const { dir } = console;\n times = parseInt(times, 10);\n\n function dirWrapper(object) {\n // eslint-disable-next-line no-unused-vars\n let temp;\n for (let i = 0; i < times; i += 1) {\n // eslint-disable-next-line no-unused-expressions\n temp = `${object}`;\n }\n if (typeof dir === 'function') {\n dir.call(this, object);\n }\n hit(source, temp);\n }\n // eslint-disable-next-line no-console\n console.dir = dirWrapper;\n}\n\ndirString.names = [\n 'dir-string',\n 'abp-dir-string',\n];\n\ndirString.injections = [hit];\n","import {\n hit, toRegExp, matchStackTrace, getWildcardPropertyInChain,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet json-prune\n *\n * @description\n * Removes specified properties from the result of calling JSON.parse and returns the caller\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#json-prunejs-\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/master/lib/content/snippets.js#L1285\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('json-prune'[, propsToRemove [, obligatoryProps [, stack]]])\n * ```\n *\n * - `propsToRemove` - optional, string of space-separated properties to remove\n * - `obligatoryProps` - optional, string of space-separated properties which must be all present for the pruning to occur\n * - `stack` - optional, string or regular expression that must match the current function call stack trace\n *\n * > Note please that you can use wildcard `*` for chain property name.\n * e.g. 'ad.*.src' instead of 'ad.0.src ad.1.src ad.2.src ...'\n *\n * **Examples**\n * 1. Removes property `example` from the results of JSON.parse call\n * ```\n * example.org#%#//scriptlet('json-prune', 'example')\n * ```\n *\n * For instance, the following call will return `{ one: 1}`\n *\n * ```html\n * JSON.parse('{\"one\":1,\"example\":true}')\n * ```\n *\n * 2. If there are no specified properties in the result of JSON.parse call, pruning will NOT occur\n * ```\n * example.org#%#//scriptlet('json-prune', 'one', 'obligatoryProp')\n * ```\n *\n * For instance, the following call will return `{ one: 1, two: 2}`\n *\n * ```html\n * JSON.parse('{\"one\":1,\"two\":2}')\n * ```\n *\n * 3. A property in a list of properties can be a chain of properties\n *\n * ```\n * example.org#%#//scriptlet('json-prune', 'a.b', 'adpath.url.first')\n * ```\n *\n * 4. Removes property `content.ad` from the results of JSON.parse call it's error stack trace contains `test.js`\n * ```\n * example.org#%#//scriptlet('json-prune', 'content.ad', '', 'test.js')\n * ```\n *\n * 5. A property in a list of properties can be a chain of properties with wildcard in it\n *\n * ```\n * example.org#%#//scriptlet('json-prune', 'content.*.media.src', 'content.*.media.preroll')\n * ```\n *\n * 6. Call with no arguments will log the current hostname and json payload at the console\n * ```\n * example.org#%#//scriptlet('json-prune')\n * ```\n */\n/* eslint-enable max-len */\nexport function jsonPrune(source, propsToRemove, requiredInitialProps, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n\n // eslint-disable-next-line no-console\n const log = console.log.bind(console);\n const prunePaths = propsToRemove !== undefined && propsToRemove !== ''\n ? propsToRemove.split(/ +/)\n : [];\n const requiredPaths = requiredInitialProps !== undefined && requiredInitialProps !== ''\n ? requiredInitialProps.split(/ +/)\n : [];\n\n function isPruningNeeded(root) {\n if (!root) {\n return false;\n }\n\n let shouldProcess;\n for (let i = 0; i < requiredPaths.length; i += 1) {\n const requiredPath = requiredPaths[i];\n const lastNestedPropName = requiredPath.split('.').pop();\n\n const hasWildcard = requiredPath.indexOf('.*.') > -1\n || requiredPath.indexOf('*.') > -1\n || requiredPath.indexOf('.*') > -1\n || requiredPath.indexOf('.[].') > -1\n || requiredPath.indexOf('[].') > -1\n || requiredPath.indexOf('.[]') > -1;\n\n // if the path has wildcard, getPropertyInChain should 'look through' chain props\n const details = getWildcardPropertyInChain(root, requiredPath, hasWildcard);\n\n // start value of 'shouldProcess' due to checking below\n shouldProcess = !hasWildcard;\n\n for (let i = 0; i < details.length; i += 1) {\n if (hasWildcard) {\n // if there is a wildcard,\n // at least one (||) of props chain should be present in object\n shouldProcess = !(details[i].base[lastNestedPropName] === undefined)\n || shouldProcess;\n } else {\n // otherwise each one (&&) of them should be there\n shouldProcess = !(details[i].base[lastNestedPropName] === undefined)\n && shouldProcess;\n }\n }\n }\n\n return shouldProcess;\n }\n\n const nativeParse = JSON.parse;\n\n const parseWrapper = (...args) => {\n const root = nativeParse.apply(window, args);\n if (prunePaths.length === 0) {\n log(window.location.hostname, root);\n return root;\n }\n if (isPruningNeeded(root) === false) {\n return root;\n }\n // if pruning is needed, we check every input pathToRemove\n // and delete it if root has it\n prunePaths.forEach((path) => {\n const ownerObjArr = getWildcardPropertyInChain(root, path, true);\n ownerObjArr.forEach((ownerObj) => {\n if (ownerObj !== undefined && ownerObj.base) {\n delete ownerObj.base[ownerObj.prop];\n }\n });\n });\n hit(source);\n return root;\n };\n\n JSON.parse = parseWrapper;\n}\n\njsonPrune.names = [\n 'json-prune',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'json-prune.js',\n 'ubo-json-prune.js',\n 'ubo-json-prune',\n 'abp-json-prune',\n];\n\njsonPrune.injections = [hit, toRegExp, matchStackTrace, getWildcardPropertyInChain];\n","import {\n hit, startsWith, toRegExp, noopFunc,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-requestAnimationFrame\n *\n * @description\n * Prevents a `requestAnimationFrame` call\n * if the text of the callback is matching the specified search string which does not start with `!`;\n * otherwise mismatched calls should be defused.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#no-requestanimationframe-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-requestAnimationFrame'[, search])\n * ```\n *\n * - `search` - optional, string or regular expression.\n * If starts with `!`, scriptlet will not match the stringified callback but all other will be defused.\n * If do not start with `!`, the stringified callback will be matched.\n *\n * Call with no argument will log all requestAnimationFrame calls while debugging.\n * So do not use the scriptlet without any parameter in production filter lists.\n *\n * **Examples**\n * 1. Prevents `requestAnimationFrame` calls if the callback matches `/\\.test/`.\n * ```bash\n * example.org#%#//scriptlet('prevent-requestAnimationFrame', '/\\.test/')\n * ```\n *\n * For instance, the following call will be prevented:\n * ```javascript\n * var times = 0;\n * requestAnimationFrame(function change() {\n * window.test = 'new value';\n * if (times < 2) {\n * times += 1;\n * requestAnimationFrame(change);\n * }\n * });\n * ```\n * 2. Prevents `requestAnimationFrame` calls if **does not match** 'check'.\n * ```bash\n * example.org#%#//scriptlet('prevent-requestAnimationFrame', '!check')\n * ```\n *\n * For instance, only the first call will be prevented:\n *\n * ```javascript\n * var timesFirst = 0;\n * requestAnimationFrame(function changeFirst() {\n * window.check = 'should not be prevented';\n * if (timesFirst < 2) {\n * timesFirst += 1;\n * requestAnimationFrame(changeFirst);\n * }\n * });\n *\n * var timesSecond = 0;\n * requestAnimationFrame(function changeSecond() {\n * window.second = 'should be prevented';\n * if (timesSecond < 2) {\n * timesSecond += 1;\n * requestAnimationFrame(changeSecond);\n * }\n * });\n * ```\n */\n/* eslint-enable max-len */\n\nexport function preventRequestAnimationFrame(source, match) {\n const nativeRequestAnimationFrame = window.requestAnimationFrame;\n\n // logs requestAnimationFrame to console if no arguments have been specified\n const shouldLog = typeof match === 'undefined';\n\n const INVERT_MARKER = '!';\n\n const doNotMatch = startsWith(match, INVERT_MARKER);\n if (doNotMatch) {\n match = match.slice(1);\n }\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n const rafWrapper = (callback, ...args) => {\n let shouldPrevent = false;\n if (shouldLog) {\n const logMessage = `log: requestAnimationFrame(\"${callback.toString()}\")`;\n hit(source, logMessage);\n } else {\n shouldPrevent = match.test(callback.toString()) !== doNotMatch;\n }\n\n if (shouldPrevent) {\n hit(source);\n return nativeRequestAnimationFrame(noopFunc);\n }\n\n return nativeRequestAnimationFrame.apply(window, [callback, ...args]);\n };\n\n window.requestAnimationFrame = rafWrapper;\n}\n\npreventRequestAnimationFrame.names = [\n 'prevent-requestAnimationFrame',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'no-requestAnimationFrame-if.js',\n 'ubo-no-requestAnimationFrame-if.js',\n 'norafif.js',\n 'ubo-norafif.js',\n 'ubo-no-requestAnimationFrame-if',\n 'ubo-norafif',\n];\n\npreventRequestAnimationFrame.injections = [hit, startsWith, toRegExp, noopFunc];\n","import { hit } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet set-cookie\n *\n * @description\n * Sets a cookie with the specified name and value. Cookie path defaults to root.\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('set-cookie', name, value)\n * ```\n *\n * - `name` - required, cookie name to be set\n * - `value` - required, cookie value; possible values:\n * - number `>= 0 && <= 15`\n * - one of the predefined constants:\n * - `true` / `True`\n * - `false` / `False`\n * - `yes` / `Yes` / `Y`\n * - `no`\n * - `ok` / `OK`\n *\n * **Examples**\n * ```\n * example.org#%#//scriptlet('set-cookie', 'checking', 'ok')\n *\n * example.org#%#//scriptlet('set-cookie', 'gdpr-settings-cookie', '1')\n * ```\n */\n/* eslint-enable max-len */\nexport function setCookie(source, name, value) {\n if (!name || !value) {\n return;\n }\n\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n let valueToSet;\n if (value === 'true') {\n valueToSet = 'true';\n } else if (value === 'True') {\n valueToSet = 'True';\n } else if (value === 'false') {\n valueToSet = 'false';\n } else if (value === 'False') {\n valueToSet = 'False';\n } else if (value === 'yes') {\n valueToSet = 'yes';\n } else if (value === 'Yes') {\n valueToSet = 'Yes';\n } else if (value === 'Y') {\n valueToSet = 'Y';\n } else if (value === 'no') {\n valueToSet = 'no';\n } else if (value === 'ok') {\n valueToSet = 'ok';\n } else if (value === 'OK') {\n valueToSet = 'OK';\n } else if (/^\\d+$/.test(value)) {\n valueToSet = parseFloat(value);\n if (nativeIsNaN(valueToSet)) {\n return;\n }\n if (Math.abs(valueToSet) < 0 || Math.abs(valueToSet) > 15) {\n return;\n }\n } else {\n return;\n }\n\n const pathToSet = 'path=/;';\n\n const cookieData = `${encodeURIComponent(name)}=${encodeURIComponent(valueToSet)}; ${pathToSet}`;\n\n hit(source);\n document.cookie = cookieData;\n}\n\nsetCookie.names = [\n 'set-cookie',\n];\n\nsetCookie.injections = [hit];\n","import { hit, observeDOMChanges, flatten } from '../helpers';\n\n/**\n * @scriptlet hide-in-shadow-dom\n *\n * @description\n * Hides elements inside open shadow DOM elements.\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('hide-in-shadow-dom', selector[, baseSelector])\n * ```\n *\n * - `selector` — required, CSS selector of element in shadow-dom to hide\n * - `baseSelector` — optional, selector of specific page DOM element,\n * narrows down the part of the page DOM where shadow-dom host supposed to be,\n * defaults to document.documentElement\n *\n * > `baseSelector` should match element of the page DOM, but not of shadow DOM\n *\n * **Examples**\n * ```\n * ! hides menu bar\n * virustotal.com#%#//scriptlet('hide-in-shadow-dom', 'iron-pages', 'vt-virustotal-app')\n *\n * ! hides floating element\n * virustotal.com#%#//scriptlet('hide-in-shadow-dom', 'vt-ui-contact-fab')\n * ```\n */\nexport function hideInShadowDom(source, selector, baseSelector) {\n // do nothing if browser does not support ShadowRoot\n // https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot\n if (!Element.prototype.attachShadow) {\n return;\n }\n\n /**\n * Finds shadow-dom host (elements with shadowRoot property) in DOM of rootElement.\n * @param {HTMLElement} rootElement\n * @returns {nodeList[]} shadow-dom hosts\n */\n const findHostElements = (rootElement) => {\n const hosts = [];\n // Element.querySelectorAll() returns list of elements\n // which are defined in DOM of Element.\n // Meanwhile, inner DOM of the element with shadowRoot property\n // is absolutely another DOM and which can not be reached by querySelectorAll('*')\n const domElems = rootElement.querySelectorAll('*');\n domElems.forEach((el) => {\n if (el.shadowRoot) {\n hosts.push(el);\n }\n });\n return hosts;\n };\n\n /**\n * @typedef {Object} PierceData\n * @property {Array} targets found elements\n * @property {Array} innerHosts inner shadow-dom hosts\n */\n\n /**\n * Pierces open shadow-dom in order to find:\n * - elements by 'selector' matching\n * - inner shadow-dom hosts\n * @param {string} selector\n * @param {nodeList[]} hostElements\n * @returns {PierceData}\n */\n const pierceShadowDom = (selector, hostElements) => {\n const targets = [];\n const innerHostsAcc = [];\n\n const collectTargets = (arr) => {\n if (arr.length !== 0) {\n arr.forEach((el) => targets.push(el));\n }\n };\n\n // it's possible to get a few hostElements found by baseSelector on the page\n hostElements.forEach((host) => {\n // check presence of selector element inside base element if it's not in shadow-dom\n const simpleElems = host.querySelectorAll(selector);\n collectTargets(simpleElems);\n\n const shadowRootElem = host.shadowRoot;\n const shadowChildren = shadowRootElem.querySelectorAll(selector);\n collectTargets(shadowChildren);\n\n // find inner shadow-dom hosts inside processing shadow-dom\n innerHostsAcc.push(findHostElements(shadowRootElem));\n });\n\n // if there were more than one host element,\n // innerHostsAcc is an array of arrays and should be flatten\n const innerHosts = flatten(innerHostsAcc);\n return { targets, innerHosts };\n };\n\n /**\n * Handles shadow-dom piercing and hiding of found elements\n */\n const hideHandler = () => {\n // start value of shadow-dom hosts for the page dom\n let hostElements = !baseSelector ? findHostElements(document.documentElement)\n : document.querySelectorAll(baseSelector);\n\n // if there is shadow-dom host, they should be explored\n while (hostElements.length !== 0) {\n let hidden = false;\n const DISPLAY_NONE_CSS = 'display:none!important;';\n\n const { targets, innerHosts } = pierceShadowDom(selector, hostElements);\n\n targets.forEach((targetEl) => {\n targetEl.style.cssText = DISPLAY_NONE_CSS;\n hidden = true;\n });\n\n if (hidden) {\n hit(source);\n }\n\n // continue to pierce for inner shadow-dom hosts\n // and search inside them while the next iteration\n hostElements = innerHosts;\n }\n };\n\n hideHandler();\n\n observeDOMChanges(hideHandler, true);\n}\n\nhideInShadowDom.names = [\n 'hide-in-shadow-dom',\n];\n\nhideInShadowDom.injections = [hit, observeDOMChanges, flatten];\n","/**\n * This file must export all scriptlets which should be accessible\n */\nexport * from './abort-on-property-read';\nexport * from './abort-on-property-write';\nexport * from './prevent-setTimeout';\nexport * from './prevent-setInterval';\nexport * from './prevent-window-open';\nexport * from './abort-current-inline-script';\nexport * from './set-constant';\nexport * from './remove-cookie';\nexport * from './prevent-addEventListener';\nexport * from './prevent-bab';\nexport * from './nowebrtc';\nexport * from './log-addEventListener';\nexport * from './log-eval';\nexport * from './log';\nexport * from './noeval';\nexport * from './prevent-eval-if';\nexport * from './prevent-fab-3.2.0';\nexport * from './set-popads-dummy';\nexport * from './prevent-popads-net';\nexport * from './prevent-adfly';\nexport * from './debug-on-property-read';\nexport * from './debug-on-property-write';\nexport * from './debug-current-inline-script';\nexport * from './remove-attr';\nexport * from './remove-class';\nexport * from './disable-newtab-links';\nexport * from './adjust-setInterval';\nexport * from './adjust-setTimeout';\nexport * from './dir-string';\nexport * from './json-prune';\nexport * from './prevent-requestAnimationFrame';\nexport * from './set-cookie';\nexport * from './hide-in-shadow-dom';\n","import {\n startsWith,\n endsWith,\n substringAfter,\n toRegExp,\n} from './string-utils';\n\nimport { ADG_SCRIPTLET_MASK } from './parse-rule';\n\nimport * as scriptletsList from '../scriptlets/scriptletsList';\n\nimport { redirects } from '../../scripts/compatibility-table.json';\n\nconst JS_RULE_MARKER = '#%#';\nconst COMMENT_MARKER = '!';\n\n/**\n * Checks if rule text is comment e.g. !!example.org##+js(set-constant.js, test, false)\n * @param {string} rule\n * @return {boolean}\n */\nconst isComment = (rule) => startsWith(rule, COMMENT_MARKER);\n\n/* ************************************************************************\n *\n * Scriptlets\n *\n ************************************************************************** */\n\n/**\n * uBlock scriptlet rule mask\n */\nconst UBO_SCRIPTLET_MASK_REG = /#@?#script:inject|#@?#\\s*\\+js/;\nconst UBO_SCRIPTLET_MASK_1 = '##+js';\nconst UBO_SCRIPTLET_MASK_2 = '##script:inject';\nconst UBO_SCRIPTLET_EXCEPTION_MASK_1 = '#@#+js';\nconst UBO_SCRIPTLET_EXCEPTION_MASK_2 = '#@#script:inject';\n\n/**\n * AdBlock Plus snippet rule mask\n */\nconst ABP_SCRIPTLET_MASK = '#$#';\nconst ABP_SCRIPTLET_EXCEPTION_MASK = '#@$#';\n\n/**\n * AdGuard CSS rule mask\n */\nconst ADG_CSS_MASK_REG = /#@?\\$#.+?\\s*\\{.*\\}\\s*$/g;\n\n/**\n * Checks if the `rule` is AdGuard scriptlet rule\n * @param {string} rule - rule text\n */\nconst isAdgScriptletRule = (rule) => {\n return (\n !isComment(rule)\n && rule.indexOf(ADG_SCRIPTLET_MASK) > -1\n );\n};\n\n/**\n * Checks if the `rule` is uBO scriptlet rule\n * @param {string} rule rule text\n */\nconst isUboScriptletRule = (rule) => {\n return (\n rule.indexOf(UBO_SCRIPTLET_MASK_1) > -1\n || rule.indexOf(UBO_SCRIPTLET_MASK_2) > -1\n || rule.indexOf(UBO_SCRIPTLET_EXCEPTION_MASK_1) > -1\n || rule.indexOf(UBO_SCRIPTLET_EXCEPTION_MASK_2) > -1\n )\n && UBO_SCRIPTLET_MASK_REG.test(rule)\n && !isComment(rule);\n};\n\n/**\n * Checks if the `rule` is AdBlock Plus snippet\n * @param {string} rule rule text\n */\nconst isAbpSnippetRule = (rule) => {\n return (\n rule.indexOf(ABP_SCRIPTLET_MASK) > -1\n || rule.indexOf(ABP_SCRIPTLET_EXCEPTION_MASK) > -1\n )\n && rule.search(ADG_CSS_MASK_REG) === -1\n && !isComment(rule);\n};\n\n/**\n * Finds scriptlet by it's name\n * @param {string} name - scriptlet name\n */\nconst getScriptletByName = (name) => {\n const scriptlets = Object.keys(scriptletsList).map((key) => scriptletsList[key]);\n return scriptlets\n .find((s) => {\n return s.names\n // full match name checking\n && (s.names.indexOf(name) > -1\n // or check ubo alias name without '.js' at the end\n || (!endsWith(name, '.js') && s.names.indexOf(`${name}.js`) > -1)\n );\n });\n};\n\n/**\n * Checks if the scriptlet name is valid\n * @param {string} name - Scriptlet name\n */\nconst isValidScriptletName = (name) => {\n if (!name) {\n return false;\n }\n const scriptlet = getScriptletByName(name);\n if (!scriptlet) {\n return false;\n }\n return true;\n};\n\n/* ************************************************************************\n *\n * Redirects\n *\n ************************************************************************** */\n\n/**\n * Redirect resources markers\n */\nconst ADG_UBO_REDIRECT_MARKER = 'redirect=';\nconst ABP_REDIRECT_MARKER = 'rewrite=abp-resource:';\n\nconst VALID_SOURCE_TYPES = [\n 'image',\n 'subdocument',\n 'stylesheet',\n 'script',\n 'xmlhttprequest',\n 'media',\n];\n\nconst validAdgRedirects = redirects.filter((el) => el.adg);\n\n/**\n * Converts array of pairs to object.\n * Sort of Object.fromEntries() polyfill.\n * @param {Array} pairs - array of pairs\n * @returns {Object}\n */\nconst objFromEntries = (pairs) => {\n const output = pairs\n .reduce((acc, el) => {\n const [key, value] = el;\n acc[key] = value;\n return acc;\n }, {});\n return output;\n};\n\n/**\n * Compatibility object where KEYS = UBO redirect names and VALUES = ADG redirect names\n * It's used for UBO -> ADG converting\n */\nconst uboToAdgCompatibility = objFromEntries(\n validAdgRedirects\n .filter((el) => el.ubo)\n .map((el) => {\n return [el.ubo, el.adg];\n }),\n);\n\n/**\n * Compatibility object where KEYS = ABP redirect names and VALUES = ADG redirect names\n * It's used for ABP -> ADG converting\n */\nconst abpToAdgCompatibility = objFromEntries(\n validAdgRedirects\n .filter((el) => el.abp)\n .map((el) => {\n return [el.abp, el.adg];\n }),\n);\n\n/**\n * Compatibility object where KEYS = UBO redirect names and VALUES = ADG redirect names\n * It's used for ADG -> UBO converting\n */\nconst adgToUboCompatibility = objFromEntries(\n validAdgRedirects\n .filter((el) => el.ubo)\n .map((el) => {\n return [el.adg, el.ubo];\n }),\n);\n\n/**\n * Needed for AdGuard redirect names validation where KEYS = **valid** AdGuard redirect names\n * 'adgToUboCompatibility' is still needed for ADG -> UBO converting\n */\nconst validAdgCompatibility = objFromEntries(\n validAdgRedirects\n .map((el) => {\n return [el.adg, 'valid adg redirect'];\n }),\n);\n\nconst REDIRECT_RULE_TYPES = {\n VALID_ADG: {\n marker: ADG_UBO_REDIRECT_MARKER,\n compatibility: validAdgCompatibility,\n },\n ADG: {\n marker: ADG_UBO_REDIRECT_MARKER,\n compatibility: adgToUboCompatibility,\n },\n UBO: {\n marker: ADG_UBO_REDIRECT_MARKER,\n compatibility: uboToAdgCompatibility,\n },\n ABP: {\n marker: ABP_REDIRECT_MARKER,\n compatibility: abpToAdgCompatibility,\n },\n};\n\n/**\n * Parses redirect rule modifiers\n * @param {string} rule\n * @returns {Array}\n */\nconst parseModifiers = (rule) => substringAfter(rule, '$').split(',');\n\n/**\n * Gets redirect resource name\n * @param {string} rule\n * @param {string} marker - specific Adg/Ubo or Abp redirect resources marker\n * @returns {string} - redirect resource name\n */\nconst getRedirectName = (rule, marker) => {\n const ruleModifiers = parseModifiers(rule);\n const redirectNamePart = ruleModifiers\n .find((el) => el.indexOf(marker) > -1);\n return substringAfter(redirectNamePart, marker);\n};\n\n/**\n * Checks if the `rule` is AdGuard redirect rule.\n * Discards comments and JS rules and checks if the `rule` has 'redirect' modifier.\n * @param {string} rule - rule text\n */\nconst isAdgRedirectRule = (rule) => {\n const MARKER_IN_BASE_PART_MASK = '/((?!\\\\$|\\\\,).{1})redirect=(.{0,}?)\\\\$(popup)?/';\n return (\n !isComment(rule)\n && rule.indexOf(REDIRECT_RULE_TYPES.ADG.marker) > -1\n // some js rules may have 'redirect=' in it, so we should get rid of them\n && rule.indexOf(JS_RULE_MARKER) === -1\n // get rid of rules like '_redirect=*://look.$popup'\n && !(toRegExp(MARKER_IN_BASE_PART_MASK).test(rule))\n );\n};\n\n/**\n * Checks if the `rule` satisfies the `type`\n * @param {string} rule - rule text\n * @param {'VALID_ADG'|'ADG'|'UBO'|'ABP'} type - type of a redirect rule\n */\nconst isRedirectRuleByType = (rule, type) => {\n const { marker, compatibility } = REDIRECT_RULE_TYPES[type];\n\n if (rule\n && (!isComment(rule))\n && (rule.indexOf(marker) > -1)) {\n const redirectName = getRedirectName(rule, marker);\n\n return redirectName === Object\n .keys(compatibility)\n .find((el) => el === redirectName);\n }\n return false;\n};\n\n/**\n* Checks if the `rule` is **valid** AdGuard redirect resource rule\n* @param {string} rule - rule text\n* @returns {boolean}\n*/\nconst isValidAdgRedirectRule = (rule) => {\n return isRedirectRuleByType(rule, 'VALID_ADG');\n};\n\n/**\n* Checks if the AdGuard redirect `rule` has Ubo analog. Needed for Adg->Ubo conversion\n* @param {string} rule - AdGuard rule text\n* @returns {boolean} - true if the rule can be converted to Ubo\n*/\nconst isAdgRedirectCompatibleWithUbo = (rule) => {\n return isAdgRedirectRule(rule) && isRedirectRuleByType(rule, 'ADG');\n};\n\n/**\n* Checks if the Ubo redirect `rule` has AdGuard analog. Needed for Ubo->Adg conversion\n* @param {string} rule - Ubo rule text\n* @returns {boolean} - true if the rule can be converted to AdGuard\n*/\nconst isUboRedirectCompatibleWithAdg = (rule) => {\n return isRedirectRuleByType(rule, 'UBO');\n};\n\n/**\n* Checks if the Abp redirect `rule` has AdGuard analog. Needed for Abp->Adg conversion\n* @param {string} rule - Abp rule text\n* @returns {boolean} - true if the rule can be converted to AdGuard\n*/\nconst isAbpRedirectCompatibleWithAdg = (rule) => {\n return isRedirectRuleByType(rule, 'ABP');\n};\n\n/**\n * Checks if the rule has specified content type before Adg -> Ubo conversion.\n *\n * Used ONLY for Adg -> Ubo conversion\n * because Ubo redirect rules must contain content type, but Adg and Abp must not.\n *\n * Also source type can not be added automatically because of such valid rules:\n * ! Abp:\n * $rewrite=abp-resource:blank-js,xmlhttprequest\n * ! Adg:\n * $script,redirect=noopvast-2.0\n * $xmlhttprequest,redirect=noopvast-2.0\n *\n * @param {string} rule\n * @returns {boolean}\n */\nconst hasValidContentType = (rule) => {\n if (isRedirectRuleByType(rule, 'ADG')) {\n const ruleModifiers = parseModifiers(rule);\n const sourceType = ruleModifiers\n .find((el) => VALID_SOURCE_TYPES.indexOf(el) > -1);\n\n return sourceType !== undefined;\n }\n return false;\n};\n\nconst validator = {\n UBO_SCRIPTLET_MASK_REG,\n ABP_SCRIPTLET_MASK,\n ABP_SCRIPTLET_EXCEPTION_MASK,\n isComment,\n isAdgScriptletRule,\n isUboScriptletRule,\n isAbpSnippetRule,\n getScriptletByName,\n isValidScriptletName,\n REDIRECT_RULE_TYPES,\n isAdgRedirectRule,\n isValidAdgRedirectRule,\n isAdgRedirectCompatibleWithUbo,\n isUboRedirectCompatibleWithAdg,\n isAbpRedirectCompatibleWithAdg,\n parseModifiers,\n getRedirectName,\n hasValidContentType,\n};\n\nexport default validator;\n","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}\n\nmodule.exports = _toArray;","import {\n getBeforeRegExp,\n substringAfter,\n substringBefore,\n wrapInSingleQuotes,\n getStringInBraces,\n} from './string-utils';\n\nimport validator from './validator';\n\nimport { parseRule } from './parse-rule';\n\nimport * as scriptletList from '../scriptlets/scriptletsList';\n\n/**\n * AdGuard scriptlet rule\n */\nconst ADGUARD_SCRIPTLET_MASK_REG = /#@?%#\\/\\/scriptlet\\(.+\\)/;\n// eslint-disable-next-line no-template-curly-in-string\nconst ADGUARD_SCRIPTLET_TEMPLATE = '${domains}#%#//scriptlet(${args})';\n// eslint-disable-next-line no-template-curly-in-string\nconst ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE = '${domains}#@%#//scriptlet(${args})';\n\n/**\n * uBlock scriptlet rule mask\n */\n// eslint-disable-next-line no-template-curly-in-string\nconst UBO_SCRIPTLET_TEMPLATE = '${domains}##+js(${args})';\n// eslint-disable-next-line no-template-curly-in-string\nconst UBO_SCRIPTLET_EXCEPTION_TEMPLATE = '${domains}#@#+js(${args})';\n\nconst UBO_ALIAS_NAME_MARKER = 'ubo-';\n\n// https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#xhr\nconst UBO_XHR_TYPE = 'xhr';\n\nconst ADG_XHR_TYPE = 'xmlhttprequest';\n\n/**\n * Returns array of strings separated by space which not in quotes\n * @param {string} str\n */\nconst getSentences = (str) => {\n const reg = /'.*?'|\".*?\"|\\S+/g;\n return str.match(reg);\n};\n\n/**\n * Replaces string with data by placeholders\n * @param {string} str\n * @param {Object} data - where keys are placeholders names\n */\nconst replacePlaceholders = (str, data) => {\n return Object.keys(data).reduce((acc, key) => {\n const reg = new RegExp(`\\\\$\\\\{${key}\\\\}`, 'g');\n acc = acc.replace(reg, data[key]);\n return acc;\n }, str);\n};\n\n/**\n * Converts string of UBO scriptlet rule to AdGuard scritlet rule\n * @param {string} rule - UBO scriptlet rule\n * @returns {Array} - array with one AdGuard scriptlet rule\n */\nexport const convertUboScriptletToAdg = (rule) => {\n const domains = getBeforeRegExp(rule, validator.UBO_SCRIPTLET_MASK_REG);\n const mask = rule.match(validator.UBO_SCRIPTLET_MASK_REG)[0];\n let template;\n if (mask.indexOf('@') > -1) {\n template = ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE;\n } else {\n template = ADGUARD_SCRIPTLET_TEMPLATE;\n }\n const args = getStringInBraces(rule)\n .split(/, /g)\n .map((arg, index) => {\n let outputArg;\n if (index === 0) {\n outputArg = (arg.indexOf('.js') > -1) ? `ubo-${arg}` : `ubo-${arg}.js`;\n } else {\n outputArg = arg;\n }\n // for example: dramaserial.xyz##+js(abort-current-inline-script, $, popup)\n if (arg === '$') {\n outputArg = '$$';\n }\n return outputArg;\n })\n .map((arg) => wrapInSingleQuotes(arg))\n .join(', ');\n const adgRule = replacePlaceholders(\n template,\n { domains, args },\n );\n return [adgRule];\n};\n\n/**\n * Convert string of ABP snippet rule to AdGuard scritlet rule\n * @param {string} rule - ABP snippet rule\n * @returns {Array} - array of AdGuard scriptlet rules -\n * one or few items depends on Abp-rule\n */\nexport const convertAbpSnippetToAdg = (rule) => {\n const SEMICOLON_DIVIDER = /;(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/g;\n const mask = rule.indexOf(validator.ABP_SCRIPTLET_MASK) > -1\n ? validator.ABP_SCRIPTLET_MASK\n : validator.ABP_SCRIPTLET_EXCEPTION_MASK;\n const template = mask === validator.ABP_SCRIPTLET_MASK\n ? ADGUARD_SCRIPTLET_TEMPLATE\n : ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE;\n const domains = substringBefore(rule, mask);\n const args = substringAfter(rule, mask);\n\n return args.split(SEMICOLON_DIVIDER)\n .map((args) => getSentences(args)\n .filter((arg) => arg)\n .map((arg, index) => (index === 0 ? `abp-${arg}` : arg))\n .map((arg) => wrapInSingleQuotes(arg))\n .join(', '))\n .map((args) => replacePlaceholders(template, { domains, args }));\n};\n\n/**\n * Converts scriptlet rule to AdGuard one\n * @param {string} rule\n * @returns {Array} - array of AdGuard scriptlet rules -\n * one item for Adg and Ubo or few items for Abp\n */\nexport const convertScriptletToAdg = (rule) => {\n let result;\n if (validator.isUboScriptletRule(rule)) {\n result = convertUboScriptletToAdg(rule);\n } else if (validator.isAbpSnippetRule(rule)) {\n result = convertAbpSnippetToAdg(rule);\n } else if (validator.isAdgScriptletRule(rule) || (validator.isComment(rule))) {\n result = [rule];\n }\n\n return result;\n};\n\n/**\n * Converts UBO scriptlet rule to AdGuard one\n * @param {string} rule - AdGuard scriptlet rule\n * @returns {string} - UBO scriptlet rule\n */\nexport const convertAdgScriptletToUbo = (rule) => {\n let res;\n\n if (validator.isAdgScriptletRule(rule)) {\n const { name: parsedName, args: parsedParams } = parseRule(rule);\n\n // object of name and aliases for the Adg-scriptlet\n const adgScriptletObject = Object\n .keys(scriptletList)\n .map((el) => scriptletList[el])\n .map((s) => {\n const [name, ...aliases] = s.names;\n return { name, aliases };\n })\n .find((el) => (el.name === parsedName\n || el.aliases.indexOf(parsedName) >= 0));\n\n const { aliases } = adgScriptletObject;\n\n if (aliases.length > 0) {\n const uboAlias = adgScriptletObject.aliases\n // eslint-disable-next-line no-restricted-properties\n .find((alias) => alias.includes(UBO_ALIAS_NAME_MARKER));\n\n if (uboAlias) {\n const mask = rule.match(ADGUARD_SCRIPTLET_MASK_REG)[0];\n let template;\n if (mask.indexOf('@') > -1) {\n template = UBO_SCRIPTLET_EXCEPTION_TEMPLATE;\n } else {\n template = UBO_SCRIPTLET_TEMPLATE;\n }\n const domains = getBeforeRegExp(rule, ADGUARD_SCRIPTLET_MASK_REG);\n const uboName = uboAlias\n .replace(UBO_ALIAS_NAME_MARKER, '')\n // '.js' in the Ubo scriptlet name can be omitted\n // https://github.com/gorhill/uBlock/wiki/Resources-Library#general-purpose-scriptlets\n .replace('.js', '');\n\n const args = (parsedParams.length > 0) ? `${uboName}, ${parsedParams.join(', ')}` : uboName;\n\n const uboRule = replacePlaceholders(\n template,\n { domains, args },\n );\n\n res = uboRule;\n }\n }\n }\n\n return res;\n};\n\n/**\n * Validates any scriptlet rule\n * @param {string} input - can be Adguard or Ubo or Abp scriptlet rule\n */\nexport const isValidScriptletRule = (input) => {\n if (!input) {\n return false;\n }\n // ABP 'input' rule may contain more than one snippet\n const rulesArray = convertScriptletToAdg(input);\n\n // checking if each of parsed scriptlets is valid\n // if at least one of them is not valid - whole 'input' rule is not valid too\n const isValid = rulesArray.reduce((acc, rule) => {\n const parsedRule = parseRule(rule);\n return validator.isValidScriptletName(parsedRule.name) && acc;\n }, true);\n\n return isValid;\n};\n\n/**\n * Converts Ubo redirect rule to Adg one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertUboRedirectToAdg = (rule) => {\n const firstPartOfRule = substringBefore(rule, '$');\n const uboModifiers = validator.parseModifiers(rule);\n const adgModifiers = uboModifiers\n .map((el) => {\n if (el.indexOf(validator.REDIRECT_RULE_TYPES.UBO.marker) > -1) {\n const uboName = substringAfter(el, validator.REDIRECT_RULE_TYPES.UBO.marker);\n const adgName = validator.REDIRECT_RULE_TYPES.UBO.compatibility[uboName];\n return `${validator.REDIRECT_RULE_TYPES.ADG.marker}${adgName}`;\n }\n if (el === UBO_XHR_TYPE) {\n return ADG_XHR_TYPE;\n }\n return el;\n })\n .join(',');\n\n return `${firstPartOfRule}$${adgModifiers}`;\n};\n\n/**\n * Converts Abp redirect rule to Adg one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertAbpRedirectToAdg = (rule) => {\n const firstPartOfRule = substringBefore(rule, '$');\n const abpModifiers = validator.parseModifiers(rule);\n const adgModifiers = abpModifiers\n .map((el) => {\n if (el.indexOf(validator.REDIRECT_RULE_TYPES.ABP.marker) > -1) {\n const abpName = substringAfter(el, validator.REDIRECT_RULE_TYPES.ABP.marker);\n const adgName = validator.REDIRECT_RULE_TYPES.ABP.compatibility[abpName];\n return `${validator.REDIRECT_RULE_TYPES.ADG.marker}${adgName}`;\n }\n return el;\n })\n .join(',');\n\n return `${firstPartOfRule}$${adgModifiers}`;\n};\n\n/**\n * Converts redirect rule to AdGuard one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertRedirectToAdg = (rule) => {\n let result;\n if (validator.isUboRedirectCompatibleWithAdg(rule)) {\n result = convertUboRedirectToAdg(rule);\n } else if (validator.isAbpRedirectCompatibleWithAdg(rule)) {\n result = convertAbpRedirectToAdg(rule);\n } else if (validator.isValidAdgRedirectRule(rule)) {\n result = rule;\n }\n\n return result;\n};\n\n/**\n * Converts Adg redirect rule to Ubo one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertAdgRedirectToUbo = (rule) => {\n if (!validator.hasValidContentType(rule)) {\n throw new Error(`Rule is not valid for converting to Ubo. Source type is not specified in the rule: ${rule}`);\n } else {\n const firstPartOfRule = substringBefore(rule, '$');\n const uboModifiers = validator.parseModifiers(rule);\n const adgModifiers = uboModifiers\n .map((el) => {\n if (el.indexOf(validator.REDIRECT_RULE_TYPES.ADG.marker) > -1) {\n const adgName = substringAfter(el, validator.REDIRECT_RULE_TYPES.ADG.marker);\n const uboName = validator.REDIRECT_RULE_TYPES.ADG.compatibility[adgName];\n return `${validator.REDIRECT_RULE_TYPES.UBO.marker}${uboName}`;\n }\n return el;\n })\n .join(',');\n\n return `${firstPartOfRule}$${adgModifiers}`;\n }\n};\n","import {\n hit, noopFunc, noopNull, noopArray,\n} from '../helpers';\n\n/**\n * @redirect google-analytics\n *\n * @description\n * Mocks Google Analytics API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/google-analytics_analytics.js\n *\n * **Example**\n * ```\n * ||google-analytics.com/analytics.js$script,redirect=google-analytics\n * ```\n */\nexport function GoogleAnalytics(source) {\n // eslint-disable-next-line func-names\n const Tracker = function () { }; // constructor\n const proto = Tracker.prototype;\n proto.get = noopFunc;\n proto.set = noopFunc;\n proto.send = noopFunc;\n\n const googleAnalyticsName = window.GoogleAnalyticsObject || 'ga';\n // a -- fake arg for 'ga.length < 1' antiadblock checking\n // eslint-disable-next-line no-unused-vars\n function ga(a) {\n const len = arguments.length;\n if (len === 0) {\n return;\n }\n // eslint-disable-next-line prefer-rest-params\n const lastArg = arguments[len - 1];\n if (typeof lastArg !== 'object'\n || lastArg === null\n || typeof lastArg.hitCallback !== 'function'\n ) {\n return;\n }\n\n try {\n lastArg.hitCallback();\n // eslint-disable-next-line no-empty\n } catch (ex) { }\n }\n\n ga.create = () => new Tracker();\n ga.getByName = noopNull;\n ga.getAll = noopArray;\n ga.remove = noopFunc;\n ga.loaded = true;\n window[googleAnalyticsName] = ga;\n\n const { dataLayer } = window;\n if (dataLayer instanceof Object\n && dataLayer.hide instanceof Object\n && typeof dataLayer.hide.end === 'function'\n ) {\n dataLayer.hide.end();\n }\n\n hit(source);\n}\n\nGoogleAnalytics.names = [\n 'google-analytics',\n 'ubo-google-analytics_analytics.js',\n 'google-analytics_analytics.js',\n];\n\nGoogleAnalytics.injections = [\n hit,\n noopFunc,\n noopNull,\n noopArray,\n];\n","/* eslint-disable no-underscore-dangle */\nimport { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect google-analytics-ga\n *\n * @description\n * Mocks old Google Analytics API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/google-analytics_ga.js\n *\n * **Example**\n * ```\n * ||google-analytics.com/ga.js$script,redirect=google-analytics-ga\n * ```\n */\nexport function GoogleAnalyticsGa(source) {\n // Gaq constructor\n function Gaq() { }\n\n Gaq.prototype.Na = noopFunc;\n Gaq.prototype.O = noopFunc;\n Gaq.prototype.Sa = noopFunc;\n Gaq.prototype.Ta = noopFunc;\n Gaq.prototype.Va = noopFunc;\n Gaq.prototype._createAsyncTracker = noopFunc;\n Gaq.prototype._getAsyncTracker = noopFunc;\n Gaq.prototype._getPlugin = noopFunc;\n Gaq.prototype.push = (data) => {\n if (typeof data === 'function') {\n data();\n return;\n }\n if (Array.isArray(data) === false) {\n return;\n }\n // https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiDomainDirectory#_gat.GA_Tracker_._link\n if (data[0] === '_link' && typeof data[1] === 'string') {\n window.location.assign(data[1]);\n }\n // https://github.com/gorhill/uBlock/issues/2162\n if (data[0] === '_set' && data[1] === 'hitCallback' && typeof data[2] === 'function') {\n data[2]();\n }\n };\n\n const gaq = new Gaq();\n const asyncTrackers = window._gaq || [];\n if (Array.isArray(asyncTrackers)) {\n while (asyncTrackers[0]) {\n gaq.push(asyncTrackers.shift());\n }\n }\n // eslint-disable-next-line no-multi-assign\n window._gaq = gaq.qf = gaq;\n\n // Gat constructor\n function Gat() { }\n\n // Mock tracker api\n const api = [\n '_addIgnoredOrganic', '_addIgnoredRef', '_addItem', '_addOrganic',\n '_addTrans', '_clearIgnoredOrganic', '_clearIgnoredRef', '_clearOrganic',\n '_cookiePathCopy', '_deleteCustomVar', '_getName', '_setAccount',\n '_getAccount', '_getClientInfo', '_getDetectFlash', '_getDetectTitle',\n '_getLinkerUrl', '_getLocalGifPath', '_getServiceMode', '_getVersion',\n '_getVisitorCustomVar', '_initData', '_link', '_linkByPost',\n '_setAllowAnchor', '_setAllowHash', '_setAllowLinker', '_setCampContentKey',\n '_setCampMediumKey', '_setCampNameKey', '_setCampNOKey', '_setCampSourceKey',\n '_setCampTermKey', '_setCampaignCookieTimeout', '_setCampaignTrack', '_setClientInfo',\n '_setCookiePath', '_setCookiePersistence', '_setCookieTimeout', '_setCustomVar',\n '_setDetectFlash', '_setDetectTitle', '_setDomainName', '_setLocalGifPath',\n '_setLocalRemoteServerMode', '_setLocalServerMode', '_setReferrerOverride', '_setRemoteServerMode',\n '_setSampleRate', '_setSessionTimeout', '_setSiteSpeedSampleRate', '_setSessionCookieTimeout',\n '_setVar', '_setVisitorCookieTimeout', '_trackEvent', '_trackPageLoadTime',\n '_trackPageview', '_trackSocial', '_trackTiming', '_trackTrans',\n '_visitCode',\n ];\n const tracker = api.reduce((res, funcName) => {\n res[funcName] = noopFunc;\n return res;\n }, {});\n tracker._getLinkerUrl = (a) => a;\n\n Gat.prototype._anonymizeIP = noopFunc;\n Gat.prototype._createTracker = noopFunc;\n Gat.prototype._forceSSL = noopFunc;\n Gat.prototype._getPlugin = noopFunc;\n Gat.prototype._getTracker = () => tracker;\n Gat.prototype._getTrackerByName = () => tracker;\n Gat.prototype._getTrackers = noopFunc;\n Gat.prototype.aa = noopFunc;\n Gat.prototype.ab = noopFunc;\n Gat.prototype.hb = noopFunc;\n Gat.prototype.la = noopFunc;\n Gat.prototype.oa = noopFunc;\n Gat.prototype.pa = noopFunc;\n Gat.prototype.u = noopFunc;\n\n const gat = new Gat();\n window._gat = gat;\n\n hit(source);\n}\n\nGoogleAnalyticsGa.names = [\n 'google-analytics-ga',\n 'ubo-google-analytics_ga.js',\n 'google-analytics_ga.js',\n];\n\nGoogleAnalyticsGa.injections = [hit, noopFunc];\n","import { hit } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @redirect googlesyndication-adsbygoogle\n *\n * @description\n * Mocks Google AdSense API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/googlesyndication_adsbygoogle.js\n *\n * **Example**\n * ```\n * ||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=googlesyndication-adsbygoogle\n * ```\n */\n/* eslint-enable max-len */\nexport function GoogleSyndicationAdsByGoogle(source) {\n window.adsbygoogle = {\n length: 0,\n loaded: true,\n push() {\n this.length += 1;\n },\n };\n const adElems = document.querySelectorAll('.adsbygoogle');\n const css = 'height:1px!important;max-height:1px!important;max-width:1px!important;width:1px!important;';\n const statusAttrName = 'data-adsbygoogle-status';\n const ASWIFT_IFRAME_MARKER = 'aswift_';\n const GOOGLE_ADS_IFRAME_MARKER = 'google_ads_iframe_';\n\n let executed = false;\n for (let i = 0; i < adElems.length; i += 1) {\n const adElemChildNodes = adElems[i].childNodes;\n const childNodesQuantity = adElemChildNodes.length;\n // childNodes of .adsbygoogle can be defined if scriptlet was executed before\n // so we should check are that childNodes exactly defined by us\n // TODO: remake after scriptlets context developing in 1.3\n let areIframesDefined = false;\n if (childNodesQuantity > 0) {\n // it should be only 2 child iframes if scriptlet was executed\n areIframesDefined = childNodesQuantity === 2\n // the first of child nodes should be aswift iframe\n && adElemChildNodes[0].tagName.toLowerCase() === 'iframe'\n && adElemChildNodes[0].id.indexOf(ASWIFT_IFRAME_MARKER) > -1\n // the second of child nodes should be google_ads iframe\n && adElemChildNodes[1].tagName.toLowerCase() === 'iframe'\n && adElemChildNodes[1].id.indexOf(GOOGLE_ADS_IFRAME_MARKER) > -1;\n }\n\n if (!areIframesDefined) {\n // here we do the job if scriptlet has not been executed earlier\n adElems[i].setAttribute(statusAttrName, 'done');\n\n const aswiftIframe = document.createElement('iframe');\n aswiftIframe.id = `${ASWIFT_IFRAME_MARKER}${i + 1}`;\n aswiftIframe.style = css;\n adElems[i].appendChild(aswiftIframe);\n const innerAswiftIframe = document.createElement('iframe');\n aswiftIframe.contentWindow.document.body.appendChild(innerAswiftIframe);\n\n const googleadsIframe = document.createElement('iframe');\n googleadsIframe.id = `${GOOGLE_ADS_IFRAME_MARKER}${i + 1}`;\n googleadsIframe.style = css;\n adElems[i].appendChild(googleadsIframe);\n const innerGoogleadsIframe = document.createElement('iframe');\n googleadsIframe.contentWindow.document.body.appendChild(innerGoogleadsIframe);\n\n executed = true;\n }\n }\n\n if (executed) {\n hit(source);\n }\n}\n\nGoogleSyndicationAdsByGoogle.names = [\n 'googlesyndication-adsbygoogle',\n 'ubo-googlesyndication_adsbygoogle.js',\n 'googlesyndication_adsbygoogle.js',\n];\n\nGoogleSyndicationAdsByGoogle.injections = [\n hit,\n];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect googletagmanager-gtm\n *\n * @description\n * Mocks Google Tag Manager API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/googletagmanager_gtm.js\n *\n * **Example**\n * ```\n * ||googletagmanager.com/gtm.js$script,redirect=googletagmanager-gtm\n * ```\n */\nexport function GoogleTagManagerGtm(source) {\n window.ga = window.ga || noopFunc;\n const { dataLayer, google_optimize } = window; // eslint-disable-line camelcase\n if (dataLayer instanceof Object === false) {\n return;\n }\n\n if (dataLayer.hide instanceof Object && typeof dataLayer.hide.end === 'function') {\n dataLayer.hide.end();\n }\n\n if (typeof dataLayer.push === 'function') {\n dataLayer.push = (data) => {\n if (data instanceof Object && typeof data.eventCallback === 'function') {\n setTimeout(data.eventCallback, 1);\n }\n };\n }\n\n // https://github.com/AdguardTeam/Scriptlets/issues/81\n if (google_optimize instanceof Object && typeof google_optimize.get === 'function') { // eslint-disable-line camelcase\n const googleOptimizeWrapper = { };\n googleOptimizeWrapper.get = noopFunc;\n\n window.google_optimize = googleOptimizeWrapper;\n }\n\n hit(source);\n}\n\nGoogleTagManagerGtm.names = [\n 'googletagmanager-gtm',\n 'ubo-googletagmanager_gtm.js',\n 'googletagmanager_gtm.js',\n];\n\nGoogleTagManagerGtm.injections = [hit, noopFunc];\n","import {\n hit, noopFunc, noopThis, noopNull, noopArray, noopStr,\n} from '../helpers';\n\n/**\n * @redirect googletagservices-gpt\n *\n * @description\n * Mocks Google Publisher Tag API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/googletagservices_gpt.js\n *\n * **Example**\n * ```\n * ||googletagservices.com/tag/js/gpt.js$script,redirect=googletagservices-gpt\n * ```\n */\nexport function GoogleTagServicesGpt(source) {\n const companionAdsService = {\n addEventListener: noopThis,\n enableSyncLoading: noopFunc,\n setRefreshUnfilledSlots: noopFunc,\n };\n const contentService = {\n addEventListener: noopThis,\n setContent: noopFunc,\n };\n function PassbackSlot() { } // constructor\n\n PassbackSlot.prototype.display = noopFunc;\n PassbackSlot.prototype.get = noopNull;\n PassbackSlot.prototype.set = noopThis;\n PassbackSlot.prototype.setClickUrl = noopThis;\n PassbackSlot.prototype.setTagForChildDirectedTreatment = noopThis;\n PassbackSlot.prototype.setTargeting = noopThis;\n PassbackSlot.prototype.updateTargetingFromMap = noopThis;\n\n function SizeMappingBuilder() { } // constructor\n SizeMappingBuilder.prototype.addSize = noopThis;\n SizeMappingBuilder.prototype.build = noopNull;\n\n function Slot() { } // constructor\n Slot.prototype.addService = noopThis;\n Slot.prototype.clearCategoryExclusions = noopThis;\n Slot.prototype.clearTargeting = noopThis;\n Slot.prototype.defineSizeMapping = noopThis;\n Slot.prototype.get = noopNull;\n Slot.prototype.getAdUnitPath = noopArray;\n Slot.prototype.getAttributeKeys = noopArray;\n Slot.prototype.getCategoryExclusions = noopArray;\n Slot.prototype.getDomId = noopStr;\n Slot.prototype.getSlotElementId = noopStr;\n Slot.prototype.getSlotId = noopThis;\n Slot.prototype.getTargeting = noopArray;\n Slot.prototype.getTargetingKeys = noopArray;\n Slot.prototype.set = noopThis;\n Slot.prototype.setCategoryExclusion = noopThis;\n Slot.prototype.setClickUrl = noopThis;\n Slot.prototype.setCollapseEmptyDiv = noopThis;\n Slot.prototype.setTargeting = noopThis;\n\n const pubAdsService = {\n addEventListener: noopThis,\n clear: noopFunc,\n clearCategoryExclusions: noopThis,\n clearTagForChildDirectedTreatment: noopThis,\n clearTargeting: noopThis,\n collapseEmptyDivs: noopFunc,\n defineOutOfPagePassback() { return new PassbackSlot(); },\n definePassback() { return new PassbackSlot(); },\n disableInitialLoad: noopFunc,\n display: noopFunc,\n enableAsyncRendering: noopFunc,\n enableSingleRequest: noopFunc,\n enableSyncRendering: noopFunc,\n enableVideoAds: noopFunc,\n get: noopNull,\n getAttributeKeys: noopArray,\n getTargeting: noopFunc,\n getTargetingKeys: noopArray,\n getSlots: noopArray,\n refresh: noopFunc,\n set: noopThis,\n setCategoryExclusion: noopThis,\n setCentering: noopFunc,\n setCookieOptions: noopThis,\n setForceSafeFrame: noopThis,\n setLocation: noopThis,\n setPublisherProvidedId: noopThis,\n setRequestNonPersonalizedAds: noopThis,\n setSafeFrameConfig: noopThis,\n setTagForChildDirectedTreatment: noopThis,\n setTargeting: noopThis,\n setVideoContent: noopThis,\n updateCorrelator: noopFunc,\n };\n\n const { googletag = {} } = window;\n const { cmd = [] } = googletag;\n\n googletag.apiReady = true;\n googletag.cmd = [];\n googletag.cmd.push = (a) => {\n try {\n a();\n // eslint-disable-next-line no-empty\n } catch (ex) { }\n return 1;\n };\n googletag.companionAds = () => companionAdsService;\n googletag.content = () => contentService;\n googletag.defineOutOfPageSlot = () => new Slot();\n googletag.defineSlot = () => new Slot();\n googletag.destroySlots = noopFunc;\n googletag.disablePublisherConsole = noopFunc;\n googletag.display = noopFunc;\n googletag.enableServices = noopFunc;\n googletag.getVersion = noopStr;\n googletag.pubads = () => pubAdsService;\n googletag.pubadsReady = true;\n googletag.setAdIframeTitle = noopFunc;\n googletag.sizeMapping = () => new SizeMappingBuilder();\n\n window.googletag = googletag;\n while (cmd.length !== 0) {\n googletag.cmd.push(cmd.shift());\n }\n\n hit(source);\n}\n\nGoogleTagServicesGpt.names = [\n 'googletagservices-gpt',\n 'ubo-googletagservices_gpt.js',\n 'googletagservices_gpt.js',\n];\n\nGoogleTagServicesGpt.injections = [\n hit,\n noopFunc,\n noopThis,\n noopNull,\n noopArray,\n noopStr,\n];\n","import { hit } from '../helpers';\n\n/**\n * @redirect scorecardresearch-beacon\n *\n * @description\n * Mocks Scorecard Research API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/scorecardresearch_beacon.js\n *\n * **Example**\n * ```\n * ||sb.scorecardresearch.com/beacon.js$script,redirect=scorecardresearch-beacon\n * ```\n */\nexport function ScoreCardResearchBeacon(source) {\n window.COMSCORE = {\n purge() {\n // eslint-disable-next-line no-underscore-dangle\n window._comscore = [];\n },\n beacon() {},\n };\n hit(source);\n}\n\nScoreCardResearchBeacon.names = [\n 'scorecardresearch-beacon',\n 'ubo-scorecardresearch_beacon.js',\n 'scorecardresearch_beacon.js',\n];\n\nScoreCardResearchBeacon.injections = [\n hit,\n];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect metrika-yandex-tag\n *\n * @description\n * Mocks Yandex Metrika API.\n * https://yandex.ru/support/metrica/objects/method-reference.html\n *\n * **Example**\n * ```\n * ||mc.yandex.ru/metrika/tag.js$script,redirect=metrika-yandex-tag\n * ```\n */\nexport function metrikaYandexTag(source) {\n const asyncCallbackFromOptions = (param, options = {}) => {\n let { callback } = options;\n const { ctx } = options;\n if (typeof callback === 'function') {\n callback = ctx !== undefined ? callback.bind(ctx) : callback;\n setTimeout(() => callback());\n }\n };\n\n const init = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/addfileextension.html\n */\n const addFileExtension = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/extlink.html\n */\n const extLink = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/file.html\n */\n const file = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/get-client-id.html\n * @param {Function} cb\n */\n const getClientID = (cb) => {\n setTimeout(cb(null));\n };\n\n /**\n * https://yandex.ru/support/metrica/objects/hit.html\n */\n const hitFunc = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/notbounce.html\n */\n const notBounce = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/params-method.html\n */\n const params = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/reachgoal.html\n * @param {string} target\n * @param {Object} params\n * @param {Function} callback\n * @param {any} ctx\n */\n const reachGoal = (target, params, callback, ctx) => {\n asyncCallbackFromOptions(null, { callback, ctx });\n };\n\n /**\n * https://yandex.ru/support/metrica/objects/set-user-id.html\n */\n const setUserID = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/user-params.html\n */\n const userParams = noopFunc;\n\n const api = {\n init,\n addFileExtension,\n extLink,\n file,\n getClientID,\n hit: hitFunc,\n notBounce,\n params,\n reachGoal,\n setUserID,\n userParams,\n };\n\n function ym(id, funcName, ...args) {\n return api[funcName] && api[funcName](...args);\n }\n\n window.ym = ym;\n\n hit(source);\n}\n\nmetrikaYandexTag.names = [\n 'metrika-yandex-tag',\n];\n\nmetrikaYandexTag.injections = [hit, noopFunc];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect metrika-yandex-watch\n *\n * @description\n * Mocks the old Yandex Metrika API.\n * https://yandex.ru/support/metrica/objects/_method-reference.html\n *\n * **Example**\n * ```\n * ||mc.yandex.ru/metrika/watch.js$script,redirect=metrika-yandex-watch\n * ```\n */\nexport function metrikaYandexWatch(source) {\n const cbName = 'yandex_metrika_callbacks';\n\n /**\n * Gets callback and its context from options and call it in async way\n * @param {Object} options Yandex Metrika API options\n */\n const asyncCallbackFromOptions = (options = {}) => {\n let { callback } = options;\n const { ctx } = options;\n if (typeof callback === 'function') {\n callback = ctx !== undefined ? callback.bind(ctx) : callback;\n setTimeout(() => callback());\n }\n };\n\n function Metrika() { } // constructor\n\n // Methods without options\n Metrika.prototype.addFileExtension = noopFunc;\n Metrika.prototype.getClientID = noopFunc;\n Metrika.prototype.setUserID = noopFunc;\n Metrika.prototype.userParams = noopFunc;\n\n // Methods with options\n // The order of arguments should be kept in according to API\n Metrika.prototype.extLink = (url, options) => {\n asyncCallbackFromOptions(options);\n };\n Metrika.prototype.file = (url, options) => {\n asyncCallbackFromOptions(options);\n };\n Metrika.prototype.hit = (url, options) => {\n asyncCallbackFromOptions(options);\n };\n Metrika.prototype.reachGoal = (target, params, cb, ctx) => {\n asyncCallbackFromOptions({ callback: cb, ctx });\n };\n Metrika.prototype.notBounce = asyncCallbackFromOptions;\n\n if (window.Ya) {\n window.Ya.Metrika = Metrika;\n } else {\n window.Ya = { Metrika };\n }\n\n if (window[cbName] && Array.isArray(window[cbName])) {\n window[cbName].forEach((func) => {\n if (typeof func === 'function') {\n func();\n }\n });\n }\n\n hit(source);\n}\n\nmetrikaYandexWatch.names = [\n 'metrika-yandex-watch',\n];\n\nmetrikaYandexWatch.injections = [hit, noopFunc];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect amazon-apstag\n *\n * @description\n * Mocks Amazon's apstag.js\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/f842ab6d3c1cf0394f95d27092bf59627262da40/src/web_accessible_resources/amazon_apstag.js\n *\n * **Example**\n * ```\n * ||amazon-adsystem.com/aax2/apstag.js$script,redirect=amazon-apstag\n * ```\n */\nexport function AmazonApstag(source) {\n const apstagWrapper = {\n fetchBids(a, b) {\n if (typeof b === 'function') {\n b([]);\n }\n },\n init: noopFunc,\n setDisplayBids: noopFunc,\n targetingKeys: noopFunc,\n };\n\n window.apstag = apstagWrapper;\n\n hit(source);\n}\n\nAmazonApstag.names = [\n 'amazon-apstag',\n 'ubo-amazon_apstag.js',\n 'amazon_apstag.js',\n];\n\nAmazonApstag.injections = [hit, noopFunc];\n","import {\n attachDependencies,\n addCall,\n wrapInNonameFunc,\n passSourceAndProps,\n} from '../helpers/injector';\n\nimport validator from '../helpers/validator';\n\nimport {\n convertUboRedirectToAdg,\n convertAbpRedirectToAdg,\n convertRedirectToAdg,\n convertAdgRedirectToUbo,\n} from '../helpers/converter';\n\nimport * as redirectsList from './redirectsList';\n\n/**\n * Finds redirect resource by it's name\n * @param {string} name - redirect name\n */\nconst getRedirectByName = (name) => {\n const redirects = Object.keys(redirectsList).map((key) => redirectsList[key]);\n return redirects.find((r) => r.names && r.names.indexOf(name) > -1);\n};\n\n/**\n * @typedef {Object} Source - redirect properties\n * @property {string} name redirect name\n * @property {Array} args Arguments for redirect function\n * @property {'extension'|'test'} [engine] -\n * Defines the final form of redirect string presentation\n * @property {boolean} [verbose] flag to enable printing to console debug information\n */\n\n/**\n * Returns redirect code by param\n * @param {Source} source\n * @returns {string} redirect code\n */\nconst getRedirectCode = (source) => {\n const redirect = getRedirectByName(source.name);\n let result = attachDependencies(redirect);\n result = addCall(redirect, result);\n\n // redirect code for different sources is checked in tests\n // so it should be just a code without any source and props passed\n result = source.engine === 'test'\n ? wrapInNonameFunc(result)\n : passSourceAndProps(source, result);\n\n return result;\n};\n\nexport const redirectsCjs = {\n getCode: getRedirectCode,\n isAdgRedirectRule: validator.isAdgRedirectRule,\n isValidAdgRedirectRule: validator.isValidAdgRedirectRule,\n isAdgRedirectCompatibleWithUbo: validator.isAdgRedirectCompatibleWithUbo,\n isUboRedirectCompatibleWithAdg: validator.isUboRedirectCompatibleWithAdg,\n isAbpRedirectCompatibleWithAdg: validator.isAbpRedirectCompatibleWithAdg,\n convertUboRedirectToAdg,\n convertAbpRedirectToAdg,\n convertRedirectToAdg,\n convertAdgRedirectToUbo,\n};\n","import { redirectsCjs } from '../redirects';\n\nimport {\n attachDependencies,\n addCall,\n passSourceAndProps,\n wrapInNonameFunc,\n} from '../helpers/injector';\n\nimport validator from '../helpers/validator';\n\nimport {\n isValidScriptletRule,\n convertUboScriptletToAdg,\n convertAbpSnippetToAdg,\n convertScriptletToAdg,\n convertAdgScriptletToUbo,\n} from '../helpers/converter';\n\n/**\n * @typedef {Object} Source - scriptlet properties\n * @property {string} name Scriptlet name\n * @property {Array} args Arguments for scriptlet function\n * @property {'extension'|'corelibs'|'test'} engine -\n * Defines the final form of scriptlet string presentation\n * @property {string} [version]\n * @property {boolean} [verbose] flag to enable printing to console debug information\n * @property {string} [ruleText] Source rule text is used for debugging purposes\n * @property {string} [domainName] domain name where scriptlet is applied; for debugging purposes\n */\n\n/**\n * Returns scriptlet code by param\n * @param {Source} source\n * @returns {string} scriptlet code\n */\nfunction getScriptletCode(source) {\n if (!validator.isValidScriptletName(source.name)) {\n return null;\n }\n\n const scriptlet = validator.getScriptletByName(source.name);\n let result = attachDependencies(scriptlet);\n result = addCall(scriptlet, result);\n result = source.engine === 'corelibs' || source.engine === 'test'\n ? wrapInNonameFunc(result)\n : passSourceAndProps(source, result);\n return result;\n}\n\n/**\n * Scriptlets variable\n *\n * @returns {Object} object with methods:\n * `invoke` method receives one argument with `Source` type\n * `validate` method receives one argument with `String` type\n */\nconst scriptletsObject = (() => ({\n invoke: getScriptletCode,\n isValidScriptletName: validator.isValidScriptletName,\n isValidScriptletRule,\n isAdgScriptletRule: validator.isAdgScriptletRule,\n isUboScriptletRule: validator.isUboScriptletRule,\n isAbpSnippetRule: validator.isAbpSnippetRule,\n convertUboToAdg: convertUboScriptletToAdg,\n convertAbpToAdg: convertAbpSnippetToAdg,\n convertScriptletToAdg,\n convertAdgToUbo: convertAdgScriptletToUbo,\n redirects: redirectsCjs,\n}))();\n\nexport default scriptletsObject;\n","import scriptletsObject from './index';\n\n/**\n * Add module exports to be used as node package\n */\nmodule.exports = scriptletsObject;\n"],"names":["randomId","Math","random","toString","substr","setPropertyAccess","object","property","descriptor","currentDescriptor","Object","getOwnPropertyDescriptor","configurable","defineProperty","getPropertyInChain","base","chain","pos","indexOf","prop","slice","nextBase","undefined","getWildcardPropertyInChain","lookThrough","output","keys","forEach","key","push","shouldLookThrough","nextProp","baseKeys","item","escapeRegExp","str","replace","toRegExp","length","RegExp","escaped","getBeforeRegExp","rx","index","search","substring","startsWith","prefix","endsWith","substringAfter","separator","substringBefore","wrapInSingleQuotes","getStringInBraces","firstIndex","lastIndex","lastIndexOf","createOnErrorHandler","rid","nativeOnError","window","onerror","onError","error","Function","args","apply","noopFunc","noopNull","trueFunc","falseFunc","noopThis","noopArray","noopStr","hit","source","message","verbose","log","console","bind","trace","ruleText","domainName","AG_SCRIPTLET_MARKER","UBO_SCRIPTLET_MARKER","ruleStartIndex","rulePart","LOG_MARKER","e","__debug","observeDOMChanges","callback","observeAttrs","attrsToObserv","throttle","method","delay","wait","savedArgs","wrapper","setTimeout","THROTTLE_DELAY_MS","observer","MutationObserver","callbackWrapper","connect","observe","document","documentElement","childList","subtree","attributes","attributeFilter","disconnect","matchStackTrace","stackRegexp","stackTrace","refinedStackTrace","split","map","line","trim","join","test","flatten","input","stack","el","res","next","pop","Array","isArray","reverse","attachDependencies","scriptlet","injections","reduce","accum","dep","dependencies","name","addCall","code","passSourceAndProps","sourceString","JSON","stringify","argsString","params","wrapInNonameFunc","_arrayWithHoles","arr","_iterableToArrayLimit","i","Symbol","iterator","_arr","_n","_d","_e","_i","_s","done","value","err","_arrayLikeToArray","len","arr2","_unsupportedIterableToArray","o","minLen","arrayLikeToArray","n","prototype","call","constructor","from","_nonIterableRest","TypeError","_slicedToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_defineProperty","obj","enumerable","writable","iterateWithTransitions","iterable","transitions","init","state","ADG_SCRIPTLET_MASK","wordSaver","strs","saveSymb","s","saveStr","getAll","parseRule","TRANSITION","OPENED","PARAM","CLOSED","opened","rule","sep","char","transition","symb","Error","param","saver","preIndex","before","abortOnPropertyRead","abort","ReferenceError","setChainPropAccess","owner","chainInfo","setter","a","get","set","names","abortOnPropertyWrite","preventSetTimeout","match","nativeTimeout","nativeIsNaN","Number","isNaN","shouldLog","INVERT_MARKER","isNotMatch","isNotDelay","parseInt","timeoutWrapper","timeout","shouldPrevent","preventSetInterval","nativeInterval","setInterval","intervalWrapper","interval","preventWindowOpen","replacement","nativeOpen","open","openWrapper","result","isProp","propertyPart","propertyName","propertyValue","resObj","abortCurrentInlineScript","searchRegexp","getCurrentScript","currentScript","scripts","getElementsByTagName","ourScript","scriptEl","content","textContent","textContentGetter","Node","HTMLScriptElement","props","propIndex","baseName","currentValue","setConstant","constantValue","parseFloat","abs","canceled","mustCancel","removeCookie","regex","removeCookieFromHost","cookieName","hostName","cookieSpec","domain1","domain2","path","expiration","cookie","rmCookie","cookieStr","hostParts","location","hostname","addEventListener","preventAddEventListener","eventSearch","funcSearch","eventSearchRegexp","funcSearchRegexp","nativeAddEventListener","EventTarget","addEventListenerWrapper","eventName","funcToCheck","preventBab","nativeSetTimeout","babRegex","signatures","check","tokens","j","token","found","nativeEval","eval","bodyEl","body","style","removeProperty","getElementById","parentNode","removeChild","nowebrtc","RTCPeerConnection","webkitRTCPeerConnection","rtcReplacement","config","close","createDataChannel","createOffer","setRemoteDescription","rtc","b","send","logAddEventListener","callbackToLog","logEval","evalWrapper","nativeFunction","FunctionWrapper","create","noeval","preventEvalIf","payload","preventFab","Fab","clearEvent","emitEvent","on","onDetected","onNotDetected","setOption","fab","getSetFab","getsetfab","hasOwnProperty","FuckAdBlock","BlockAdBlock","SniffAdBlock","fuckAdBlock","blockAdBlock","sniffAdBlock","setPopadsDummy","PopAds","popns","defineProperties","preventPopadsNet","throwError","preventAdfly","isDigit","data","handler","encodedURL","evenChars","oddChars","charAt","ii","temp","decodedURL","atob","stop","onbeforeunload","href","val","applyHandler","debugOnPropertyRead","debugOnPropertyWrite","debugCurrentInlineScript","removeAttr","attrs","selector","rmattr","nodes","querySelectorAll","removed","node","attr","removeAttribute","removeClass","classNames","selectors","className","removeClassHandler","Set","foundedNodes","add","elements","element","classList","contains","remove","CLASS_ATTR_NAME","disableNewtabLinks","ev","target","localName","hasAttribute","stopPropagation","preventDefault","adjustSetInterval","boost","nativeIsFinite","isFinite","cb","d","adjustSetTimeout","dirString","times","dir","dirWrapper","jsonPrune","propsToRemove","requiredInitialProps","prunePaths","requiredPaths","isPruningNeeded","root","shouldProcess","requiredPath","lastNestedPropName","hasWildcard","details","nativeParse","parse","parseWrapper","ownerObjArr","ownerObj","preventRequestAnimationFrame","nativeRequestAnimationFrame","requestAnimationFrame","doNotMatch","rafWrapper","logMessage","setCookie","valueToSet","pathToSet","cookieData","encodeURIComponent","hideInShadowDom","baseSelector","Element","attachShadow","findHostElements","rootElement","hosts","domElems","shadowRoot","pierceShadowDom","hostElements","targets","innerHostsAcc","collectTargets","host","simpleElems","shadowRootElem","shadowChildren","innerHosts","hideHandler","hidden","DISPLAY_NONE_CSS","targetEl","cssText","JS_RULE_MARKER","COMMENT_MARKER","isComment","UBO_SCRIPTLET_MASK_REG","UBO_SCRIPTLET_MASK_1","UBO_SCRIPTLET_MASK_2","UBO_SCRIPTLET_EXCEPTION_MASK_1","UBO_SCRIPTLET_EXCEPTION_MASK_2","ABP_SCRIPTLET_MASK","ABP_SCRIPTLET_EXCEPTION_MASK","ADG_CSS_MASK_REG","isAdgScriptletRule","isUboScriptletRule","isAbpSnippetRule","getScriptletByName","scriptlets","scriptletsList","find","isValidScriptletName","ADG_UBO_REDIRECT_MARKER","ABP_REDIRECT_MARKER","VALID_SOURCE_TYPES","validAdgRedirects","redirects","filter","adg","objFromEntries","pairs","acc","uboToAdgCompatibility","ubo","abpToAdgCompatibility","abp","adgToUboCompatibility","validAdgCompatibility","REDIRECT_RULE_TYPES","VALID_ADG","marker","compatibility","ADG","UBO","ABP","parseModifiers","getRedirectName","ruleModifiers","redirectNamePart","isAdgRedirectRule","MARKER_IN_BASE_PART_MASK","isRedirectRuleByType","type","redirectName","isValidAdgRedirectRule","isAdgRedirectCompatibleWithUbo","isUboRedirectCompatibleWithAdg","isAbpRedirectCompatibleWithAdg","hasValidContentType","sourceType","validator","_iterableToArray","iter","_toArray","iterableToArray","ADGUARD_SCRIPTLET_MASK_REG","ADGUARD_SCRIPTLET_TEMPLATE","ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE","UBO_SCRIPTLET_TEMPLATE","UBO_SCRIPTLET_EXCEPTION_TEMPLATE","UBO_ALIAS_NAME_MARKER","UBO_XHR_TYPE","ADG_XHR_TYPE","getSentences","reg","replacePlaceholders","convertUboScriptletToAdg","domains","mask","template","arg","outputArg","adgRule","convertAbpSnippetToAdg","SEMICOLON_DIVIDER","convertScriptletToAdg","convertAdgScriptletToUbo","parsedName","parsedParams","adgScriptletObject","scriptletList","aliases","uboAlias","alias","includes","uboName","uboRule","isValidScriptletRule","rulesArray","isValid","parsedRule","convertUboRedirectToAdg","firstPartOfRule","uboModifiers","adgModifiers","adgName","convertAbpRedirectToAdg","abpModifiers","abpName","convertRedirectToAdg","convertAdgRedirectToUbo","GoogleAnalytics","Tracker","proto","googleAnalyticsName","GoogleAnalyticsObject","ga","arguments","lastArg","hitCallback","ex","getByName","loaded","dataLayer","hide","end","GoogleAnalyticsGa","Gaq","Na","O","Sa","Ta","Va","_createAsyncTracker","_getAsyncTracker","_getPlugin","assign","gaq","asyncTrackers","_gaq","shift","qf","Gat","api","tracker","funcName","_getLinkerUrl","_anonymizeIP","_createTracker","_forceSSL","_getTracker","_getTrackerByName","_getTrackers","aa","ab","hb","la","oa","pa","u","gat","_gat","GoogleSyndicationAdsByGoogle","adsbygoogle","adElems","css","statusAttrName","ASWIFT_IFRAME_MARKER","GOOGLE_ADS_IFRAME_MARKER","executed","adElemChildNodes","childNodes","childNodesQuantity","areIframesDefined","tagName","toLowerCase","id","setAttribute","aswiftIframe","createElement","appendChild","innerAswiftIframe","contentWindow","googleadsIframe","innerGoogleadsIframe","GoogleTagManagerGtm","google_optimize","eventCallback","googleOptimizeWrapper","GoogleTagServicesGpt","companionAdsService","enableSyncLoading","setRefreshUnfilledSlots","contentService","setContent","PassbackSlot","display","setClickUrl","setTagForChildDirectedTreatment","setTargeting","updateTargetingFromMap","SizeMappingBuilder","addSize","build","Slot","addService","clearCategoryExclusions","clearTargeting","defineSizeMapping","getAdUnitPath","getAttributeKeys","getCategoryExclusions","getDomId","getSlotElementId","getSlotId","getTargeting","getTargetingKeys","setCategoryExclusion","setCollapseEmptyDiv","pubAdsService","clear","clearTagForChildDirectedTreatment","collapseEmptyDivs","defineOutOfPagePassback","definePassback","disableInitialLoad","enableAsyncRendering","enableSingleRequest","enableSyncRendering","enableVideoAds","getSlots","refresh","setCentering","setCookieOptions","setForceSafeFrame","setLocation","setPublisherProvidedId","setRequestNonPersonalizedAds","setSafeFrameConfig","setVideoContent","updateCorrelator","googletag","cmd","apiReady","companionAds","defineOutOfPageSlot","defineSlot","destroySlots","disablePublisherConsole","enableServices","getVersion","pubads","pubadsReady","setAdIframeTitle","sizeMapping","ScoreCardResearchBeacon","COMSCORE","purge","_comscore","beacon","metrikaYandexTag","asyncCallbackFromOptions","options","ctx","addFileExtension","extLink","file","getClientID","hitFunc","notBounce","reachGoal","setUserID","userParams","ym","metrikaYandexWatch","cbName","Metrika","url","Ya","func","AmazonApstag","apstagWrapper","fetchBids","setDisplayBids","targetingKeys","apstag","getRedirectByName","redirectsList","r","getRedirectCode","redirect","engine","redirectsCjs","getCode","getScriptletCode","scriptletsObject","invoke","convertUboToAdg","convertAbpToAdg","convertAdgToUbo","module","exports"],"mappings":"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"} \ No newline at end of file diff --git a/dist/redirects.js b/dist/redirects.js index 668827c0b..73c6f77b2 100644 --- a/dist/redirects.js +++ b/dist/redirects.js @@ -1,7 +1,7 @@ /** * AdGuard Scriptlets - * Version 1.3.4 + * Version 1.3.5 */ var Redirects = (function () { diff --git a/dist/redirects.js.map b/dist/redirects.js.map deleted file mode 100644 index e19b6ee78..000000000 --- a/dist/redirects.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"redirects.js","sources":["../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../src/redirects/redirects.js"],"sourcesContent":["function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n // base 10 (except 0) or base 60\n\n // value should not start with `_`;\n if (ch === '_') return false;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n // Should have digits and should not end with `_`\n if (!hasDigits || ch === '_') return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n octal: function (obj) { return obj >= 0 ? '0' + obj.toString(8) : '-0' + obj.toString(8).slice(1); },\n decimal: function (obj) { return obj.toString(10); },\n /* eslint-disable max-len */\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n // 20:59\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data) ||\n // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === '_') {\n return false;\n }\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) {\n // Support node 6.+ Buffer API when available\n return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result);\n }\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /* eslint-disable no-redeclare */\n /* global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n ast.body[0].expression.type !== 'FunctionExpression')) {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n ast.body[0].expression.type !== 'FunctionExpression')) {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n if (ast.body[0].expression.body.type === 'BlockStatement') {\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n }\n // ES6 arrow functions can omit the BlockStatement. In that case, just return\n // the body.\n /*eslint-disable no-new-func*/\n return new Function(params, 'return ' + source.slice(body[0], body[1]));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n /* eslint-disable indent */\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n );\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) {\n var index, quantity;\n\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys');\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]';\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]';\n }\n\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n state.line = startLine || state.line;\n state.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _pos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n _pos = state.position;\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"! [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for ! tag; it should be \"scalar\", not \"' + state.kind + '\"');\n }\n\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n var nullpos = input.indexOf('\\0');\n\n if (nullpos !== -1) {\n state.position = nullpos;\n throwError(state, 'null byte is not allowed in input');\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n var documents = loadDocuments(input, options);\n\n if (typeof iterator !== 'function') {\n return documents;\n }\n\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, iterator, options) {\n if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN = 0x0D; /* CR */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_EQUALS = 0x3D; /* = */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.noArrayIndent = options['noArrayIndent'] || false;\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n this.condenseFlow = options['condenseFlow'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// [24] b-line-feed ::= #xA /* LF */\n// [25] b-carriage-return ::= #xD /* CR */\n// [3] c-byte-order-mark ::= #xFEFF\nfunction isNsChar(c) {\n return isPrintable(c) && !isWhitespace(c)\n // byte-order-mark\n && c !== 0xFEFF\n // b-char\n && c !== CHAR_CARRIAGE_RETURN\n && c !== CHAR_LINE_FEED;\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c, prev) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n // /* An ns-char preceding */ \"#\"\n && c !== CHAR_COLON\n && ((c !== CHAR_SHARP) || (prev && isNsChar(prev)));\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_EQUALS\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n var leadingSpaceRe = /^\\n* /;\n return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char, prev_char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n plain = plain && isPlainSafe(char, prev_char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n plain = plain && isPlainSafe(char, prev_char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char, nextChar;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n // Check for surrogate pairs (reference Unicode 3.0 section \"3.7 Surrogates\").\n if (char >= 0xD800 && char <= 0xDBFF/* high surrogate */) {\n nextChar = string.charCodeAt(i + 1);\n if (nextChar >= 0xDC00 && nextChar <= 0xDFFF/* low surrogate */) {\n // Combine the surrogate pair and store it escaped.\n result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000);\n // Advance index one extra since we already used that char here.\n i++; continue;\n }\n }\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ',' + (!state.condenseFlow ? ' ' : '');\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-';\n } else {\n _result += '- ';\n }\n\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n pairBuffer = '';\n if (index !== 0) pairBuffer += ', ';\n\n if (state.condenseFlow) pairBuffer += '\"';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n var arrayLevel = (state.noArrayIndent && (level > 0)) ? level - 1 : level;\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, arrayLevel, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, arrayLevel, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import jsYaml from 'js-yaml';\n\n/**\n * Redirect - object used to redirect some requests\n * e.g.\n * {\n * title: 1x1-transparent.gif\n * comment: http://probablyprogramming.com/2009/03/15/the-tiniest-gif-ever\n * contentType: image/gif;base64\n * content: R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\n * }\n * @typedef {Object} Redirect\n * @property {string} title\n * @property {string} comment\n * @property {string} content\n * @property {string} contentType\n */\n\nclass Redirects {\n /**\n * Converts rawYaml into JS object with sources titles used as keys\n * @param rawYaml\n * @returns {Object} - return object with titles in the keys and RedirectSources\n * in the values\n */\n constructor(rawYaml) {\n try {\n const arrOfRedirects = jsYaml.safeLoad(rawYaml);\n this.redirects = arrOfRedirects.reduce((acc, redirect) => {\n return {\n ...acc,\n [redirect.title]: redirect,\n };\n }, {});\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(`Was unable to load YAML into JS due to: ${e.message}`);\n throw e;\n }\n }\n\n /**\n * Returns redirect source object\n * @param {string} title\n * @return {Redirect}\n */\n getRedirect(title) {\n if (Object.prototype.hasOwnProperty.call(this.redirects, title)) {\n return this.redirects[title];\n }\n\n // look title among aliases\n const values = Object.keys(this.redirects)\n .map((key) => this.redirects[key]);\n return values.find((redirect) => {\n const { aliases } = redirect;\n if (!aliases) {\n return false;\n }\n return aliases.indexOf(title) > -1;\n });\n }\n}\n\nexport default Redirects;\n"],"names":["_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","_createClass","protoProps","staticProps","prototype","isNothing","subject","isObject","toArray","sequence","Array","isArray","extend","source","index","sourceKeys","keys","repeat","string","count","result","cycle","isNegativeZero","number","Number","NEGATIVE_INFINITY","YAMLException","reason","mark","Error","call","name","message","toString","captureStackTrace","constructor","stack","create","compact","Mark","buffer","position","line","column","getSnippet","indent","maxLength","head","start","tail","end","snippet","indexOf","charAt","slice","common","where","TYPE_CONSTRUCTOR_OPTIONS","YAML_NODE_KINDS","compileStyleAliases","map","forEach","style","alias","String","Type","tag","options","kind","resolve","construct","data","instanceOf","predicate","represent","defaultStyle","styleAliases","compileList","schema","exclude","include","includedSchema","currentType","previousType","previousIndex","push","filter","type","compileMap","scalar","mapping","fallback","collectType","arguments","Schema","definition","implicit","explicit","loadKind","compiledImplicit","compiledExplicit","compiledTypeMap","DEFAULT","createSchema","schemas","types","every","require$$0","require$$1","require$$2","resolveYamlNull","max","constructYamlNull","isNull","object","canonical","lowercase","uppercase","camelcase","resolveYamlBoolean","constructYamlBoolean","isBoolean","isHexCode","c","isOctCode","isDecCode","resolveYamlInteger","hasDigits","ch","charCodeAt","test","constructYamlInteger","sign","base","digits","replace","parseInt","split","v","unshift","d","isInteger","binary","octal","decimal","hexadecimal","toUpperCase","YAML_FLOAT_PATTERN","RegExp","resolveYamlFloat","constructYamlFloat","toLowerCase","POSITIVE_INFINITY","NaN","parseFloat","SCIENTIFIC_WITHOUT_DOT","representYamlFloat","res","isNaN","isFloat","require$$3","require$$4","YAML_DATE_REGEXP","YAML_TIMESTAMP_REGEXP","resolveYamlTimestamp","exec","constructYamlTimestamp","match","year","month","day","hour","minute","second","fraction","delta","tz_hour","tz_minute","date","Date","UTC","setTime","getTime","representYamlTimestamp","toISOString","resolveYamlMerge","NodeBuffer","_require","require","Buffer","__","BASE64_MAP","resolveYamlBinary","code","idx","bitlen","constructYamlBinary","tailbits","input","bits","from","representYamlBinary","isBinary","isBuffer","_hasOwnProperty","hasOwnProperty","_toString","resolveYamlOmap","objectKeys","pair","pairKey","pairHasKey","constructYamlOmap","resolveYamlPairs","constructYamlPairs","resolveYamlSet","constructYamlSet","require$$5","require$$6","resolveJavascriptUndefined","constructJavascriptUndefined","undefined","representJavascriptUndefined","isUndefined","resolveJavascriptRegExp","regexp","modifiers","constructJavascriptRegExp","representJavascriptRegExp","global","multiline","ignoreCase","isRegExp","esprima","_","window","resolveJavascriptFunction","ast","parse","range","body","expression","err","constructJavascriptFunction","params","param","Function","representJavascriptFunction","isFunction","CONTEXT_FLOW_IN","CONTEXT_FLOW_OUT","CONTEXT_BLOCK_IN","CONTEXT_BLOCK_OUT","CHOMPING_CLIP","CHOMPING_STRIP","CHOMPING_KEEP","PATTERN_NON_PRINTABLE","PATTERN_NON_ASCII_LINE_BREAKS","PATTERN_FLOW_INDICATORS","PATTERN_TAG_HANDLE","PATTERN_TAG_URI","_class","is_EOL","is_WHITE_SPACE","is_WS_OR_EOL","is_FLOW_INDICATOR","fromHexCode","lc","escapedHexLen","fromDecimalCode","simpleEscapeSequence","charFromCodepoint","fromCharCode","simpleEscapeCheck","simpleEscapeMap","State","filename","DEFAULT_FULL_SCHEMA","onWarning","legacy","json","listener","implicitTypes","typeMap","lineStart","lineIndent","documents","generateError","state","throwError","throwWarning","directiveHandlers","YAML","handleYamlDirective","args","major","minor","version","checkLineBreaks","TAG","handleTagDirective","handle","prefix","tagMap","captureSegment","checkJson","_position","_length","_character","_result","mergeMappings","destination","overridableKeys","quantity","storeMappingPair","keyTag","keyNode","valueNode","startLine","startPos","readLineBreak","skipSeparationSpace","allowComments","checkIndent","lineBreaks","testDocumentSeparator","writeFoldedLines","readPlainScalar","nodeIndent","withinFlowCollection","preceding","following","captureStart","captureEnd","hasPendingContent","_line","_lineStart","_lineIndent","_kind","readSingleQuotedScalar","readDoubleQuotedScalar","hexLength","hexResult","tmp","readFlowCollection","readNext","_tag","_anchor","anchor","terminator","isPair","isExplicitPair","isMapping","anchorMap","composeNode","readBlockScalar","folding","chomping","didReadContent","detectedIndent","textIndent","emptyLines","atMoreIndented","readBlockSequence","detected","readBlockMapping","flowIndent","allowCompact","_pos","atExplicitKey","readTagProperty","isVerbatim","isNamed","tagHandle","tagName","readAnchorProperty","readAlias","parentIndent","nodeContext","allowToSeek","allowBlockStyles","allowBlockScalars","allowBlockCollections","indentStatus","atNewLine","hasContent","typeIndex","typeQuantity","blockIndent","readDocument","documentStart","directiveName","directiveArgs","hasDirectives","loadDocuments","nullpos","loadAll","iterator","load","safeLoadAll","DEFAULT_SAFE_SCHEMA","safeLoad","CHAR_TAB","CHAR_LINE_FEED","CHAR_CARRIAGE_RETURN","CHAR_SPACE","CHAR_EXCLAMATION","CHAR_DOUBLE_QUOTE","CHAR_SHARP","CHAR_PERCENT","CHAR_AMPERSAND","CHAR_SINGLE_QUOTE","CHAR_ASTERISK","CHAR_COMMA","CHAR_MINUS","CHAR_COLON","CHAR_EQUALS","CHAR_GREATER_THAN","CHAR_QUESTION","CHAR_COMMERCIAL_AT","CHAR_LEFT_SQUARE_BRACKET","CHAR_RIGHT_SQUARE_BRACKET","CHAR_GRAVE_ACCENT","CHAR_LEFT_CURLY_BRACKET","CHAR_VERTICAL_LINE","CHAR_RIGHT_CURLY_BRACKET","ESCAPE_SEQUENCES","DEPRECATED_BOOLEANS_SYNTAX","compileStyleMap","encodeHex","character","Math","noArrayIndent","skipInvalid","flowLevel","styleMap","sortKeys","lineWidth","noRefs","noCompatMode","condenseFlow","explicitTypes","duplicates","usedDuplicates","indentString","spaces","ind","next","generateNextLine","level","testImplicitResolving","str","isWhitespace","isPrintable","isNsChar","isPlainSafe","prev","isPlainSafeFirst","needIndentIndicator","leadingSpaceRe","STYLE_PLAIN","STYLE_SINGLE","STYLE_LITERAL","STYLE_FOLDED","STYLE_DOUBLE","chooseScalarStyle","singleLineOnly","indentPerLevel","testAmbiguousType","char","prev_char","hasLineBreak","hasFoldableLine","shouldTrackWidth","previousLineBreak","plain","writeScalar","iskey","dump","min","testAmbiguity","blockHeader","dropEndingNewline","foldString","escapeString","indentIndicator","clip","keep","chomp","width","lineRe","nextLF","lastIndex","foldLine","prevMoreIndented","moreIndented","breakRe","curr","nextChar","escapeSeq","writeFlowSequence","writeNode","writeBlockSequence","writeFlowMapping","objectKeyList","objectKey","objectValue","pairBuffer","writeBlockMapping","explicitPair","sort","detectType","typeList","block","objectOrArray","duplicateIndex","duplicate","arrayLevel","getDuplicateReferences","objects","duplicatesIndexes","inspectNode","safeDump","deprecated","loader","dumper","require$$7","yaml","Redirects","rawYaml","arrOfRedirects","jsYaml","redirects","reduce","acc","redirect","title","e","console","log","values","find","aliases"],"mappings":"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"} \ No newline at end of file diff --git a/dist/redirects.yml b/dist/redirects.yml index c7be16214..c413c3b08 100644 --- a/dist/redirects.yml +++ b/dist/redirects.yml @@ -1,6 +1,6 @@ # # AdGuard Scriptlets (Redirects Source) -# Version 1.3.4 +# Version 1.3.5 # - title: 1x1-transparent.gif description: |- diff --git a/dist/scriptlets.corelibs.json b/dist/scriptlets.corelibs.json index 83ddd127e..a151a5d5e 100644 --- a/dist/scriptlets.corelibs.json +++ b/dist/scriptlets.corelibs.json @@ -1,5 +1,5 @@ { - "version": "1.3.4", + "version": "1.3.5", "scriptlets": [ { "names": [ diff --git a/dist/scriptlets.js b/dist/scriptlets.js index 664b95f48..4f290fb7e 100644 --- a/dist/scriptlets.js +++ b/dist/scriptlets.js @@ -1,7 +1,7 @@ /** * AdGuard Scriptlets - * Version 1.3.4 + * Version 1.3.5 */ (function () { diff --git a/dist/scriptlets.js.map b/dist/scriptlets.js.map deleted file mode 100644 index 3d46a10f6..000000000 --- a/dist/scriptlets.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"scriptlets.js","sources":["../src/helpers/random-id.js","../src/helpers/set-property-access.js","../src/helpers/get-property-in-chain.js","../src/helpers/get-wildcard-property-in-chain.js","../src/helpers/string-utils.js","../src/helpers/create-on-error-handler.js","../src/helpers/noop.js","../src/helpers/hit.js","../src/helpers/observer.js","../src/helpers/match-stack.js","../src/helpers/array-utils.js","../src/helpers/index.js","../src/helpers/injector.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../src/helpers/parse-rule.js","../src/scriptlets/abort-on-property-read.js","../src/scriptlets/abort-on-property-write.js","../src/scriptlets/prevent-setTimeout.js","../src/scriptlets/prevent-setInterval.js","../src/scriptlets/prevent-window-open.js","../src/scriptlets/abort-current-inline-script.js","../src/scriptlets/set-constant.js","../src/scriptlets/remove-cookie.js","../src/scriptlets/prevent-addEventListener.js","../src/scriptlets/prevent-bab.js","../src/scriptlets/nowebrtc.js","../src/scriptlets/log-addEventListener.js","../src/scriptlets/log-eval.js","../src/scriptlets/log.js","../src/scriptlets/noeval.js","../src/scriptlets/prevent-eval-if.js","../src/scriptlets/prevent-fab-3.2.0.js","../src/scriptlets/set-popads-dummy.js","../src/scriptlets/prevent-popads-net.js","../src/scriptlets/prevent-adfly.js","../src/scriptlets/debug-on-property-read.js","../src/scriptlets/debug-on-property-write.js","../src/scriptlets/debug-current-inline-script.js","../src/scriptlets/remove-attr.js","../src/scriptlets/remove-class.js","../src/scriptlets/disable-newtab-links.js","../src/scriptlets/adjust-setInterval.js","../src/scriptlets/adjust-setTimeout.js","../src/scriptlets/dir-string.js","../src/scriptlets/json-prune.js","../src/scriptlets/prevent-requestAnimationFrame.js","../src/scriptlets/set-cookie.js","../src/scriptlets/hide-in-shadow-dom.js","../src/scriptlets/scriptletsList.js","../src/helpers/validator.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/toArray.js","../src/helpers/converter.js","../src/redirects/google-analytics.js","../src/redirects/google-analytics-ga.js","../src/redirects/googlesyndication-adsbygoogle.js","../src/redirects/googletagmanager-gtm.js","../src/redirects/googletagservices-gpt.js","../src/redirects/scorecardresearch-beacon.js","../src/redirects/metrika-yandex-tag.js","../src/redirects/metrika-yandex-watch.js","../src/redirects/amazon-apstag.js","../src/redirects/index.js","../src/scriptlets/index.js","../src/scriptlets/scriptletsWrapper.js"],"sourcesContent":["/**\n * Generate random six symbols id\n */\nexport function randomId() {\n return Math.random().toString(36).substr(2, 9);\n}\n","/**\n * Set getter and setter to property if it's configurable\n * @param {Object} object target object with property\n * @param {string} property property name\n * @param {Object} descriptor contains getter and setter functions\n * @returns {boolean} is operation successful\n */\nexport function setPropertyAccess(object, property, descriptor) {\n const currentDescriptor = Object.getOwnPropertyDescriptor(object, property);\n if (currentDescriptor && !currentDescriptor.configurable) {\n return false;\n }\n Object.defineProperty(object, property, descriptor);\n return true;\n}\n","/**\n * @typedef Chain\n * @property {Object} base\n * @property {string} prop\n * @property {string} [chain]\n */\n\n/**\n * Check if the property exists in the base object (recursively)\n *\n * If property doesn't exist in base object,\n * defines this property as 'undefined'\n * and returns base, property name and remaining part of property chain\n *\n * @param {Object} base\n * @param {string} chain\n * @returns {Chain}\n */\nexport function getPropertyInChain(base, chain) {\n const pos = chain.indexOf('.');\n if (pos === -1) {\n return { base, prop: chain };\n }\n const prop = chain.slice(0, pos);\n const nextBase = base[prop];\n chain = chain.slice(pos + 1);\n if (nextBase !== undefined) {\n return getPropertyInChain(nextBase, chain);\n }\n\n Object.defineProperty(base, prop, { configurable: true });\n return { base: nextBase, prop, chain };\n}\n","/**\n * @typedef Chain\n * @property {Object} base\n * @property {string} prop\n * @property {string} [chain]\n */\n\n/**\n * Check if the property exists in the base object (recursively).\n * Similar to getPropertyInChain but upgraded for json-prune:\n * handle wildcard properties and does not define nonexistent base property as 'undefined'\n *\n * @param {Object} base\n * @param {string} chain\n * @param {boolean} [lookThrough=false]\n * should the method look through it's props in order to wildcard\n * @param {Array} [output=[]] result acc\n * @returns {Chain[]} array of objects\n */\nexport function getWildcardPropertyInChain(base, chain, lookThrough = false, output = []) {\n const pos = chain.indexOf('.');\n if (pos === -1) {\n // for paths like 'a.b.*' every final nested prop should be processed\n if (chain === '*' || chain === '[]') {\n Object.keys(base).forEach((key) => {\n output.push({ base, prop: key });\n });\n } else {\n output.push({ base, prop: chain });\n }\n\n return output;\n }\n\n const prop = chain.slice(0, pos);\n\n const shouldLookThrough = (prop === '*' || prop === '[]')\n && base instanceof Object;\n\n if (shouldLookThrough) {\n const nextProp = chain.slice(pos + 1);\n const baseKeys = Object.keys(base);\n\n // if there is a wildcard prop in input chain (e.g. 'ad.*.src' for 'ad.0.src ad.1.src'),\n // each one of base keys should be considered as a potential chain prop in final path\n baseKeys.forEach((key) => {\n const item = base[key];\n getWildcardPropertyInChain(item, nextProp, lookThrough, output);\n });\n }\n\n const nextBase = base[prop];\n chain = chain.slice(pos + 1);\n if (nextBase !== undefined) {\n getWildcardPropertyInChain(nextBase, chain, lookThrough, output);\n }\n\n return output;\n}\n","/**\n * Escapes special chars in string\n * @param {string} str\n * @returns {string}\n */\nexport const escapeRegExp = (str) => str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n/**\n * Converts search string to the regexp\n * TODO think about nested dependencies, but be careful with dependency loops\n * @param {string} str search string\n * @returns {RegExp}\n */\nexport const toRegExp = (str) => {\n if (str[0] === '/' && str[str.length - 1] === '/') {\n return new RegExp(str.slice(1, -1));\n }\n const escaped = str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n return new RegExp(escaped);\n};\n\n/**\n * Get string before regexp first match\n * @param {string} str\n * @param {RegExp} rx\n */\nexport const getBeforeRegExp = (str, rx) => {\n const index = str.search(rx);\n return str.substring(0, index);\n};\n\nexport const startsWith = (str, prefix) => {\n // if str === '', (str && false) will return ''\n // that's why it has to be !!str\n return !!str && str.indexOf(prefix) === 0;\n};\n\nexport const endsWith = (str, prefix) => {\n // if str === '', (str && false) will return ''\n // that's why it has to be !!str\n return !!str && str.indexOf(prefix) === str.length - 1;\n};\n\nexport const substringAfter = (str, separator) => {\n if (!str) {\n return str;\n }\n const index = str.indexOf(separator);\n return index < 0 ? '' : str.substring(index + separator.length);\n};\n\nexport const substringBefore = (str, separator) => {\n if (!str || !separator) {\n return str;\n }\n const index = str.indexOf(separator);\n return index < 0 ? str : str.substring(0, index);\n};\n\n/**\n * Wrap str in single qoutes and replaces single quotes to doudle one\n * @param {string} str\n */\nexport const wrapInSingleQuotes = (str) => {\n if ((str[0] === '\\'' && str[str.length - 1] === '\\'')\n || (str[0] === '\"' && str[str.length - 1] === '\"')) {\n str = str.substring(1, str.length - 1);\n }\n // eslint-disable-next-line no-useless-escape\n str = str.replace(/\\'/g, '\"');\n\n return `'${str}'`;\n};\n\n/**\n * Returns substring enclosed in the widest braces\n * @param {string} str\n */\nexport const getStringInBraces = (str) => {\n const firstIndex = str.indexOf('(');\n const lastIndex = str.lastIndexOf(')');\n return str.substring(firstIndex + 1, lastIndex);\n};\n","/**\n * Generates function which silents global errors on page generated by scriptlet\n * If error doesn't belong to our error we transfer it to the native onError handler\n * @param {string} rid - unique identifier of scriptlet\n * @return {onError}\n */\nexport function createOnErrorHandler(rid) {\n // eslint-disable-next-line consistent-return\n const nativeOnError = window.onerror;\n return function onError(error, ...args) {\n if (typeof error === 'string' && error.indexOf(rid) !== -1) {\n return true;\n }\n if (nativeOnError instanceof Function) {\n return nativeOnError.apply(this, [error, ...args]);\n }\n return false;\n };\n}\n","/**\n * Noop function\n */\nexport const noopFunc = () => { };\n\n/**\n * Function returns null\n */\nexport const noopNull = () => null;\n\n/**\n * Function returns true\n */\nexport const trueFunc = () => true;\n\n/**\n * Function returns false\n */\nexport const falseFunc = () => false;\n\n/**\n * Function returns this\n */\nexport function noopThis() {\n return this;\n}\n\n/**\n * Function returns empty array\n */\nexport const noopArray = () => [];\n\n/**\n * Function returns empty string\n */\nexport const noopStr = () => '';\n","/* eslint-disable no-console, no-underscore-dangle */\n/**\n * Hit used only for debug purposes now\n * @param {Source} source\n * @param {string} [message] - optional message;\n * use LOG_MARKER = 'log: ' at the start of a message\n * for logging scriptlets\n */\nexport const hit = (source, message) => {\n if (source.verbose !== true) {\n return;\n }\n\n try {\n const log = console.log.bind(console);\n const trace = console.trace.bind(console);\n\n let prefix = source.ruleText || '';\n\n if (source.domainName) {\n const AG_SCRIPTLET_MARKER = '#%#//';\n const UBO_SCRIPTLET_MARKER = '##+js';\n let ruleStartIndex;\n if (source.ruleText.indexOf(AG_SCRIPTLET_MARKER) > -1) {\n ruleStartIndex = source.ruleText.indexOf(AG_SCRIPTLET_MARKER);\n } else if (source.ruleText.indexOf(UBO_SCRIPTLET_MARKER) > -1) {\n ruleStartIndex = source.ruleText.indexOf(UBO_SCRIPTLET_MARKER);\n }\n // delete all domains from ruleText and leave just rule part\n const rulePart = source.ruleText.slice(ruleStartIndex);\n // prepare applied scriptlet rule for specific domain\n prefix = `${source.domainName}${rulePart}`;\n }\n\n // Used to check if scriptlet uses 'hit' function for logging\n const LOG_MARKER = 'log: ';\n\n if (message) {\n if (message.indexOf(LOG_MARKER) === -1) {\n log(`${prefix} message:\\n${message}`);\n } else {\n log(message.slice(LOG_MARKER.length));\n }\n }\n\n log(`${prefix} trace start`);\n if (trace) {\n trace();\n }\n log(`${prefix} trace end`);\n } catch (e) {\n // try catch for Edge 15\n // In according to this issue https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/14495220/\n // console.log throws an error\n }\n\n // This is necessary for unit-tests only!\n if (typeof window.__debug === 'function') {\n window.__debug(source);\n }\n};\n","/**\n * DOM tree changes observer. Used for 'remove-attr' and 'remove-class' scriptlets\n * @param {Function} callback\n * @param {Boolean} observeAttrs - optional parameter - should observer check attibutes changes\n */\nexport const observeDOMChanges = (callback, observeAttrs = false, attrsToObserv = []) => {\n /**\n * Returns a wrapper, passing the call to 'method' at maximum once per 'delay' milliseconds.\n * Those calls that fall into the \"cooldown\" period, are ignored\n * @param {Function} method\n * @param {Number} delay - milliseconds\n */\n const throttle = (method, delay) => {\n let wait = false;\n let savedArgs;\n const wrapper = (...args) => {\n if (wait) {\n savedArgs = args;\n return;\n }\n method(...args);\n wait = true;\n setTimeout(() => {\n wait = false;\n if (savedArgs) {\n wrapper(savedArgs);\n savedArgs = null;\n }\n }, delay);\n };\n return wrapper;\n };\n\n /**\n * 'delay' in milliseconds for 'throttle' method\n */\n const THROTTLE_DELAY_MS = 20;\n /**\n * Used for remove-class\n */\n // eslint-disable-next-line no-use-before-define\n const observer = new MutationObserver(throttle(callbackWrapper, THROTTLE_DELAY_MS));\n\n const connect = () => {\n if (attrsToObserv.length > 0) {\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n attributes: observeAttrs,\n attributeFilter: attrsToObserv,\n });\n } else {\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n attributes: observeAttrs,\n });\n }\n };\n const disconnect = () => {\n observer.disconnect();\n };\n function callbackWrapper() {\n disconnect();\n callback();\n connect();\n }\n\n connect();\n};\n","/**\n * Checks if the stackTrace contains stackRegexp\n * // https://github.com/AdguardTeam/Scriptlets/issues/82\n * @param {string} stackRegexp - stack regexp\n * @param {string} stackTrace - script error stack trace\n * @returns {boolean}\n */\n\nexport const matchStackTrace = (stackRegexp, stackTrace) => {\n const refinedStackTrace = stackTrace\n .split('\\n')\n .slice(2) // get rid of our own functions in the stack trace\n .map((line) => line.trim()) // trim the lines\n .join('\\n');\n\n return stackRegexp.test(refinedStackTrace);\n};\n","/**\n * Some browsers do not support Array.prototype.flat()\n * for example, Opera 42 which is used for browserstack tests\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat\n * @param {Array} input\n */\nexport const flatten = (input) => {\n const stack = [];\n input.forEach((el) => stack.push(el));\n const res = [];\n while (stack.length) {\n // pop value from stack\n const next = stack.pop();\n if (Array.isArray(next)) {\n // push back array items, won't modify the original input\n next.forEach((el) => stack.push(el));\n } else {\n res.push(next);\n }\n }\n // reverse to restore input order\n return res.reverse();\n};\n","/**\n * This file must export all used dependencies\n */\nexport * from './random-id';\nexport * from './set-property-access';\nexport * from './get-property-in-chain';\nexport * from './get-wildcard-property-in-chain';\nexport * from './string-utils';\nexport * from './create-on-error-handler';\nexport * from './noop';\nexport * from './hit';\nexport * from './observer';\nexport * from './match-stack';\nexport * from './array-utils';\n","import * as dependencies from '.';\n\n/**\n * Concat dependencies to scriptlet code\n * @param {string} scriptlet string view of scriptlet\n */\nexport function attachDependencies(scriptlet) {\n const { injections = [] } = scriptlet;\n return injections.reduce((accum, dep) => `${accum}\\n${dependencies[dep.name]}`, scriptlet.toString());\n}\n\n/**\n * Add scriptlet call to existing code\n * @param {Function} scriptlet\n * @param {string} code\n */\nexport function addCall(scriptlet, code) {\n return `${code};\n const updatedArgs = args ? [].concat(source).concat(args) : [source];\n ${scriptlet.name}.apply(this, updatedArgs);\n `;\n}\n\n/**\n * Wrap function into IIFE (Immediately invoked function expression)\n *\n * @param {Source} source - object with scriptlet properties\n * @param {string} code - scriptlet source code with dependencies\n *\n * @returns {string} full scriptlet code\n *\n * @example\n * const source = {\n * args: [\"aaa\", \"bbb\"],\n * name: 'noeval',\n * };\n * const code = \"function noeval(source, args) { alert(source); } noeval.apply(this, args);\"\n * const result = wrapInIIFE(source, code);\n *\n * // result\n * `(function(source, args) {\n * function noeval(source) { alert(source); }\n * noeval.apply(this, args);\n * )({\"args\": [\"aaa\", \"bbb\"], \"name\":\"noeval\"}, [\"aaa\", \"bbb\"])`\n */\nexport function passSourceAndProps(source, code) {\n if (source.hit) {\n source.hit = source.hit.toString();\n }\n const sourceString = JSON.stringify(source);\n const argsString = source.args ? `[${source.args.map(JSON.stringify)}]` : undefined;\n const params = argsString ? `${sourceString}, ${argsString}` : sourceString;\n return `(function(source, args){\\n${code}\\n})(${params});`;\n}\n\n/**\n * Wrap code in no name function\n * @param {string} code which must be wrapped\n */\nexport function wrapInNonameFunc(code) {\n return `function(source, args){\\n${code}\\n}`;\n}\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","/**\n * Iterate over iterable argument and evaluate current state with transitions\n * @param {string} init first transition name\n * @param {Array|Collection|string} iterable\n * @param {Object} transitions transtion functions\n * @param {any} args arguments which should be passed to transition functions\n */\nfunction iterateWithTransitions(iterable, transitions, init, args) {\n let state = init || Object.keys(transitions)[0];\n for (let i = 0; i < iterable.length; i += 1) {\n state = transitions[state](iterable, i, args);\n }\n return state;\n}\n\n/**\n * AdGuard scriptlet rule mask\n */\nexport const ADG_SCRIPTLET_MASK = '#//scriptlet';\n\n/**\n * Helper to accumulate an array of strings char by char\n */\nconst wordSaver = () => {\n let str = '';\n const strs = [];\n const saveSymb = (s) => {\n str += s;\n return str;\n };\n const saveStr = () => {\n strs.push(str);\n str = '';\n };\n const getAll = () => [...strs];\n\n return { saveSymb, saveStr, getAll };\n};\n\nconst substringAfter = (str, separator) => {\n if (!str) {\n return str;\n }\n const index = str.indexOf(separator);\n return index < 0 ? '' : str.substring(index + separator.length);\n};\n\n/**\n * Parse and validate scriptlet rule\n * @param {*} ruleText\n * @returns {{name: string, args: Array}}\n */\nexport const parseRule = (ruleText) => {\n ruleText = substringAfter(ruleText, ADG_SCRIPTLET_MASK);\n /**\n * Transition names\n */\n const TRANSITION = {\n OPENED: 'opened',\n PARAM: 'param',\n CLOSED: 'closed',\n };\n\n /**\n * Transition function: the current index position in start, end or between params\n * @param {string} rule\n * @param {number} index\n * @param {Object} Object\n * @property {Object} Object.sep contains prop symb with current separator char\n */\n const opened = (rule, index, { sep }) => {\n const char = rule[index];\n let transition;\n switch (char) {\n case ' ':\n case '(':\n case ',': {\n transition = TRANSITION.OPENED;\n break;\n }\n case '\\'':\n case '\"': {\n sep.symb = char;\n transition = TRANSITION.PARAM;\n break;\n }\n case ')': {\n transition = index === rule.length - 1\n ? TRANSITION.CLOSED\n : TRANSITION.OPENED;\n break;\n }\n default: {\n throw new Error('The rule is not a scriptlet');\n }\n }\n\n return transition;\n };\n /**\n * Transition function: the current index position inside param\n * @param {string} rule\n * @param {number} index\n * @param {Object} Object\n * @property {Object} Object.sep contains prop `symb` with current separator char\n * @property {Object} Object.saver helper which allow to save strings by car by char\n */\n const param = (rule, index, { saver, sep }) => {\n const char = rule[index];\n switch (char) {\n case '\\'':\n case '\"': {\n const preIndex = index - 1;\n const before = rule[preIndex];\n if (char === sep.symb && before !== '\\\\') {\n sep.symb = null;\n saver.saveStr();\n return TRANSITION.OPENED;\n }\n }\n // eslint-disable-next-line no-fallthrough\n default: {\n saver.saveSymb(char);\n return TRANSITION.PARAM;\n }\n }\n };\n const transitions = {\n [TRANSITION.OPENED]: opened,\n [TRANSITION.PARAM]: param,\n [TRANSITION.CLOSED]: () => { },\n };\n const sep = { symb: null };\n const saver = wordSaver();\n const state = iterateWithTransitions(ruleText, transitions, TRANSITION.OPENED, { sep, saver });\n\n if (state !== 'closed') {\n throw new Error(`Invalid scriptlet rule ${ruleText}`);\n }\n\n const args = saver.getAll();\n return {\n name: args[0],\n args: args.slice(1),\n };\n};\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet abort-on-property-read\n *\n * @description\n * Aborts a script when it attempts to **read** the specified property.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#abort-on-property-readjs-\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/6b2a309054cc23432102b85d13f12559639ef495/lib/content/snippets.js#L864\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('abort-on-property-read', property[, stack])\n * ```\n *\n * - `property` - required, path to a property (joined with `.` if needed). The property must be attached to `window`\n * - `stack` - optional, string or regular expression that must match the current function call stack trace\n *\n * **Examples**\n * ```\n * ! Aborts script when it tries to access `window.alert`\n * example.org#%#//scriptlet('abort-on-property-read', 'alert')\n *\n * ! Aborts script when it tries to access `navigator.language`\n * example.org#%#//scriptlet('abort-on-property-read', 'navigator.language')\n *\n * ! Aborts script when it tries to access `window.adblock` and it's error stack trace contains `test.js`\n * example.org#%#//scriptlet('abort-on-property-read', 'adblock', 'test.js')\n * ```\n */\n/* eslint-enable max-len */\nexport function abortOnPropertyRead(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n\n const rid = randomId();\n const abort = () => {\n hit(source);\n throw new ReferenceError(rid);\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, {\n get: abort,\n set: () => {\n },\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\nabortOnPropertyRead.names = [\n 'abort-on-property-read',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'abort-on-property-read.js',\n 'ubo-abort-on-property-read.js',\n 'aopr.js',\n 'ubo-aopr.js',\n 'ubo-abort-on-property-read',\n 'ubo-aopr',\n 'abp-abort-on-property-read',\n];\nabortOnPropertyRead.injections = [\n randomId,\n toRegExp,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n matchStackTrace,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet abort-on-property-write\n *\n * @description\n * Aborts a script when it attempts to **write** the specified property.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#abort-on-property-writejs-\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/6b2a309054cc23432102b85d13f12559639ef495/lib/content/snippets.js#L896\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('abort-on-property-write', property[, stack])\n * ```\n *\n * - `property` - required, path to a property (joined with `.` if needed). The property must be attached to `window`\n * - `stack` - optional, string or regular expression that must match the current function call stack trace\n *\n * **Examples**\n * ```\n * ! Aborts script when it tries to set `window.adblock` value\n * example.org#%#//scriptlet('abort-on-property-write', 'adblock')\n *\n * ! Aborts script when it tries to set `window.adblock` value and it's error stack trace contains `checking.js`\n * example.org#%#//scriptlet('abort-on-property-write', 'adblock', 'checking.js')\n * ```\n */\n/* eslint-enable max-len */\nexport function abortOnPropertyWrite(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n\n const rid = randomId();\n const abort = () => {\n hit(source);\n throw new ReferenceError(rid);\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, { set: abort });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid).bind();\n}\n\nabortOnPropertyWrite.names = [\n 'abort-on-property-write',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'abort-on-property-write.js',\n 'ubo-abort-on-property-write.js',\n 'aopw.js',\n 'ubo-aopw.js',\n 'ubo-abort-on-property-write',\n 'ubo-aopw',\n 'abp-abort-on-property-write',\n];\n\nabortOnPropertyWrite.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n];\n","import {\n hit, noopFunc, toRegExp, startsWith,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-setTimeout\n *\n * @description\n * Prevents a `setTimeout` call if:\n * 1) the text of the callback is matching the specified search string/regexp which does not start with `!`;\n * otherwise mismatched calls should be defused;\n * 2) the timeout is matching the specified delay; otherwise mismatched calls should be defused.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#no-settimeout-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout'[, search[, delay]])\n * ```\n *\n * Call with no arguments will log calls to setTimeout while debugging (`log-setTimeout` superseding),\n * so production filter lists' rules definitely require at least one of the parameters:\n * - `search` - optional, string or regular expression.\n * If starts with `!`, scriptlet will not match the stringified callback but all other will be defused.\n * If do not start with `!`, the stringified callback will be matched.\n * If not set, prevents all `setTimeout` calls due to specified `delay`.\n * - `delay` - optional, must be an integer.\n * If starts with `!`, scriptlet will not match the delay but all other will be defused.\n * If do not start with `!`, the delay passed to the `setTimeout` call will be matched.\n *\n * **Examples**\n * 1. Prevents `setTimeout` calls if the callback matches `/\\.test/` regardless of the delay.\n * ```bash\n * example.org#%#//scriptlet('prevent-setTimeout', '/\\.test/')\n * ```\n *\n * For instance, the following call will be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"value\";\n * }, 100);\n * ```\n *\n * 2. Prevents `setTimeout` calls if the callback does not contain `value`.\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout', '!value')\n * ```\n *\n * For instance, only the first of the following calls will be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"test -- prevented\";\n * }, 300);\n * setTimeout(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setTimeout(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n *\n * 3. Prevents `setTimeout` calls if the callback contains `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout', 'value', '!300')\n * ```\n *\n * For instance, only the first of the following calls will not be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"value 1 -- executed\";\n * }, 300);\n * setTimeout(function () {\n * window.test = \"value 2 -- prevented\";\n * }, 400);\n * setTimeout(function () {\n * window.test = \"value 3 -- prevented\";\n * }, 500);\n * ```\n *\n * 4. Prevents `setTimeout` calls if the callback does not contain `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setTimeout', '!value', '!300')\n * ```\n *\n * For instance, only the second of the following calls will be prevented:\n * ```javascript\n * setTimeout(function () {\n * window.test = \"test -- executed\";\n * }, 300);\n * setTimeout(function () {\n * window.test = \"test -- prevented\";\n * }, 400);\n * setTimeout(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setTimeout(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n */\n/* eslint-enable max-len */\nexport function preventSetTimeout(source, match, delay) {\n const nativeTimeout = window.setTimeout;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const log = console.log.bind(console); // eslint-disable-line no-console\n\n // logs setTimeouts to console if no arguments have been specified\n const shouldLog = ((typeof match === 'undefined') && (typeof delay === 'undefined'));\n\n const INVERT_MARKER = '!';\n\n const isNotMatch = startsWith(match, INVERT_MARKER);\n if (isNotMatch) {\n match = match.slice(1);\n }\n const isNotDelay = startsWith(delay, INVERT_MARKER);\n if (isNotDelay) {\n delay = delay.slice(1);\n }\n\n delay = parseInt(delay, 10);\n delay = nativeIsNaN(delay) ? null : delay;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n const timeoutWrapper = (callback, timeout, ...args) => {\n let shouldPrevent = false;\n if (shouldLog) {\n hit(source);\n log(`setTimeout(\"${callback.toString()}\", ${timeout})`);\n } else if (!delay) {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch;\n } else if (match === '/.?/') {\n shouldPrevent = (timeout === delay) !== isNotDelay;\n } else {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch\n && (timeout === delay) !== isNotDelay;\n }\n\n if (shouldPrevent) {\n hit(source);\n return nativeTimeout(noopFunc, timeout);\n }\n\n return nativeTimeout.apply(window, [callback, timeout, ...args]);\n };\n window.setTimeout = timeoutWrapper;\n}\n\npreventSetTimeout.names = [\n 'prevent-setTimeout',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'no-setTimeout-if.js', // new implementation of setTimeout-defuser.js\n 'ubo-no-setTimeout-if.js',\n 'setTimeout-defuser.js', // old name should be supported as well\n 'ubo-setTimeout-defuser.js',\n 'nostif.js', // new short name of no-setTimeout-if\n 'ubo-nostif.js',\n 'std.js', // old short scriptlet name\n 'ubo-std.js',\n 'ubo-no-setTimeout-if',\n 'ubo-setTimeout-defuser',\n 'ubo-nostif',\n 'ubo-std',\n];\n\npreventSetTimeout.injections = [toRegExp, startsWith, hit, noopFunc];\n","import {\n hit, noopFunc, toRegExp, startsWith,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-setInterval\n *\n * @description\n * Prevents a `setInterval` call if:\n * 1) the text of the callback is matching the specified `search` string/regexp which does not start with `!`;\n * otherwise mismatched calls should be defused;\n * 2) the interval is matching the specified `delay`; otherwise mismatched calls should be defused.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#no-setinterval-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-setInterval'[, search[, delay]])\n * ```\n *\n * Call with no arguments will log calls to setInterval while debugging (`log-setInterval` superseding),\n * so production filter lists' rules definitely require at least one of the parameters:\n * - `search` - optional, string or regular expression.\n * If starts with `!`, scriptlet will not match the stringified callback but all other will be defused.\n * If do not start with `!`, the stringified callback will be matched.\n * If not set, prevents all `setInterval` calls due to specified `delay`.\n * - `delay` - optional, must be an integer.\n * If starts with `!`, scriptlet will not match the delay but all other will be defused.\n * If do not start with `!`, the delay passed to the `setInterval` call will be matched.\n *\n * **Examples**\n * 1. Prevents `setInterval` calls if the callback matches `/\\.test/` regardless of the delay.\n * ```bash\n * example.org#%#//scriptlet('prevent-setInterval', '/\\.test/')\n * ```\n *\n * For instance, the following call will be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"value\";\n * }, 100);\n * ```\n *\n * 2. Prevents `setInterval` calls if the callback does not contain `value`.\n * ```\n * example.org#%#//scriptlet('prevent-setInterval', '!value')\n * ```\n *\n * For instance, only the first of the following calls will be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"test -- prevented\";\n * }, 300);\n * setInterval(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setInterval(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n *\n * 3. Prevents `setInterval` calls if the callback contains `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setInterval', 'value', '!300')\n * ```\n *\n * For instance, only the first of the following calls will not be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"value 1 -- executed\";\n * }, 300);\n * setInterval(function () {\n * window.test = \"value 2 -- prevented\";\n * }, 400);\n * setInterval(function () {\n * window.test = \"value 3 -- prevented\";\n * }, 500);\n * ```\n *\n * 4. Prevents `setInterval` calls if the callback does not contain `value` and the delay is not set to `300`.\n * ```\n * example.org#%#//scriptlet('prevent-setInterval', '!value', '!300')\n * ```\n *\n * For instance, only the second of the following calls will be prevented:\n * ```javascript\n * setInterval(function () {\n * window.test = \"test -- executed\";\n * }, 300);\n * setInterval(function () {\n * window.test = \"test -- prevented\";\n * }, 400);\n * setInterval(function () {\n * window.test = \"value -- executed\";\n * }, 400);\n * setInterval(function () {\n * window.value = \"test -- executed\";\n * }, 500);\n * ```\n */\n/* eslint-enable max-len */\nexport function preventSetInterval(source, match, delay) {\n const nativeInterval = window.setInterval;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const log = console.log.bind(console); // eslint-disable-line no-console\n\n // logs setIntervals to console if no arguments have been specified\n const shouldLog = ((typeof match === 'undefined') && (typeof delay === 'undefined'));\n\n const INVERT_MARKER = '!';\n\n const isNotMatch = startsWith(match, INVERT_MARKER);\n if (isNotMatch) {\n match = match.slice(1);\n }\n const isNotDelay = startsWith(delay, INVERT_MARKER);\n if (isNotDelay) {\n delay = delay.slice(1);\n }\n\n delay = parseInt(delay, 10);\n delay = nativeIsNaN(delay) ? null : delay;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n const intervalWrapper = (callback, interval, ...args) => {\n let shouldPrevent = false;\n if (shouldLog) {\n hit(source);\n log(`setInterval(\"${callback.toString()}\", ${interval})`);\n } else if (!delay) {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch;\n } else if (match === '/.?/') {\n shouldPrevent = (interval === delay) !== isNotDelay;\n } else {\n shouldPrevent = match.test(callback.toString()) !== isNotMatch\n && (interval === delay) !== isNotDelay;\n }\n\n if (shouldPrevent) {\n hit(source);\n return nativeInterval(noopFunc, interval);\n }\n\n return nativeInterval.apply(window, [callback, interval, ...args]);\n };\n window.setInterval = intervalWrapper;\n}\n\npreventSetInterval.names = [\n 'prevent-setInterval',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'no-setInterval-if.js', // new implementation of setInterval-defuser.js\n 'ubo-no-setInterval-if.js',\n 'setInterval-defuser.js', // old name should be supported as well\n 'ubo-setInterval-defuser.js',\n 'nosiif.js', // new short name of no-setInterval-if\n 'ubo-nosiif.js',\n 'sid.js', // old short scriptlet name\n 'ubo-sid.js',\n 'ubo-no-setInterval-if',\n 'ubo-setInterval-defuser',\n 'ubo-nosiif',\n 'ubo-sid',\n];\n\npreventSetInterval.injections = [toRegExp, startsWith, hit, noopFunc];\n","import {\n toRegExp,\n substringBefore,\n substringAfter,\n startsWith,\n endsWith,\n hit,\n noopFunc,\n trueFunc,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-window-open\n *\n * @description\n * Prevents `window.open` calls when URL either matches or not matches the specified string/regexp. Using it without parameters prevents all `window.open` calls.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#windowopen-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-window-open'[, match[, search[, replacement]]])\n * ```\n *\n * - `match` - optional, defaults to \"matching\", any positive number or nothing for \"matching\", 0 or empty string for \"not matching\"\n * - `search` - optional, string or regexp for matching the URL passed to `window.open` call; defaults to search all `window.open` call\n * - `replacement` - optional, string to return prop value or property instead of window.open; defaults to return noopFunc\n *\n * **Example**\n * 1. Prevent all `window.open` calls:\n * ```\n * example.org#%#//scriptlet('prevent-window-open')\n * ```\n *\n * 2. Prevent `window.open` for all URLs containing `example`:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '1', 'example')\n * ```\n *\n * 3. Prevent `window.open` for all URLs matching RegExp `/example\\./`:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '1', '/example\\./')\n * ```\n *\n * 4. Prevent `window.open` for all URLs **NOT** containing `example`:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '0', 'example')\n * ```\n * 5. Prevent all `window.open` calls and return 'trueFunc' instead of it if website checks it:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '', '', 'trueFunc')\n * ```\n * 6. Prevent all `window.open` and returns callback\n * which returns object with property 'propName'=noopFunc\n * as a property of window.open if website checks it:\n * ```\n * example.org#%#//scriptlet('prevent-window-open', '1', '', '{propName=noopFunc}')\n * ```\n */\n/* eslint-enable max-len */\nexport function preventWindowOpen(source, match = 1, search, replacement) {\n // Default value of 'match' is needed to prevent all `window.open` calls\n // if the scriptlet is used without parameters\n const nativeOpen = window.open;\n\n // unary plus converts 'match' to a number\n // e.g.: +'1' -> 1; +false -> 0\n match = +match > 0;\n\n search = search\n ? toRegExp(search)\n : toRegExp('/.?/');\n\n // eslint-disable-next-line consistent-return\n const openWrapper = (str, ...args) => {\n if (match !== search.test(str)) {\n return nativeOpen.apply(window, [str, ...args]);\n }\n\n hit(source);\n\n let result;\n\n // defaults to return noopFunc instead of window.open\n if (!replacement) {\n result = noopFunc;\n } else if (replacement === 'trueFunc') {\n result = trueFunc;\n } else if (replacement.indexOf('=') > -1) {\n // We should return noopFunc instead of window.open\n // but with some property if website checks it (examples 5, 6)\n // https://github.com/AdguardTeam/Scriptlets/issues/71\n const isProp = startsWith(replacement, '{') && endsWith(replacement, '}');\n if (isProp) {\n const propertyPart = replacement.slice(1, -1);\n const propertyName = substringBefore(propertyPart, '=');\n const propertyValue = substringAfter(propertyPart, '=');\n if (propertyValue === 'noopFunc') {\n result = () => {\n const resObj = { };\n resObj[propertyName] = noopFunc;\n return resObj;\n };\n }\n }\n }\n\n return result;\n };\n\n window.open = openWrapper;\n}\n\npreventWindowOpen.names = [\n 'prevent-window-open',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'window.open-defuser.js',\n 'ubo-window.open-defuser.js',\n 'ubo-window.open-defuser',\n];\n\npreventWindowOpen.injections = [\n toRegExp,\n startsWith,\n endsWith,\n substringBefore,\n substringAfter,\n hit,\n noopFunc,\n trueFunc,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet abort-current-inline-script\n *\n * @description\n * Aborts an inline script when it attempts to **read** the specified property\n * AND when the contents of the `\n * ```\n *\n * 3. Aborts inline scripts which are trying to access `window.alert` and match this regexp: `/Hello.+world/`.\n * ```\n * example.org#%#//scriptlet('abort-current-inline-script', 'alert', '/Hello.+world/')\n * ```\n *\n * For instance, the following scripts will be aborted:\n * ```html\n * \n * ```\n * ```html\n * \n * ```\n *\n * This script will not be aborted:\n * ```html\n * \n * ```\n */\n/* eslint-enable max-len */\nexport function abortCurrentInlineScript(source, property, search) {\n const searchRegexp = search ? toRegExp(search) : toRegExp('/.?/');\n const rid = randomId();\n\n const getCurrentScript = () => {\n if (!document.currentScript) { // eslint-disable-line compat/compat\n const scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n }\n return document.currentScript; // eslint-disable-line compat/compat\n };\n\n const ourScript = getCurrentScript();\n\n const abort = () => {\n const scriptEl = getCurrentScript();\n if (!scriptEl) {\n return;\n }\n let content = scriptEl.textContent;\n\n // We are using Node.prototype.textContent property descriptor\n // to get the real script content\n // even when document.currentScript.textContent is replaced.\n // https://github.com/AdguardTeam/Scriptlets/issues/57#issuecomment-593638991\n try {\n const textContentGetter = Object.getOwnPropertyDescriptor(Node.prototype, 'textContent').get;\n content = textContentGetter.call(scriptEl);\n } catch (e) { } // eslint-disable-line no-empty\n\n if (scriptEl instanceof HTMLScriptElement\n && content.length > 0\n && scriptEl !== ourScript\n && searchRegexp.test(content)) {\n hit(source);\n throw new ReferenceError(rid);\n }\n };\n\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n\n // The scriptlet might be executed before the chain property has been created\n // (for instance, document.body before the HTML body was loaded).\n // In this case we're checking whether the base element exists or not\n // and if not, we simply exit without overriding anything.\n // e.g. https://github.com/AdguardTeam/Scriptlets/issues/57#issuecomment-575841092\n if (base instanceof Object === false && base === null) {\n const props = property.split('.');\n const propIndex = props.indexOf(prop);\n const baseName = props[propIndex - 1];\n console.log(`The scriptlet had been executed before the ${baseName} was loaded.`); // eslint-disable-line no-console\n return;\n }\n\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n let currentValue = base[prop];\n setPropertyAccess(base, prop, {\n set: (value) => {\n abort();\n currentValue = value;\n },\n get: () => {\n abort();\n return currentValue;\n },\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\nabortCurrentInlineScript.names = [\n 'abort-current-inline-script',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'abort-current-inline-script.js',\n 'ubo-abort-current-inline-script.js',\n 'acis.js',\n 'ubo-acis.js',\n 'ubo-abort-current-inline-script',\n 'ubo-acis',\n 'abp-abort-current-inline-script',\n];\n\nabortCurrentInlineScript.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n];\n","import {\n hit,\n noopFunc,\n trueFunc,\n falseFunc,\n getPropertyInChain,\n setPropertyAccess,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet set-constant\n *\n * @description\n * Creates a constant property and assigns it one of the values from the predefined list.\n *\n * > Actually, it's not a constant. Please note, that it can be rewritten with a value of a different type.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#set-constantjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('set-constant', property, value[, stack])\n * ```\n *\n * - `property` - required, path to a property (joined with `.` if needed). The property must be attached to `window`.\n * - `value` - required. Possible values:\n * - positive decimal integer `<= 32767`\n * - one of the predefined constants:\n * - `undefined`\n * - `false`\n * - `true`\n * - `null`\n * - `noopFunc` - function with empty body\n * - `trueFunc` - function returning true\n * - `falseFunc` - function returning false\n * - `''` - empty string\n * - `-1` - number value `-1`\n * - `stack` - optional, string or regular expression that must match the current function call stack trace\n *\n * **Examples**\n * ```\n * ! window.firstConst === false // this comparision will return false\n * example.org#%#//scriptlet('set-constant', 'firstConst', 'false')\n *\n * ! window.second() === trueFunc // 'second' call will return true\n * example.org#%#//scriptlet('set-constant', 'secondConst', 'trueFunc')\n *\n * ! document.third() === falseFunc // 'third' call will return false if the method is related to checking.js\n * example.org#%#//scriptlet('set-constant', 'secondConst', 'trueFunc', 'checking.js')\n * ```\n */\n/* eslint-enable max-len */\nexport function setConstant(source, property, value, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n\n let constantValue;\n if (value === 'undefined') {\n constantValue = undefined;\n } else if (value === 'false') {\n constantValue = false;\n } else if (value === 'true') {\n constantValue = true;\n } else if (value === 'null') {\n constantValue = null;\n } else if (value === 'noopFunc') {\n constantValue = noopFunc;\n } else if (value === 'trueFunc') {\n constantValue = trueFunc;\n } else if (value === 'falseFunc') {\n constantValue = falseFunc;\n } else if (/^\\d+$/.test(value)) {\n constantValue = parseFloat(value);\n if (nativeIsNaN(constantValue)) {\n return;\n }\n if (Math.abs(constantValue) > 0x7FFF) {\n return;\n }\n } else if (value === '-1') {\n constantValue = -1;\n } else if (value === '') {\n constantValue = '';\n } else {\n return;\n }\n\n let canceled = false;\n const mustCancel = (value) => {\n if (canceled) {\n return canceled;\n }\n canceled = value !== undefined\n && constantValue !== undefined\n && typeof value !== typeof constantValue;\n return canceled;\n };\n\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n\n // The scriptlet might be executed before the chain property has been created.\n // In this case we're checking whether the base element exists or not\n // and if not, we simply exit without overriding anything\n if (base instanceof Object === false && base === null) {\n // log the reason only while debugging\n if (source.verbose) {\n const props = property.split('.');\n const propIndex = props.indexOf(prop);\n const baseName = props[propIndex - 1];\n console.log(`set-constant failed because the property '${baseName}' does not exist`); // eslint-disable-line no-console\n }\n return;\n }\n\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n if (mustCancel(base[prop])) { return; }\n\n hit(source);\n setPropertyAccess(base, prop, {\n get: () => constantValue,\n set: (a) => {\n if (mustCancel(a)) {\n constantValue = a;\n }\n },\n });\n };\n\n setChainPropAccess(window, property);\n}\n\nsetConstant.names = [\n 'set-constant',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'set-constant.js',\n 'ubo-set-constant.js',\n 'set.js',\n 'ubo-set.js',\n 'ubo-set-constant',\n 'ubo-set',\n];\nsetConstant.injections = [\n getPropertyInChain,\n setPropertyAccess,\n toRegExp,\n matchStackTrace,\n hit,\n noopFunc,\n trueFunc,\n falseFunc,\n];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet remove-cookie\n *\n * @description\n * Removes current page cookies by passed string matching with name. For current domain and subdomains. Runs on load and before unload.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#cookie-removerjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('remove-cookie'[, match])\n * ```\n *\n * - `match` - optional, string or regex matching the cookie name. If not specified all accessible cookies will be removed.\n *\n * **Examples**\n * 1. Removes all cookies:\n * ```\n * example.org#%#//scriptlet('remove-cookie')\n * ```\n *\n * 2. Removes cookies which name contains `example` string.\n * ```\n * example.org#%#//scriptlet('remove-cookie', 'example')\n * ```\n *\n * For instance this cookie will be removed\n * ```javascript\n * document.cookie = '__example=randomValue';\n * ```\n */\n/* eslint-enable max-len */\nexport function removeCookie(source, match) {\n const regex = match ? toRegExp(match) : toRegExp('/.?/');\n\n const removeCookieFromHost = (cookieName, hostName) => {\n const cookieSpec = `${cookieName}=`;\n const domain1 = `; domain=${hostName}`;\n const domain2 = `; domain=.${hostName}`;\n const path = '; path=/';\n const expiration = '; expires=Thu, 01 Jan 1970 00:00:00 GMT';\n document.cookie = cookieSpec + expiration;\n document.cookie = cookieSpec + domain1 + expiration;\n document.cookie = cookieSpec + domain2 + expiration;\n document.cookie = cookieSpec + path + expiration;\n document.cookie = cookieSpec + domain1 + path + expiration;\n document.cookie = cookieSpec + domain2 + path + expiration;\n hit(source);\n };\n\n const rmCookie = () => {\n document.cookie.split(';').forEach((cookieStr) => {\n const pos = cookieStr.indexOf('=');\n if (pos === -1) {\n return;\n }\n\n const cookieName = cookieStr.slice(0, pos).trim();\n if (!regex.test(cookieName)) {\n return;\n }\n\n const hostParts = document.location.hostname.split('.');\n for (let i = 0; i <= hostParts.length - 1; i += 1) {\n const hostName = hostParts.slice(i).join('.');\n if (hostName) {\n removeCookieFromHost(cookieName, hostName);\n }\n }\n });\n };\n rmCookie();\n window.addEventListener('beforeunload', rmCookie);\n}\n\nremoveCookie.names = [\n 'remove-cookie',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'cookie-remover.js',\n 'ubo-cookie-remover.js',\n 'ubo-cookie-remover',\n];\n\nremoveCookie.injections = [toRegExp, hit];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-addEventListener\n *\n * @description\n * Prevents adding event listeners for the specified events and callbacks.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#addeventlistener-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-addEventListener'[, eventSearch[, functionSearch]])\n * ```\n *\n * - `eventSearch` - optional, string or regex matching the event name. If not specified, the scriptlets prevents all event listeners\n * - `functionSearch` - optional, string or regex matching the event listener function body. If not set, the scriptlet prevents all event listeners with event name matching `eventSearch`\n *\n * **Examples**\n * 1. Prevent all `click` listeners:\n * ```\n * example.org#%#//scriptlet('prevent-addEventListener', 'click')\n * ```\n\n2. Prevent 'click' listeners with the callback body containing `searchString`.\n * ```\n * example.org#%#//scriptlet('prevent-addEventListener', 'click', 'searchString')\n * ```\n *\n * For instance, this listener will not be called:\n * ```javascript\n * el.addEventListener('click', () => {\n * window.test = 'searchString';\n * });\n * ```\n */\n/* eslint-enable max-len */\nexport function preventAddEventListener(source, eventSearch, funcSearch) {\n const eventSearchRegexp = eventSearch ? toRegExp(eventSearch) : toRegExp('/.?/');\n const funcSearchRegexp = funcSearch ? toRegExp(funcSearch) : toRegExp('/.?/');\n\n const nativeAddEventListener = window.EventTarget.prototype.addEventListener;\n function addEventListenerWrapper(eventName, callback, ...args) {\n // The scriptlet might cause a website broke\n // if the website uses test addEventListener with callback = null\n // https://github.com/AdguardTeam/Scriptlets/issues/76\n let funcToCheck = callback;\n if (callback && typeof callback === 'function') {\n funcToCheck = callback.toString();\n }\n\n if (eventSearchRegexp.test(eventName.toString()) && funcSearchRegexp.test(funcToCheck)) {\n hit(source);\n return undefined;\n }\n return nativeAddEventListener.apply(this, [eventName, callback, ...args]);\n }\n\n window.EventTarget.prototype.addEventListener = addEventListenerWrapper;\n}\n\npreventAddEventListener.names = [\n 'prevent-addEventListener',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'addEventListener-defuser.js',\n 'ubo-addEventListener-defuser.js',\n 'aeld.js',\n 'ubo-aeld.js',\n 'ubo-addEventListener-defuser',\n 'ubo-aeld',\n];\n\npreventAddEventListener.injections = [toRegExp, hit];\n","/* eslint-disable consistent-return, no-eval */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet prevent-bab\n *\n * @description\n * Prevents BlockAdblock script from detecting an ad blocker.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#bab-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-bab')\n * ```\n */\nexport function preventBab(source) {\n const nativeSetTimeout = window.setTimeout;\n const babRegex = /\\.bab_elementid.$/;\n\n window.setTimeout = (callback, ...args) => {\n if (typeof callback !== 'string' || !babRegex.test(callback)) {\n return nativeSetTimeout.call(this, callback, ...args);\n }\n hit(source);\n };\n\n const signatures = [\n ['blockadblock'],\n ['babasbm'],\n [/getItem\\('babn'\\)/],\n ['getElementById', 'String.fromCharCode', 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 'charAt', 'DOMContentLoaded', 'AdBlock', 'addEventListener', 'doScroll', 'fromCharCode', '<<2|r>>4', 'sessionStorage', 'clientWidth', 'localStorage', 'Math', 'random'],\n ];\n const check = (str) => {\n for (let i = 0; i < signatures.length; i += 1) {\n const tokens = signatures[i];\n let match = 0;\n for (let j = 0; j < tokens.length; j += 1) {\n const token = tokens[j];\n const found = token instanceof RegExp ? token.test(str) : str.indexOf(token) > -1;\n if (found) {\n match += 1;\n }\n }\n if (match / tokens.length >= 0.8) {\n return true;\n }\n }\n return false;\n };\n\n const nativeEval = window.eval;\n window.eval = (str) => {\n if (!check(str)) {\n return nativeEval(str);\n }\n hit(source);\n const bodyEl = document.body;\n if (bodyEl) {\n bodyEl.style.removeProperty('visibility');\n }\n const el = document.getElementById('babasbmsgx');\n if (el) {\n el.parentNode.removeChild(el);\n }\n };\n}\n\npreventBab.names = [\n 'prevent-bab',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'nobab.js',\n 'ubo-nobab.js',\n 'bab-defuser.js',\n 'ubo-bab-defuser.js',\n 'ubo-nobab',\n 'ubo-bab-defuser',\n];\n\npreventBab.injections = [hit];\n","/* eslint-disable no-unused-vars, no-extra-bind, func-names */\nimport { hit, noopFunc } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet nowebrtc\n *\n * @description\n * Disables WebRTC by overriding `RTCPeerConnection`. The overriden function will log every attempt to create a new connection.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#nowebrtcjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('nowebrtc')\n * ```\n */\n/* eslint-enable max-len */\nexport function nowebrtc(source) {\n let propertyName = '';\n if (window.RTCPeerConnection) {\n propertyName = 'RTCPeerConnection';\n } else if (window.webkitRTCPeerConnection) {\n propertyName = 'webkitRTCPeerConnection';\n }\n\n if (propertyName === '') {\n return;\n }\n\n const rtcReplacement = (config) => {\n hit(source, `Document tried to create an RTCPeerConnection: ${config}`);\n };\n rtcReplacement.prototype = {\n close: noopFunc,\n createDataChannel: noopFunc,\n createOffer: noopFunc,\n setRemoteDescription: noopFunc,\n };\n const rtc = window[propertyName];\n window[propertyName] = rtcReplacement;\n if (rtc.prototype) {\n rtc.prototype.createDataChannel = function (a, b) {\n return {\n close: noopFunc,\n send: noopFunc,\n };\n }.bind(null);\n }\n}\n\nnowebrtc.names = [\n 'nowebrtc',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'nowebrtc.js',\n 'ubo-nowebrtc.js',\n 'ubo-nowebrtc',\n];\n\nnowebrtc.injections = [hit, noopFunc];\n","/* eslint-disable no-console */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet log-addEventListener\n *\n * @description\n * Logs all addEventListener calls to the console.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#addeventlistener-loggerjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('log-addEventListener')\n * ```\n */\nexport function logAddEventListener(source) {\n const log = console.log.bind(console);\n const nativeAddEventListener = window.EventTarget.prototype.addEventListener;\n function addEventListenerWrapper(eventName, callback, ...args) {\n hit(source);\n // The scriptlet might cause a website broke\n // if the website uses test addEventListener with callback = null\n // https://github.com/AdguardTeam/Scriptlets/issues/76\n let callbackToLog = callback;\n if (callback && typeof callback === 'function') {\n callbackToLog = callback.toString();\n }\n log(`addEventListener(\"${eventName}\", ${callbackToLog})`);\n return nativeAddEventListener.apply(this, [eventName, callback, ...args]);\n }\n window.EventTarget.prototype.addEventListener = addEventListenerWrapper;\n}\n\nlogAddEventListener.names = [\n 'log-addEventListener',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'addEventListener-logger.js',\n 'ubo-addEventListener-logger.js',\n 'aell.js',\n 'ubo-aell.js',\n 'ubo-addEventListener-logger',\n 'ubo-aell',\n];\n\nlogAddEventListener.injections = [hit];\n","/* eslint-disable no-console, no-eval */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet log-eval\n *\n * @description\n * Logs all `eval()` or `new Function()` calls to the console.\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('log-eval')\n * ```\n */\nexport function logEval(source) {\n const log = console.log.bind(console);\n // wrap eval function\n const nativeEval = window.eval;\n function evalWrapper(str) {\n hit(source);\n log(`eval(\"${str}\")`);\n return nativeEval(str);\n }\n window.eval = evalWrapper;\n\n // wrap new Function\n const nativeFunction = window.Function;\n\n function FunctionWrapper(...args) {\n hit(source);\n log(`new Function(${args.join(', ')})`);\n return nativeFunction.apply(this, [...args]);\n }\n\n FunctionWrapper.prototype = Object.create(nativeFunction.prototype);\n FunctionWrapper.prototype.constructor = FunctionWrapper;\n\n window.Function = FunctionWrapper;\n}\n\nlogEval.names = [\n 'log-eval',\n];\n\nlogEval.injections = [hit];\n","/**\n * @scriptlet log\n *\n * @description\n * A simple scriptlet which only purpose is to print arguments to console.\n * This scriptlet can be helpful for debugging and troubleshooting other scriptlets.\n *\n * **Example**\n * ```\n * example.org#%#//scriptlet('log', 'arg1', 'arg2')\n * ```\n */\nexport function log(...args) {\n console.log(args); // eslint-disable-line no-console\n}\nlog.names = ['log'];\n","/* eslint-disable no-eval, no-extra-bind */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet noeval\n *\n * @description\n * Prevents page to use eval.\n * Notifies about attempts in the console\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#noevaljs-\n *\n * It also can be used as `$redirect` rules sometimes.\n * See [redirect description](../wiki/about-redirects.md#noeval).\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('noeval')\n * ```\n */\nexport function noeval(source) {\n window.eval = function evalWrapper(s) {\n hit(source, `AdGuard has prevented eval:\\n${s}`);\n }.bind();\n}\n\nnoeval.names = [\n 'noeval',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'noeval.js',\n 'silent-noeval.js',\n 'ubo-noeval.js',\n 'ubo-silent-noeval.js',\n 'ubo-noeval',\n 'ubo-silent-noeval',\n];\n\nnoeval.injections = [hit];\n","/* eslint-disable no-eval, no-extra-bind, func-names */\n\nimport { toRegExp, hit } from '../helpers';\n\n/**\n * @scriptlet prevent-eval-if\n *\n * @description\n * Prevents page to use eval matching payload.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#noeval-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-eval-if'[, search])\n * ```\n *\n * - `search` - optional, string or regexp for matching stringified eval payload.\n * If 'search is not specified — all stringified eval payload will be matched\n *\n * **Examples**\n * ```\n * ! Prevents eval if it matches 'test'\n * example.org#%#//scriptlet('prevent-eval-if', 'test')\n * ```\n *\n * @param {string|RegExp} [search] string or regexp matching stringified eval payload\n */\nexport function preventEvalIf(source, search) {\n search = search ? toRegExp(search) : toRegExp('/.?/');\n\n const nativeEval = window.eval;\n window.eval = function (payload) {\n if (!search.test(payload.toString())) {\n return nativeEval.call(window, payload);\n }\n hit(source, payload);\n return undefined;\n }.bind(window);\n}\n\npreventEvalIf.names = [\n 'prevent-eval-if',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'noeval-if.js',\n 'ubo-noeval-if.js',\n 'ubo-noeval-if',\n];\n\npreventEvalIf.injections = [toRegExp, hit];\n","/* eslint-disable no-console, func-names, no-multi-assign */\nimport { hit, noopFunc, noopThis } from '../helpers';\n\n/**\n * @scriptlet prevent-fab-3.2.0\n *\n * @description\n * Prevents execution of the FAB script v3.2.0.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#fuckadblockjs-320-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-fab-3.2.0')\n * ```\n */\nexport function preventFab(source) {\n hit(source);\n\n // redefines Fab function for adblock detection\n const Fab = function () {};\n Fab.prototype.check = noopFunc;\n Fab.prototype.clearEvent = noopFunc;\n Fab.prototype.emitEvent = noopFunc;\n Fab.prototype.on = function (a, b) {\n if (!a) {\n b();\n }\n return this;\n };\n Fab.prototype.onDetected = noopThis;\n Fab.prototype.onNotDetected = function (a) {\n a();\n return this;\n };\n Fab.prototype.setOption = noopFunc;\n\n const fab = new Fab();\n const getSetFab = {\n get() { return Fab; },\n set() {},\n };\n const getsetfab = {\n get() { return fab; },\n set() {},\n };\n\n // redefined Fab data properties which if 'FuckAdBlock' variable exists\n if (Object.prototype.hasOwnProperty.call(window, 'FuckAdBlock')) {\n window.FuckAdBlock = Fab;\n } else {\n // or redefined Fab accessor properties\n Object.defineProperty(window, 'FuckAdBlock', getSetFab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'BlockAdBlock')) {\n window.BlockAdBlock = Fab;\n } else {\n Object.defineProperty(window, 'BlockAdBlock', getSetFab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'SniffAdBlock')) {\n window.SniffAdBlock = Fab;\n } else {\n Object.defineProperty(window, 'SniffAdBlock', getSetFab);\n }\n\n if (Object.prototype.hasOwnProperty.call(window, 'fuckAdBlock')) {\n window.fuckAdBlock = fab;\n } else {\n Object.defineProperty(window, 'fuckAdBlock', getsetfab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'blockAdBlock')) {\n window.blockAdBlock = fab;\n } else {\n Object.defineProperty(window, 'blockAdBlock', getsetfab);\n }\n if (Object.prototype.hasOwnProperty.call(window, 'sniffAdBlock')) {\n window.sniffAdBlock = fab;\n } else {\n Object.defineProperty(window, 'sniffAdBlock', getsetfab);\n }\n}\n\npreventFab.names = [\n 'prevent-fab-3.2.0',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'nofab.js',\n 'ubo-nofab.js',\n 'fuckadblock.js-3.2.0',\n 'ubo-fuckadblock.js-3.2.0',\n 'ubo-nofab',\n];\n\npreventFab.injections = [hit, noopFunc, noopThis];\n","/* eslint-disable no-console, func-names, no-multi-assign */\nimport { hit } from '../helpers';\n\n/**\n * @scriptlet set-popads-dummy\n *\n * @description\n * Sets static properties PopAds and popns.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#popads-dummyjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('set-popads-dummy')\n * ```\n */\nexport function setPopadsDummy(source) {\n delete window.PopAds;\n delete window.popns;\n Object.defineProperties(window, {\n PopAds: {\n get: () => {\n hit(source);\n return {};\n },\n },\n popns: {\n get: () => {\n hit(source);\n return {};\n },\n },\n });\n}\n\nsetPopadsDummy.names = [\n 'set-popads-dummy',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'popads-dummy.js',\n 'ubo-popads-dummy.js',\n 'ubo-popads-dummy',\n];\n\nsetPopadsDummy.injections = [hit];\n","import {\n hit, createOnErrorHandler, randomId,\n} from '../helpers';\n\n/**\n * @scriptlet prevent-popads-net\n *\n * @description\n * Aborts on property write (PopAds, popns), throws reference error with random id.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#popadsnetjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-popads-net')\n * ```\n */\nexport function preventPopadsNet(source) {\n const rid = randomId();\n\n const throwError = () => {\n throw new ReferenceError(rid);\n };\n\n delete window.PopAds;\n delete window.popns;\n Object.defineProperties(window, {\n PopAds: { set: throwError },\n popns: { set: throwError },\n });\n\n window.onerror = createOnErrorHandler(rid).bind();\n hit(source);\n}\n\npreventPopadsNet.names = [\n 'prevent-popads-net',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'popads.net.js',\n 'ubo-popads.net.js',\n 'ubo-popads.net',\n];\n\npreventPopadsNet.injections = [createOnErrorHandler, randomId, hit];\n","/* eslint-disable func-names */\nimport { hit, setPropertyAccess } from '../helpers';\n\n/**\n * @scriptlet prevent-adfly\n *\n * @description\n * Prevents anti-adblock scripts on adfly short links.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#adfly-defuserjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-adfly')\n * ```\n */\nexport function preventAdfly(source) {\n const isDigit = (data) => /^\\d$/.test(data);\n const handler = function (encodedURL) {\n let evenChars = '';\n let oddChars = '';\n for (let i = 0; i < encodedURL.length; i += 1) {\n if (i % 2 === 0) {\n evenChars += encodedURL.charAt(i);\n } else {\n oddChars = encodedURL.charAt(i) + oddChars;\n }\n }\n\n let data = (evenChars + oddChars).split('');\n\n for (let i = 0; i < data.length; i += 1) {\n if (isDigit(data[i])) {\n for (let ii = i + 1; ii < data.length; ii += 1) {\n if (isDigit(data[ii])) {\n // eslint-disable-next-line no-bitwise\n const temp = parseInt(data[i], 10) ^ parseInt(data[ii], 10);\n if (temp < 10) {\n data[i] = temp.toString();\n }\n i = ii;\n break;\n }\n }\n }\n }\n data = data.join('');\n const decodedURL = window.atob(data).slice(16, -16);\n /* eslint-disable compat/compat */\n if (window.stop) {\n window.stop();\n }\n /* eslint-enable compat/compat */\n window.onbeforeunload = null;\n window.location.href = decodedURL;\n };\n\n let val;\n // Do not apply handler more than one time\n let applyHandler = true;\n\n const result = setPropertyAccess(window, 'ysmm', {\n configurable: false,\n set: (value) => {\n if (applyHandler) {\n applyHandler = false;\n try {\n if (typeof value === 'string') {\n handler(value);\n }\n } catch (err) { } // eslint-disable-line no-empty\n }\n val = value;\n },\n get: () => val,\n });\n\n if (result) {\n hit(source);\n } else {\n window.console.error('Failed to set up prevent-adfly scriptlet');\n }\n}\n\npreventAdfly.names = [\n 'prevent-adfly',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'adfly-defuser.js',\n 'ubo-adfly-defuser.js',\n 'ubo-adfly-defuser',\n];\n\npreventAdfly.injections = [setPropertyAccess, hit];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n noopFunc,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet debug-on-property-read\n *\n * @description\n * This scriptlet is basically the same as [abort-on-property-read](#abort-on-property-read), but instead of aborting it starts the debugger.\n *\n * **It is not supposed to be used in production filter lists!**\n *\n * **Syntax**\n * ```\n * ! Debug script if it tries to access `window.alert`\n * example.org#%#//scriptlet('debug-on-property-read', 'alert')\n * ! of `window.open`\n * example.org#%#//scriptlet('debug-on-property-read', 'open')\n * ```\n */\n/* eslint-enable max-len */\nexport function debugOnPropertyRead(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n const rid = randomId();\n const abort = () => {\n hit(source);\n debugger; // eslint-disable-line no-debugger\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, {\n get: abort,\n set: noopFunc,\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\ndebugOnPropertyRead.names = [\n 'debug-on-property-read',\n];\ndebugOnPropertyRead.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n noopFunc,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet debug-on-property-write\n *\n * @description\n * This scriptlet is basically the same as [abort-on-property-write](#abort-on-property-write), but instead of aborting it starts the debugger.\n *\n * **It is not supposed to be used in production filter lists!**\n *\n * **Syntax**\n * ```\n * ! Aborts script when it tries to write in property `window.test`\n * example.org#%#//scriptlet('debug-on-property-write', 'test')\n * ```\n */\n/* eslint-enable max-len */\nexport function debugOnPropertyWrite(source, property, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!property\n || !matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n const rid = randomId();\n const abort = () => {\n hit(source);\n debugger; // eslint-disable-line no-debugger\n };\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n setPropertyAccess(base, prop, { set: abort });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid).bind();\n}\n\ndebugOnPropertyWrite.names = [\n 'debug-on-property-write',\n];\n\ndebugOnPropertyWrite.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n createOnErrorHandler,\n hit,\n toRegExp,\n matchStackTrace,\n];\n","import {\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet debug-current-inline-script\n *\n * @description\n * This scriptlet is basically the same as [abort-current-inline-script](#abort-current-inline-script), but instead of aborting it starts the debugger.\n *\n * **It is not supposed to be used in production filter lists!**\n *\n * **Syntax**\n *```\n * ! Aborts script when it tries to access `window.alert`\n * example.org#%#//scriptlet('debug-current-inline-script', 'alert')\n * ```\n */\n/* eslint-enable max-len */\nexport function debugCurrentInlineScript(source, property, search = null) {\n const regex = search ? toRegExp(search) : null;\n const rid = randomId();\n\n const getCurrentScript = () => {\n if (!document.currentScript) { // eslint-disable-line compat/compat\n const scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n }\n return document.currentScript; // eslint-disable-line compat/compat\n };\n\n const ourScript = getCurrentScript();\n\n const abort = () => {\n const scriptEl = getCurrentScript();\n if (scriptEl instanceof HTMLScriptElement\n && scriptEl.textContent.length > 0\n && scriptEl !== ourScript\n && (!regex || regex.test(scriptEl.textContent))) {\n hit(source);\n debugger; // eslint-disable-line no-debugger\n }\n };\n\n const setChainPropAccess = (owner, property) => {\n const chainInfo = getPropertyInChain(owner, property);\n let { base } = chainInfo;\n const { prop, chain } = chainInfo;\n if (chain) {\n const setter = (a) => {\n base = a;\n if (a instanceof Object) {\n setChainPropAccess(a, chain);\n }\n };\n Object.defineProperty(owner, prop, {\n get: () => base,\n set: setter,\n });\n return;\n }\n\n let currentValue = base[prop];\n setPropertyAccess(base, prop, {\n set: (value) => {\n abort();\n currentValue = value;\n },\n get: () => {\n abort();\n return currentValue;\n },\n });\n };\n\n setChainPropAccess(window, property);\n\n window.onerror = createOnErrorHandler(rid)\n .bind();\n}\n\ndebugCurrentInlineScript.names = [\n 'debug-current-inline-script',\n];\n\ndebugCurrentInlineScript.injections = [\n randomId,\n setPropertyAccess,\n getPropertyInChain,\n toRegExp,\n createOnErrorHandler,\n hit,\n];\n","import { hit, observeDOMChanges } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet remove-attr\n *\n * @description\n * Removes the specified attributes from DOM nodes. This scriptlet runs once when the page loads\n * and after that periodically in order to DOM tree changes.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#remove-attrjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('remove-attr', attrs[, selector])\n * ```\n *\n * - `attrs` — required, attribute or list of attributes joined by '|'\n * - `selector` — optional, CSS selector, specifies DOM nodes from which the attributes will be removed\n *\n * **Examples**\n * 1. Removes by attribute\n * ```\n * example.org#%#//scriptlet('remove-attr', 'example|test')\n * ```\n *\n * ```html\n * \n *
Some text
\n *\n * \n *
Some text
\n * ```\n *\n * 2. Removes with specified selector\n * ```\n * example.org#%#//scriptlet('remove-attr', 'example', 'div[class=\"inner\"]')\n * ```\n *\n * ```html\n * \n *
\n *
Some text
\n *
\n *\n * \n *
\n *
Some text
\n *
\n * ```\n */\n/* eslint-enable max-len */\nexport function removeAttr(source, attrs, selector) {\n if (!attrs) { return; }\n attrs = attrs.split(/\\s*\\|\\s*/);\n if (!selector) {\n selector = `[${attrs.join('],[')}]`;\n }\n\n const rmattr = () => {\n const nodes = [].slice.call(document.querySelectorAll(selector));\n let removed = false;\n nodes.forEach((node) => {\n attrs.forEach((attr) => {\n node.removeAttribute(attr);\n removed = true;\n });\n });\n if (removed) {\n hit(source);\n }\n };\n\n rmattr();\n\n // 'true' for observing attributes\n observeDOMChanges(rmattr, true);\n}\n\nremoveAttr.names = [\n 'remove-attr',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'remove-attr.js',\n 'ubo-remove-attr.js',\n 'ra.js',\n 'ubo-ra.js',\n 'ubo-remove-attr',\n 'ubo-ra',\n];\n\nremoveAttr.injections = [hit, observeDOMChanges];\n","import { hit, observeDOMChanges } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet remove-class\n *\n * @description\n * Removes the specified classes from DOM nodes. This scriptlet runs once after the page loads\n * and after that periodically in order to DOM tree changes.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#remove-classjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('remove-class', classes[, selector])\n * ```\n *\n * - `classes` — required, class or list of classes separated by '|'\n * - `selector` — optional, CSS selector, specifies DOM nodes from which the classes will be removed.\n * If there is no `selector`, each class of `classes` independently will be removed from all nodes which has one\n *\n * **Examples**\n * 1. Removes by classes\n * ```\n * example.org#%#//scriptlet('remove-class', 'example|test')\n * ```\n *\n * ```html\n * \n *
Some text
\n *
Some text
\n *
Some text
\n *\n * \n *
Some text
\n *
Some text
\n *
Some text
\n * ```\n *\n * 2. Removes with specified selector\n * ```\n * example.org#%#//scriptlet('remove-class', 'branding', 'div[class^=\"inner\"]')\n * ```\n *\n * ```html\n * \n *
\n *
Some text
\n *
\n *\n * \n *
\n *
Some text
\n *
\n * ```\n */\n/* eslint-enable max-len */\n\nexport function removeClass(source, classNames, selector) {\n if (!classNames) { return; }\n classNames = classNames.split(/\\s*\\|\\s*/);\n let selectors = [];\n if (!selector) {\n selectors = classNames.map((className) => {\n return `.${className}`;\n });\n }\n\n const removeClassHandler = () => {\n const nodes = new Set();\n if (selector) {\n const foundedNodes = [].slice.call(document.querySelectorAll(selector));\n foundedNodes.forEach((n) => nodes.add(n));\n } else if (selectors.length > 0) {\n selectors.forEach((s) => {\n const elements = document.querySelectorAll(s);\n for (let i = 0; i < elements.length; i += 1) {\n const element = elements[i];\n nodes.add(element);\n }\n });\n }\n\n let removed = false;\n\n nodes.forEach((node) => {\n classNames.forEach((className) => {\n if (node.classList.contains(className)) {\n node.classList.remove(className);\n removed = true;\n }\n });\n });\n\n if (removed) {\n hit(source);\n }\n };\n\n removeClassHandler();\n\n const CLASS_ATTR_NAME = ['class'];\n // 'true' for observing attributes\n // 'class' for observing only classes\n observeDOMChanges(removeClassHandler, true, CLASS_ATTR_NAME);\n}\n\nremoveClass.names = [\n 'remove-class',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'remove-class.js',\n 'ubo-remove-class.js',\n 'rc.js',\n 'ubo-rc.js',\n 'ubo-remove-class',\n 'ubo-rc',\n];\n\nremoveClass.injections = [hit, observeDOMChanges];\n","import { hit } from '../helpers';\n\n/**\n * @scriptlet disable-newtab-links\n *\n * @description\n * Prevents opening new tabs and windows if there is `target` attribute in element.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#disable-newtab-linksjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('disable-newtab-links')\n * ```\n */\nexport function disableNewtabLinks(source) {\n document.addEventListener('click', (ev) => {\n let { target } = ev;\n while (target !== null) {\n if (target.localName === 'a' && target.hasAttribute('target')) {\n ev.stopPropagation();\n ev.preventDefault();\n hit(source);\n break;\n }\n target = target.parentNode;\n }\n });\n}\n\ndisableNewtabLinks.names = [\n 'disable-newtab-links',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'disable-newtab-links.js',\n 'ubo-disable-newtab-links.js',\n 'ubo-disable-newtab-links',\n];\n\ndisableNewtabLinks.injections = [\n hit,\n];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet adjust-setInterval\n *\n * @description\n * Adjusts interval for specified setInterval() callbacks.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#nano-setinterval-boosterjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('adjust-setInterval'[, match [, interval[, boost]]])\n * ```\n *\n * - `match` - optional, string/regular expression, matching in stringified callback function\n * - `interval` - optional, defaults to 1000, decimal integer, matching setInterval delay\n * - `boost` - optional, default to 0.05, float, capped at 50 times for up and down (0.02...50), interval multiplier\n *\n * **Examples**\n * 1. Adjust all setInterval() x20 times where interval equal 1000ms:\n * ```\n * example.org#%#//scriptlet('adjust-setInterval')\n * ```\n *\n * 2. Adjust all setInterval() x20 times where callback mathed with `example` and interval equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', 'example')\n * ```\n *\n * 3. Adjust all setInterval() x20 times where callback mathed with `example` and interval equal 400ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', 'example', '400')\n * ```\n *\n * 4. Slow down setInterval() x2 times where callback matched with `example` and interval equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', 'example', '', '2')\n * ```\n * 5. Adjust all setInterval() x50 times where interval equal 2000ms\n * ```\n * example.org#%#//scriptlet('adjust-setInterval', '', '2000', '0.02')\n * ```\n */\n/* eslint-enable max-len */\nexport function adjustSetInterval(source, match, interval, boost) {\n const nativeInterval = window.setInterval;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const nativeIsFinite = Number.isFinite || window.isFinite; // eslint-disable-line compat/compat\n\n interval = parseInt(interval, 10);\n interval = nativeIsNaN(interval) ? 1000 : interval;\n\n boost = parseFloat(boost);\n boost = nativeIsNaN(boost) || !nativeIsFinite(boost) ? 0.05 : boost;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n if (boost < 0.02) {\n boost = 0.02;\n }\n if (boost > 50) {\n boost = 50;\n }\n\n const intervalWrapper = (cb, d, ...args) => {\n if (d === interval && match.test(cb.toString())) {\n d *= boost;\n hit(source);\n }\n return nativeInterval.apply(window, [cb, d, ...args]);\n };\n window.setInterval = intervalWrapper;\n}\n\nadjustSetInterval.names = [\n 'adjust-setInterval',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'nano-setInterval-booster.js',\n 'ubo-nano-setInterval-booster.js',\n 'nano-sib.js',\n 'ubo-nano-sib.js',\n 'ubo-nano-setInterval-booster',\n 'ubo-nano-sib',\n];\n\nadjustSetInterval.injections = [toRegExp, hit];\n","import { hit, toRegExp } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet adjust-setTimeout\n *\n * @description\n * Adjusts timeout for specified setTimout() callbacks.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#nano-settimeout-boosterjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout'[, match [, timeout[, boost]]])\n * ```\n *\n * - `match` - optional, string/regular expression, matching in stringified callback function\n * - `timeout` - optional, defaults to 1000, decimal integer, matching setTimout delay\n * - `boost` - optional, default to 0.05, float, capped at 50 times for up and down (0.02...50), timeout multiplier\n *\n * **Examples**\n * 1. Adjust all setTimeout() x20 times where timeout equal 1000ms:\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout')\n * ```\n *\n * 2. Adjust all setTimeout() x20 times where callback mathed with `example` and timeout equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', 'example')\n * ```\n *\n * 3. Adjust all setTimeout() x20 times where callback mathed with `example` and timeout equal 400ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', 'example', '400')\n * ```\n *\n * 4. Slow down setTimeout() x2 times where callback matched with `example` and timeout equal 1000ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', 'example', '', '2')\n * ```\n * 5. Adjust all setTimeout() x50 times where timeout equal 2000ms\n * ```\n * example.org#%#//scriptlet('adjust-setTimeout', '', '2000', '0.02')\n * ```\n */\n/* eslint-enable max-len */\nexport function adjustSetTimeout(source, match, timeout, boost) {\n const nativeTimeout = window.setTimeout;\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n const nativeIsFinite = Number.isFinite || window.isFinite; // eslint-disable-line compat/compat\n\n timeout = parseInt(timeout, 10);\n timeout = nativeIsNaN(timeout) ? 1000 : timeout;\n\n boost = parseFloat(boost);\n boost = nativeIsNaN(boost) || !nativeIsFinite(boost) ? 0.05 : boost;\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n if (boost < 0.02) {\n boost = 0.02;\n }\n if (boost > 50) {\n boost = 50;\n }\n\n const timeoutWrapper = (cb, d, ...args) => {\n if (d === timeout && match.test(cb.toString())) {\n d *= boost;\n hit(source);\n }\n return nativeTimeout.apply(window, [cb, d, ...args]);\n };\n window.setTimeout = timeoutWrapper;\n}\n\nadjustSetTimeout.names = [\n 'adjust-setTimeout',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'nano-setTimeout-booster.js',\n 'ubo-nano-setTimeout-booster.js',\n 'nano-stb.js',\n 'ubo-nano-stb.js',\n 'ubo-nano-setTimeout-booster',\n 'ubo-nano-stb',\n];\n\nadjustSetTimeout.injections = [toRegExp, hit];\n","import { hit } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet dir-string\n *\n * @description\n * Wraps the `console.dir` API to call the `toString` method of the argument.\n * There are several adblock circumvention systems that detect browser devtools\n * and hide themselves. Therefore, if we force them to think\n * that devtools are open (using this scrciptlet),\n * it will automatically disable the adblock circumvention script.\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/6b2a309054cc23432102b85d13f12559639ef495/lib/content/snippets.js#L766\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('dir-string'[, times])\n * ```\n * - `times` - optional, the number of times to call the `toString` method of the argument to `console.dir`\n *\n * **Example**\n * ```\n * ! Run 2 times\n * example.org#%#//scriptlet('dir-string', '2')\n * ```\n */\n/* eslint-enable max-len */\nexport function dirString(source, times) {\n const { dir } = console;\n times = parseInt(times, 10);\n\n function dirWrapper(object) {\n // eslint-disable-next-line no-unused-vars\n let temp;\n for (let i = 0; i < times; i += 1) {\n // eslint-disable-next-line no-unused-expressions\n temp = `${object}`;\n }\n if (typeof dir === 'function') {\n dir.call(this, object);\n }\n hit(source, temp);\n }\n // eslint-disable-next-line no-console\n console.dir = dirWrapper;\n}\n\ndirString.names = [\n 'dir-string',\n 'abp-dir-string',\n];\n\ndirString.injections = [hit];\n","import {\n hit, toRegExp, matchStackTrace, getWildcardPropertyInChain,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet json-prune\n *\n * @description\n * Removes specified properties from the result of calling JSON.parse and returns the caller\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#json-prunejs-\n *\n * Related ABP source:\n * https://github.com/adblockplus/adblockpluscore/blob/master/lib/content/snippets.js#L1285\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('json-prune'[, propsToRemove [, obligatoryProps [, stack]]])\n * ```\n *\n * - `propsToRemove` - optional, string of space-separated properties to remove\n * - `obligatoryProps` - optional, string of space-separated properties which must be all present for the pruning to occur\n * - `stack` - optional, string or regular expression that must match the current function call stack trace\n *\n * > Note please that you can use wildcard `*` for chain property name.\n * e.g. 'ad.*.src' instead of 'ad.0.src ad.1.src ad.2.src ...'\n *\n * **Examples**\n * 1. Removes property `example` from the results of JSON.parse call\n * ```\n * example.org#%#//scriptlet('json-prune', 'example')\n * ```\n *\n * For instance, the following call will return `{ one: 1}`\n *\n * ```html\n * JSON.parse('{\"one\":1,\"example\":true}')\n * ```\n *\n * 2. If there are no specified properties in the result of JSON.parse call, pruning will NOT occur\n * ```\n * example.org#%#//scriptlet('json-prune', 'one', 'obligatoryProp')\n * ```\n *\n * For instance, the following call will return `{ one: 1, two: 2}`\n *\n * ```html\n * JSON.parse('{\"one\":1,\"two\":2}')\n * ```\n *\n * 3. A property in a list of properties can be a chain of properties\n *\n * ```\n * example.org#%#//scriptlet('json-prune', 'a.b', 'adpath.url.first')\n * ```\n *\n * 4. Removes property `content.ad` from the results of JSON.parse call it's error stack trace contains `test.js`\n * ```\n * example.org#%#//scriptlet('json-prune', 'content.ad', '', 'test.js')\n * ```\n *\n * 5. A property in a list of properties can be a chain of properties with wildcard in it\n *\n * ```\n * example.org#%#//scriptlet('json-prune', 'content.*.media.src', 'content.*.media.preroll')\n * ```\n *\n * 6. Call with no arguments will log the current hostname and json payload at the console\n * ```\n * example.org#%#//scriptlet('json-prune')\n * ```\n */\n/* eslint-enable max-len */\nexport function jsonPrune(source, propsToRemove, requiredInitialProps, stack) {\n const stackRegexp = stack ? toRegExp(stack) : toRegExp('/.?/');\n if (!matchStackTrace(stackRegexp, new Error().stack)) {\n return;\n }\n\n // eslint-disable-next-line no-console\n const log = console.log.bind(console);\n const prunePaths = propsToRemove !== undefined && propsToRemove !== ''\n ? propsToRemove.split(/ +/)\n : [];\n const requiredPaths = requiredInitialProps !== undefined && requiredInitialProps !== ''\n ? requiredInitialProps.split(/ +/)\n : [];\n\n function isPruningNeeded(root) {\n if (!root) {\n return false;\n }\n\n let shouldProcess;\n for (let i = 0; i < requiredPaths.length; i += 1) {\n const requiredPath = requiredPaths[i];\n const lastNestedPropName = requiredPath.split('.').pop();\n\n const hasWildcard = requiredPath.indexOf('.*.') > -1\n || requiredPath.indexOf('*.') > -1\n || requiredPath.indexOf('.*') > -1\n || requiredPath.indexOf('.[].') > -1\n || requiredPath.indexOf('[].') > -1\n || requiredPath.indexOf('.[]') > -1;\n\n // if the path has wildcard, getPropertyInChain should 'look through' chain props\n const details = getWildcardPropertyInChain(root, requiredPath, hasWildcard);\n\n // start value of 'shouldProcess' due to checking below\n shouldProcess = !hasWildcard;\n\n for (let i = 0; i < details.length; i += 1) {\n if (hasWildcard) {\n // if there is a wildcard,\n // at least one (||) of props chain should be present in object\n shouldProcess = !(details[i].base[lastNestedPropName] === undefined)\n || shouldProcess;\n } else {\n // otherwise each one (&&) of them should be there\n shouldProcess = !(details[i].base[lastNestedPropName] === undefined)\n && shouldProcess;\n }\n }\n }\n\n return shouldProcess;\n }\n\n const nativeParse = JSON.parse;\n\n const parseWrapper = (...args) => {\n const root = nativeParse.apply(window, args);\n if (prunePaths.length === 0) {\n log(window.location.hostname, root);\n return root;\n }\n if (isPruningNeeded(root) === false) {\n return root;\n }\n // if pruning is needed, we check every input pathToRemove\n // and delete it if root has it\n prunePaths.forEach((path) => {\n const ownerObjArr = getWildcardPropertyInChain(root, path, true);\n ownerObjArr.forEach((ownerObj) => {\n if (ownerObj !== undefined && ownerObj.base) {\n delete ownerObj.base[ownerObj.prop];\n }\n });\n });\n hit(source);\n return root;\n };\n\n JSON.parse = parseWrapper;\n}\n\njsonPrune.names = [\n 'json-prune',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'json-prune.js',\n 'ubo-json-prune.js',\n 'ubo-json-prune',\n 'abp-json-prune',\n];\n\njsonPrune.injections = [hit, toRegExp, matchStackTrace, getWildcardPropertyInChain];\n","import {\n hit, startsWith, toRegExp, noopFunc,\n} from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet prevent-requestAnimationFrame\n *\n * @description\n * Prevents a `requestAnimationFrame` call\n * if the text of the callback is matching the specified search string which does not start with `!`;\n * otherwise mismatched calls should be defused.\n *\n * Related UBO scriptlet:\n * https://github.com/gorhill/uBlock/wiki/Resources-Library#no-requestanimationframe-ifjs-\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('prevent-requestAnimationFrame'[, search])\n * ```\n *\n * - `search` - optional, string or regular expression.\n * If starts with `!`, scriptlet will not match the stringified callback but all other will be defused.\n * If do not start with `!`, the stringified callback will be matched.\n *\n * Call with no argument will log all requestAnimationFrame calls while debugging.\n * So do not use the scriptlet without any parameter in production filter lists.\n *\n * **Examples**\n * 1. Prevents `requestAnimationFrame` calls if the callback matches `/\\.test/`.\n * ```bash\n * example.org#%#//scriptlet('prevent-requestAnimationFrame', '/\\.test/')\n * ```\n *\n * For instance, the following call will be prevented:\n * ```javascript\n * var times = 0;\n * requestAnimationFrame(function change() {\n * window.test = 'new value';\n * if (times < 2) {\n * times += 1;\n * requestAnimationFrame(change);\n * }\n * });\n * ```\n * 2. Prevents `requestAnimationFrame` calls if **does not match** 'check'.\n * ```bash\n * example.org#%#//scriptlet('prevent-requestAnimationFrame', '!check')\n * ```\n *\n * For instance, only the first call will be prevented:\n *\n * ```javascript\n * var timesFirst = 0;\n * requestAnimationFrame(function changeFirst() {\n * window.check = 'should not be prevented';\n * if (timesFirst < 2) {\n * timesFirst += 1;\n * requestAnimationFrame(changeFirst);\n * }\n * });\n *\n * var timesSecond = 0;\n * requestAnimationFrame(function changeSecond() {\n * window.second = 'should be prevented';\n * if (timesSecond < 2) {\n * timesSecond += 1;\n * requestAnimationFrame(changeSecond);\n * }\n * });\n * ```\n */\n/* eslint-enable max-len */\n\nexport function preventRequestAnimationFrame(source, match) {\n const nativeRequestAnimationFrame = window.requestAnimationFrame;\n\n // logs requestAnimationFrame to console if no arguments have been specified\n const shouldLog = typeof match === 'undefined';\n\n const INVERT_MARKER = '!';\n\n const doNotMatch = startsWith(match, INVERT_MARKER);\n if (doNotMatch) {\n match = match.slice(1);\n }\n\n match = match ? toRegExp(match) : toRegExp('/.?/');\n\n const rafWrapper = (callback, ...args) => {\n let shouldPrevent = false;\n if (shouldLog) {\n const logMessage = `log: requestAnimationFrame(\"${callback.toString()}\")`;\n hit(source, logMessage);\n } else {\n shouldPrevent = match.test(callback.toString()) !== doNotMatch;\n }\n\n if (shouldPrevent) {\n hit(source);\n return nativeRequestAnimationFrame(noopFunc);\n }\n\n return nativeRequestAnimationFrame.apply(window, [callback, ...args]);\n };\n\n window.requestAnimationFrame = rafWrapper;\n}\n\npreventRequestAnimationFrame.names = [\n 'prevent-requestAnimationFrame',\n // aliases are needed for matching the related scriptlet converted into our syntax\n 'no-requestAnimationFrame-if.js',\n 'ubo-no-requestAnimationFrame-if.js',\n 'norafif.js',\n 'ubo-norafif.js',\n 'ubo-no-requestAnimationFrame-if',\n 'ubo-norafif',\n];\n\npreventRequestAnimationFrame.injections = [hit, startsWith, toRegExp, noopFunc];\n","import { hit } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @scriptlet set-cookie\n *\n * @description\n * Sets a cookie with the specified name and value. Cookie path defaults to root.\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('set-cookie', name, value)\n * ```\n *\n * - `name` - required, cookie name to be set\n * - `value` - required, cookie value; possible values:\n * - number `>= 0 && <= 15`\n * - one of the predefined constants:\n * - `true` / `True`\n * - `false` / `False`\n * - `yes` / `Yes` / `Y`\n * - `no`\n * - `ok` / `OK`\n *\n * **Examples**\n * ```\n * example.org#%#//scriptlet('set-cookie', 'checking', 'ok')\n *\n * example.org#%#//scriptlet('set-cookie', 'gdpr-settings-cookie', '1')\n * ```\n */\n/* eslint-enable max-len */\nexport function setCookie(source, name, value) {\n if (!name || !value) {\n return;\n }\n\n const nativeIsNaN = Number.isNaN || window.isNaN; // eslint-disable-line compat/compat\n let valueToSet;\n if (value === 'true') {\n valueToSet = 'true';\n } else if (value === 'True') {\n valueToSet = 'True';\n } else if (value === 'false') {\n valueToSet = 'false';\n } else if (value === 'False') {\n valueToSet = 'False';\n } else if (value === 'yes') {\n valueToSet = 'yes';\n } else if (value === 'Yes') {\n valueToSet = 'Yes';\n } else if (value === 'Y') {\n valueToSet = 'Y';\n } else if (value === 'no') {\n valueToSet = 'no';\n } else if (value === 'ok') {\n valueToSet = 'ok';\n } else if (value === 'OK') {\n valueToSet = 'OK';\n } else if (/^\\d+$/.test(value)) {\n valueToSet = parseFloat(value);\n if (nativeIsNaN(valueToSet)) {\n return;\n }\n if (Math.abs(valueToSet) < 0 || Math.abs(valueToSet) > 15) {\n return;\n }\n } else {\n return;\n }\n\n const pathToSet = 'path=/;';\n\n const cookieData = `${encodeURIComponent(name)}=${encodeURIComponent(valueToSet)}; ${pathToSet}`;\n\n hit(source);\n document.cookie = cookieData;\n}\n\nsetCookie.names = [\n 'set-cookie',\n];\n\nsetCookie.injections = [hit];\n","import { hit, observeDOMChanges, flatten } from '../helpers';\n\n/**\n * @scriptlet hide-in-shadow-dom\n *\n * @description\n * Hides elements inside open shadow DOM elements.\n *\n * **Syntax**\n * ```\n * example.org#%#//scriptlet('hide-in-shadow-dom', selector[, baseSelector])\n * ```\n *\n * - `selector` — required, CSS selector of element in shadow-dom to hide\n * - `baseSelector` — optional, selector of specific page DOM element,\n * narrows down the part of the page DOM where shadow-dom host supposed to be,\n * defaults to document.documentElement\n *\n * > `baseSelector` should match element of the page DOM, but not of shadow DOM\n *\n * **Examples**\n * ```\n * ! hides menu bar\n * virustotal.com#%#//scriptlet('hide-in-shadow-dom', 'iron-pages', 'vt-virustotal-app')\n *\n * ! hides floating element\n * virustotal.com#%#//scriptlet('hide-in-shadow-dom', 'vt-ui-contact-fab')\n * ```\n */\nexport function hideInShadowDom(source, selector, baseSelector) {\n // do nothing if browser does not support ShadowRoot\n // https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot\n if (!Element.prototype.attachShadow) {\n return;\n }\n\n /**\n * Finds shadow-dom host (elements with shadowRoot property) in DOM of rootElement.\n * @param {HTMLElement} rootElement\n * @returns {nodeList[]} shadow-dom hosts\n */\n const findHostElements = (rootElement) => {\n const hosts = [];\n // Element.querySelectorAll() returns list of elements\n // which are defined in DOM of Element.\n // Meanwhile, inner DOM of the element with shadowRoot property\n // is absolutely another DOM and which can not be reached by querySelectorAll('*')\n const domElems = rootElement.querySelectorAll('*');\n domElems.forEach((el) => {\n if (el.shadowRoot) {\n hosts.push(el);\n }\n });\n return hosts;\n };\n\n /**\n * @typedef {Object} PierceData\n * @property {Array} targets found elements\n * @property {Array} innerHosts inner shadow-dom hosts\n */\n\n /**\n * Pierces open shadow-dom in order to find:\n * - elements by 'selector' matching\n * - inner shadow-dom hosts\n * @param {string} selector\n * @param {nodeList[]} hostElements\n * @returns {PierceData}\n */\n const pierceShadowDom = (selector, hostElements) => {\n const targets = [];\n const innerHostsAcc = [];\n\n const collectTargets = (arr) => {\n if (arr.length !== 0) {\n arr.forEach((el) => targets.push(el));\n }\n };\n\n // it's possible to get a few hostElements found by baseSelector on the page\n hostElements.forEach((host) => {\n // check presence of selector element inside base element if it's not in shadow-dom\n const simpleElems = host.querySelectorAll(selector);\n collectTargets(simpleElems);\n\n const shadowRootElem = host.shadowRoot;\n const shadowChildren = shadowRootElem.querySelectorAll(selector);\n collectTargets(shadowChildren);\n\n // find inner shadow-dom hosts inside processing shadow-dom\n innerHostsAcc.push(findHostElements(shadowRootElem));\n });\n\n // if there were more than one host element,\n // innerHostsAcc is an array of arrays and should be flatten\n const innerHosts = flatten(innerHostsAcc);\n return { targets, innerHosts };\n };\n\n /**\n * Handles shadow-dom piercing and hiding of found elements\n */\n const hideHandler = () => {\n // start value of shadow-dom hosts for the page dom\n let hostElements = !baseSelector ? findHostElements(document.documentElement)\n : document.querySelectorAll(baseSelector);\n\n // if there is shadow-dom host, they should be explored\n while (hostElements.length !== 0) {\n let hidden = false;\n const DISPLAY_NONE_CSS = 'display:none!important;';\n\n const { targets, innerHosts } = pierceShadowDom(selector, hostElements);\n\n targets.forEach((targetEl) => {\n targetEl.style.cssText = DISPLAY_NONE_CSS;\n hidden = true;\n });\n\n if (hidden) {\n hit(source);\n }\n\n // continue to pierce for inner shadow-dom hosts\n // and search inside them while the next iteration\n hostElements = innerHosts;\n }\n };\n\n hideHandler();\n\n observeDOMChanges(hideHandler, true);\n}\n\nhideInShadowDom.names = [\n 'hide-in-shadow-dom',\n];\n\nhideInShadowDom.injections = [hit, observeDOMChanges, flatten];\n","/**\n * This file must export all scriptlets which should be accessible\n */\nexport * from './abort-on-property-read';\nexport * from './abort-on-property-write';\nexport * from './prevent-setTimeout';\nexport * from './prevent-setInterval';\nexport * from './prevent-window-open';\nexport * from './abort-current-inline-script';\nexport * from './set-constant';\nexport * from './remove-cookie';\nexport * from './prevent-addEventListener';\nexport * from './prevent-bab';\nexport * from './nowebrtc';\nexport * from './log-addEventListener';\nexport * from './log-eval';\nexport * from './log';\nexport * from './noeval';\nexport * from './prevent-eval-if';\nexport * from './prevent-fab-3.2.0';\nexport * from './set-popads-dummy';\nexport * from './prevent-popads-net';\nexport * from './prevent-adfly';\nexport * from './debug-on-property-read';\nexport * from './debug-on-property-write';\nexport * from './debug-current-inline-script';\nexport * from './remove-attr';\nexport * from './remove-class';\nexport * from './disable-newtab-links';\nexport * from './adjust-setInterval';\nexport * from './adjust-setTimeout';\nexport * from './dir-string';\nexport * from './json-prune';\nexport * from './prevent-requestAnimationFrame';\nexport * from './set-cookie';\nexport * from './hide-in-shadow-dom';\n","import {\n startsWith,\n endsWith,\n substringAfter,\n toRegExp,\n} from './string-utils';\n\nimport { ADG_SCRIPTLET_MASK } from './parse-rule';\n\nimport * as scriptletsList from '../scriptlets/scriptletsList';\n\nimport { redirects } from '../../scripts/compatibility-table.json';\n\nconst JS_RULE_MARKER = '#%#';\nconst COMMENT_MARKER = '!';\n\n/**\n * Checks if rule text is comment e.g. !!example.org##+js(set-constant.js, test, false)\n * @param {string} rule\n * @return {boolean}\n */\nconst isComment = (rule) => startsWith(rule, COMMENT_MARKER);\n\n/* ************************************************************************\n *\n * Scriptlets\n *\n ************************************************************************** */\n\n/**\n * uBlock scriptlet rule mask\n */\nconst UBO_SCRIPTLET_MASK_REG = /#@?#script:inject|#@?#\\s*\\+js/;\nconst UBO_SCRIPTLET_MASK_1 = '##+js';\nconst UBO_SCRIPTLET_MASK_2 = '##script:inject';\nconst UBO_SCRIPTLET_EXCEPTION_MASK_1 = '#@#+js';\nconst UBO_SCRIPTLET_EXCEPTION_MASK_2 = '#@#script:inject';\n\n/**\n * AdBlock Plus snippet rule mask\n */\nconst ABP_SCRIPTLET_MASK = '#$#';\nconst ABP_SCRIPTLET_EXCEPTION_MASK = '#@$#';\n\n/**\n * AdGuard CSS rule mask\n */\nconst ADG_CSS_MASK_REG = /#@?\\$#.+?\\s*\\{.*\\}\\s*$/g;\n\n/**\n * Checks if the `rule` is AdGuard scriptlet rule\n * @param {string} rule - rule text\n */\nconst isAdgScriptletRule = (rule) => {\n return (\n !isComment(rule)\n && rule.indexOf(ADG_SCRIPTLET_MASK) > -1\n );\n};\n\n/**\n * Checks if the `rule` is uBO scriptlet rule\n * @param {string} rule rule text\n */\nconst isUboScriptletRule = (rule) => {\n return (\n rule.indexOf(UBO_SCRIPTLET_MASK_1) > -1\n || rule.indexOf(UBO_SCRIPTLET_MASK_2) > -1\n || rule.indexOf(UBO_SCRIPTLET_EXCEPTION_MASK_1) > -1\n || rule.indexOf(UBO_SCRIPTLET_EXCEPTION_MASK_2) > -1\n )\n && UBO_SCRIPTLET_MASK_REG.test(rule)\n && !isComment(rule);\n};\n\n/**\n * Checks if the `rule` is AdBlock Plus snippet\n * @param {string} rule rule text\n */\nconst isAbpSnippetRule = (rule) => {\n return (\n rule.indexOf(ABP_SCRIPTLET_MASK) > -1\n || rule.indexOf(ABP_SCRIPTLET_EXCEPTION_MASK) > -1\n )\n && rule.search(ADG_CSS_MASK_REG) === -1\n && !isComment(rule);\n};\n\n/**\n * Finds scriptlet by it's name\n * @param {string} name - scriptlet name\n */\nconst getScriptletByName = (name) => {\n const scriptlets = Object.keys(scriptletsList).map((key) => scriptletsList[key]);\n return scriptlets\n .find((s) => {\n return s.names\n // full match name checking\n && (s.names.indexOf(name) > -1\n // or check ubo alias name without '.js' at the end\n || (!endsWith(name, '.js') && s.names.indexOf(`${name}.js`) > -1)\n );\n });\n};\n\n/**\n * Checks if the scriptlet name is valid\n * @param {string} name - Scriptlet name\n */\nconst isValidScriptletName = (name) => {\n if (!name) {\n return false;\n }\n const scriptlet = getScriptletByName(name);\n if (!scriptlet) {\n return false;\n }\n return true;\n};\n\n/* ************************************************************************\n *\n * Redirects\n *\n ************************************************************************** */\n\n/**\n * Redirect resources markers\n */\nconst ADG_UBO_REDIRECT_MARKER = 'redirect=';\nconst ABP_REDIRECT_MARKER = 'rewrite=abp-resource:';\n\nconst VALID_SOURCE_TYPES = [\n 'image',\n 'subdocument',\n 'stylesheet',\n 'script',\n 'xmlhttprequest',\n 'media',\n];\n\nconst validAdgRedirects = redirects.filter((el) => el.adg);\n\n/**\n * Converts array of pairs to object.\n * Sort of Object.fromEntries() polyfill.\n * @param {Array} pairs - array of pairs\n * @returns {Object}\n */\nconst objFromEntries = (pairs) => {\n const output = pairs\n .reduce((acc, el) => {\n const [key, value] = el;\n acc[key] = value;\n return acc;\n }, {});\n return output;\n};\n\n/**\n * Compatibility object where KEYS = UBO redirect names and VALUES = ADG redirect names\n * It's used for UBO -> ADG converting\n */\nconst uboToAdgCompatibility = objFromEntries(\n validAdgRedirects\n .filter((el) => el.ubo)\n .map((el) => {\n return [el.ubo, el.adg];\n }),\n);\n\n/**\n * Compatibility object where KEYS = ABP redirect names and VALUES = ADG redirect names\n * It's used for ABP -> ADG converting\n */\nconst abpToAdgCompatibility = objFromEntries(\n validAdgRedirects\n .filter((el) => el.abp)\n .map((el) => {\n return [el.abp, el.adg];\n }),\n);\n\n/**\n * Compatibility object where KEYS = UBO redirect names and VALUES = ADG redirect names\n * It's used for ADG -> UBO converting\n */\nconst adgToUboCompatibility = objFromEntries(\n validAdgRedirects\n .filter((el) => el.ubo)\n .map((el) => {\n return [el.adg, el.ubo];\n }),\n);\n\n/**\n * Needed for AdGuard redirect names validation where KEYS = **valid** AdGuard redirect names\n * 'adgToUboCompatibility' is still needed for ADG -> UBO converting\n */\nconst validAdgCompatibility = objFromEntries(\n validAdgRedirects\n .map((el) => {\n return [el.adg, 'valid adg redirect'];\n }),\n);\n\nconst REDIRECT_RULE_TYPES = {\n VALID_ADG: {\n marker: ADG_UBO_REDIRECT_MARKER,\n compatibility: validAdgCompatibility,\n },\n ADG: {\n marker: ADG_UBO_REDIRECT_MARKER,\n compatibility: adgToUboCompatibility,\n },\n UBO: {\n marker: ADG_UBO_REDIRECT_MARKER,\n compatibility: uboToAdgCompatibility,\n },\n ABP: {\n marker: ABP_REDIRECT_MARKER,\n compatibility: abpToAdgCompatibility,\n },\n};\n\n/**\n * Parses redirect rule modifiers\n * @param {string} rule\n * @returns {Array}\n */\nconst parseModifiers = (rule) => substringAfter(rule, '$').split(',');\n\n/**\n * Gets redirect resource name\n * @param {string} rule\n * @param {string} marker - specific Adg/Ubo or Abp redirect resources marker\n * @returns {string} - redirect resource name\n */\nconst getRedirectName = (rule, marker) => {\n const ruleModifiers = parseModifiers(rule);\n const redirectNamePart = ruleModifiers\n .find((el) => el.indexOf(marker) > -1);\n return substringAfter(redirectNamePart, marker);\n};\n\n/**\n * Checks if the `rule` is AdGuard redirect rule.\n * Discards comments and JS rules and checks if the `rule` has 'redirect' modifier.\n * @param {string} rule - rule text\n */\nconst isAdgRedirectRule = (rule) => {\n const MARKER_IN_BASE_PART_MASK = '/((?!\\\\$|\\\\,).{1})redirect=(.{0,}?)\\\\$(popup)?/';\n return (\n !isComment(rule)\n && rule.indexOf(REDIRECT_RULE_TYPES.ADG.marker) > -1\n // some js rules may have 'redirect=' in it, so we should get rid of them\n && rule.indexOf(JS_RULE_MARKER) === -1\n // get rid of rules like '_redirect=*://look.$popup'\n && !(toRegExp(MARKER_IN_BASE_PART_MASK).test(rule))\n );\n};\n\n/**\n * Checks if the `rule` satisfies the `type`\n * @param {string} rule - rule text\n * @param {'VALID_ADG'|'ADG'|'UBO'|'ABP'} type - type of a redirect rule\n */\nconst isRedirectRuleByType = (rule, type) => {\n const { marker, compatibility } = REDIRECT_RULE_TYPES[type];\n\n if (rule\n && (!isComment(rule))\n && (rule.indexOf(marker) > -1)) {\n const redirectName = getRedirectName(rule, marker);\n\n return redirectName === Object\n .keys(compatibility)\n .find((el) => el === redirectName);\n }\n return false;\n};\n\n/**\n* Checks if the `rule` is **valid** AdGuard redirect resource rule\n* @param {string} rule - rule text\n* @returns {boolean}\n*/\nconst isValidAdgRedirectRule = (rule) => {\n return isRedirectRuleByType(rule, 'VALID_ADG');\n};\n\n/**\n* Checks if the AdGuard redirect `rule` has Ubo analog. Needed for Adg->Ubo conversion\n* @param {string} rule - AdGuard rule text\n* @returns {boolean} - true if the rule can be converted to Ubo\n*/\nconst isAdgRedirectCompatibleWithUbo = (rule) => {\n return isAdgRedirectRule(rule) && isRedirectRuleByType(rule, 'ADG');\n};\n\n/**\n* Checks if the Ubo redirect `rule` has AdGuard analog. Needed for Ubo->Adg conversion\n* @param {string} rule - Ubo rule text\n* @returns {boolean} - true if the rule can be converted to AdGuard\n*/\nconst isUboRedirectCompatibleWithAdg = (rule) => {\n return isRedirectRuleByType(rule, 'UBO');\n};\n\n/**\n* Checks if the Abp redirect `rule` has AdGuard analog. Needed for Abp->Adg conversion\n* @param {string} rule - Abp rule text\n* @returns {boolean} - true if the rule can be converted to AdGuard\n*/\nconst isAbpRedirectCompatibleWithAdg = (rule) => {\n return isRedirectRuleByType(rule, 'ABP');\n};\n\n/**\n * Checks if the rule has specified content type before Adg -> Ubo conversion.\n *\n * Used ONLY for Adg -> Ubo conversion\n * because Ubo redirect rules must contain content type, but Adg and Abp must not.\n *\n * Also source type can not be added automatically because of such valid rules:\n * ! Abp:\n * $rewrite=abp-resource:blank-js,xmlhttprequest\n * ! Adg:\n * $script,redirect=noopvast-2.0\n * $xmlhttprequest,redirect=noopvast-2.0\n *\n * @param {string} rule\n * @returns {boolean}\n */\nconst hasValidContentType = (rule) => {\n if (isRedirectRuleByType(rule, 'ADG')) {\n const ruleModifiers = parseModifiers(rule);\n const sourceType = ruleModifiers\n .find((el) => VALID_SOURCE_TYPES.indexOf(el) > -1);\n\n return sourceType !== undefined;\n }\n return false;\n};\n\nconst validator = {\n UBO_SCRIPTLET_MASK_REG,\n ABP_SCRIPTLET_MASK,\n ABP_SCRIPTLET_EXCEPTION_MASK,\n isComment,\n isAdgScriptletRule,\n isUboScriptletRule,\n isAbpSnippetRule,\n getScriptletByName,\n isValidScriptletName,\n REDIRECT_RULE_TYPES,\n isAdgRedirectRule,\n isValidAdgRedirectRule,\n isAdgRedirectCompatibleWithUbo,\n isUboRedirectCompatibleWithAdg,\n isAbpRedirectCompatibleWithAdg,\n parseModifiers,\n getRedirectName,\n hasValidContentType,\n};\n\nexport default validator;\n","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}\n\nmodule.exports = _toArray;","import {\n getBeforeRegExp,\n substringAfter,\n substringBefore,\n wrapInSingleQuotes,\n getStringInBraces,\n} from './string-utils';\n\nimport validator from './validator';\n\nimport { parseRule } from './parse-rule';\n\nimport * as scriptletList from '../scriptlets/scriptletsList';\n\n/**\n * AdGuard scriptlet rule\n */\nconst ADGUARD_SCRIPTLET_MASK_REG = /#@?%#\\/\\/scriptlet\\(.+\\)/;\n// eslint-disable-next-line no-template-curly-in-string\nconst ADGUARD_SCRIPTLET_TEMPLATE = '${domains}#%#//scriptlet(${args})';\n// eslint-disable-next-line no-template-curly-in-string\nconst ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE = '${domains}#@%#//scriptlet(${args})';\n\n/**\n * uBlock scriptlet rule mask\n */\n// eslint-disable-next-line no-template-curly-in-string\nconst UBO_SCRIPTLET_TEMPLATE = '${domains}##+js(${args})';\n// eslint-disable-next-line no-template-curly-in-string\nconst UBO_SCRIPTLET_EXCEPTION_TEMPLATE = '${domains}#@#+js(${args})';\n\nconst UBO_ALIAS_NAME_MARKER = 'ubo-';\n\n// https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#xhr\nconst UBO_XHR_TYPE = 'xhr';\n\nconst ADG_XHR_TYPE = 'xmlhttprequest';\n\n/**\n * Returns array of strings separated by space which not in quotes\n * @param {string} str\n */\nconst getSentences = (str) => {\n const reg = /'.*?'|\".*?\"|\\S+/g;\n return str.match(reg);\n};\n\n/**\n * Replaces string with data by placeholders\n * @param {string} str\n * @param {Object} data - where keys are placeholders names\n */\nconst replacePlaceholders = (str, data) => {\n return Object.keys(data).reduce((acc, key) => {\n const reg = new RegExp(`\\\\$\\\\{${key}\\\\}`, 'g');\n acc = acc.replace(reg, data[key]);\n return acc;\n }, str);\n};\n\n/**\n * Converts string of UBO scriptlet rule to AdGuard scritlet rule\n * @param {string} rule - UBO scriptlet rule\n * @returns {Array} - array with one AdGuard scriptlet rule\n */\nexport const convertUboScriptletToAdg = (rule) => {\n const domains = getBeforeRegExp(rule, validator.UBO_SCRIPTLET_MASK_REG);\n const mask = rule.match(validator.UBO_SCRIPTLET_MASK_REG)[0];\n let template;\n if (mask.indexOf('@') > -1) {\n template = ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE;\n } else {\n template = ADGUARD_SCRIPTLET_TEMPLATE;\n }\n const args = getStringInBraces(rule)\n .split(/, /g)\n .map((arg, index) => {\n let outputArg;\n if (index === 0) {\n outputArg = (arg.indexOf('.js') > -1) ? `ubo-${arg}` : `ubo-${arg}.js`;\n } else {\n outputArg = arg;\n }\n // for example: dramaserial.xyz##+js(abort-current-inline-script, $, popup)\n if (arg === '$') {\n outputArg = '$$';\n }\n return outputArg;\n })\n .map((arg) => wrapInSingleQuotes(arg))\n .join(', ');\n const adgRule = replacePlaceholders(\n template,\n { domains, args },\n );\n return [adgRule];\n};\n\n/**\n * Convert string of ABP snippet rule to AdGuard scritlet rule\n * @param {string} rule - ABP snippet rule\n * @returns {Array} - array of AdGuard scriptlet rules -\n * one or few items depends on Abp-rule\n */\nexport const convertAbpSnippetToAdg = (rule) => {\n const SEMICOLON_DIVIDER = /;(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/g;\n const mask = rule.indexOf(validator.ABP_SCRIPTLET_MASK) > -1\n ? validator.ABP_SCRIPTLET_MASK\n : validator.ABP_SCRIPTLET_EXCEPTION_MASK;\n const template = mask === validator.ABP_SCRIPTLET_MASK\n ? ADGUARD_SCRIPTLET_TEMPLATE\n : ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE;\n const domains = substringBefore(rule, mask);\n const args = substringAfter(rule, mask);\n\n return args.split(SEMICOLON_DIVIDER)\n .map((args) => getSentences(args)\n .filter((arg) => arg)\n .map((arg, index) => (index === 0 ? `abp-${arg}` : arg))\n .map((arg) => wrapInSingleQuotes(arg))\n .join(', '))\n .map((args) => replacePlaceholders(template, { domains, args }));\n};\n\n/**\n * Converts scriptlet rule to AdGuard one\n * @param {string} rule\n * @returns {Array} - array of AdGuard scriptlet rules -\n * one item for Adg and Ubo or few items for Abp\n */\nexport const convertScriptletToAdg = (rule) => {\n let result;\n if (validator.isUboScriptletRule(rule)) {\n result = convertUboScriptletToAdg(rule);\n } else if (validator.isAbpSnippetRule(rule)) {\n result = convertAbpSnippetToAdg(rule);\n } else if (validator.isAdgScriptletRule(rule) || (validator.isComment(rule))) {\n result = [rule];\n }\n\n return result;\n};\n\n/**\n * Converts UBO scriptlet rule to AdGuard one\n * @param {string} rule - AdGuard scriptlet rule\n * @returns {string} - UBO scriptlet rule\n */\nexport const convertAdgScriptletToUbo = (rule) => {\n let res;\n\n if (validator.isAdgScriptletRule(rule)) {\n const { name: parsedName, args: parsedParams } = parseRule(rule);\n\n // object of name and aliases for the Adg-scriptlet\n const adgScriptletObject = Object\n .keys(scriptletList)\n .map((el) => scriptletList[el])\n .map((s) => {\n const [name, ...aliases] = s.names;\n return { name, aliases };\n })\n .find((el) => (el.name === parsedName\n || el.aliases.indexOf(parsedName) >= 0));\n\n const { aliases } = adgScriptletObject;\n\n if (aliases.length > 0) {\n const uboAlias = adgScriptletObject.aliases\n // eslint-disable-next-line no-restricted-properties\n .find((alias) => alias.includes(UBO_ALIAS_NAME_MARKER));\n\n if (uboAlias) {\n const mask = rule.match(ADGUARD_SCRIPTLET_MASK_REG)[0];\n let template;\n if (mask.indexOf('@') > -1) {\n template = UBO_SCRIPTLET_EXCEPTION_TEMPLATE;\n } else {\n template = UBO_SCRIPTLET_TEMPLATE;\n }\n const domains = getBeforeRegExp(rule, ADGUARD_SCRIPTLET_MASK_REG);\n const uboName = uboAlias\n .replace(UBO_ALIAS_NAME_MARKER, '')\n // '.js' in the Ubo scriptlet name can be omitted\n // https://github.com/gorhill/uBlock/wiki/Resources-Library#general-purpose-scriptlets\n .replace('.js', '');\n\n const args = (parsedParams.length > 0) ? `${uboName}, ${parsedParams.join(', ')}` : uboName;\n\n const uboRule = replacePlaceholders(\n template,\n { domains, args },\n );\n\n res = uboRule;\n }\n }\n }\n\n return res;\n};\n\n/**\n * Validates any scriptlet rule\n * @param {string} input - can be Adguard or Ubo or Abp scriptlet rule\n */\nexport const isValidScriptletRule = (input) => {\n if (!input) {\n return false;\n }\n // ABP 'input' rule may contain more than one snippet\n const rulesArray = convertScriptletToAdg(input);\n\n // checking if each of parsed scriptlets is valid\n // if at least one of them is not valid - whole 'input' rule is not valid too\n const isValid = rulesArray.reduce((acc, rule) => {\n const parsedRule = parseRule(rule);\n return validator.isValidScriptletName(parsedRule.name) && acc;\n }, true);\n\n return isValid;\n};\n\n/**\n * Converts Ubo redirect rule to Adg one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertUboRedirectToAdg = (rule) => {\n const firstPartOfRule = substringBefore(rule, '$');\n const uboModifiers = validator.parseModifiers(rule);\n const adgModifiers = uboModifiers\n .map((el) => {\n if (el.indexOf(validator.REDIRECT_RULE_TYPES.UBO.marker) > -1) {\n const uboName = substringAfter(el, validator.REDIRECT_RULE_TYPES.UBO.marker);\n const adgName = validator.REDIRECT_RULE_TYPES.UBO.compatibility[uboName];\n return `${validator.REDIRECT_RULE_TYPES.ADG.marker}${adgName}`;\n }\n if (el === UBO_XHR_TYPE) {\n return ADG_XHR_TYPE;\n }\n return el;\n })\n .join(',');\n\n return `${firstPartOfRule}$${adgModifiers}`;\n};\n\n/**\n * Converts Abp redirect rule to Adg one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertAbpRedirectToAdg = (rule) => {\n const firstPartOfRule = substringBefore(rule, '$');\n const abpModifiers = validator.parseModifiers(rule);\n const adgModifiers = abpModifiers\n .map((el) => {\n if (el.indexOf(validator.REDIRECT_RULE_TYPES.ABP.marker) > -1) {\n const abpName = substringAfter(el, validator.REDIRECT_RULE_TYPES.ABP.marker);\n const adgName = validator.REDIRECT_RULE_TYPES.ABP.compatibility[abpName];\n return `${validator.REDIRECT_RULE_TYPES.ADG.marker}${adgName}`;\n }\n return el;\n })\n .join(',');\n\n return `${firstPartOfRule}$${adgModifiers}`;\n};\n\n/**\n * Converts redirect rule to AdGuard one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertRedirectToAdg = (rule) => {\n let result;\n if (validator.isUboRedirectCompatibleWithAdg(rule)) {\n result = convertUboRedirectToAdg(rule);\n } else if (validator.isAbpRedirectCompatibleWithAdg(rule)) {\n result = convertAbpRedirectToAdg(rule);\n } else if (validator.isValidAdgRedirectRule(rule)) {\n result = rule;\n }\n\n return result;\n};\n\n/**\n * Converts Adg redirect rule to Ubo one\n * @param {string} rule\n * @returns {string}\n */\nexport const convertAdgRedirectToUbo = (rule) => {\n if (!validator.hasValidContentType(rule)) {\n throw new Error(`Rule is not valid for converting to Ubo. Source type is not specified in the rule: ${rule}`);\n } else {\n const firstPartOfRule = substringBefore(rule, '$');\n const uboModifiers = validator.parseModifiers(rule);\n const adgModifiers = uboModifiers\n .map((el) => {\n if (el.indexOf(validator.REDIRECT_RULE_TYPES.ADG.marker) > -1) {\n const adgName = substringAfter(el, validator.REDIRECT_RULE_TYPES.ADG.marker);\n const uboName = validator.REDIRECT_RULE_TYPES.ADG.compatibility[adgName];\n return `${validator.REDIRECT_RULE_TYPES.UBO.marker}${uboName}`;\n }\n return el;\n })\n .join(',');\n\n return `${firstPartOfRule}$${adgModifiers}`;\n }\n};\n","import {\n hit, noopFunc, noopNull, noopArray,\n} from '../helpers';\n\n/**\n * @redirect google-analytics\n *\n * @description\n * Mocks Google Analytics API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/google-analytics_analytics.js\n *\n * **Example**\n * ```\n * ||google-analytics.com/analytics.js$script,redirect=google-analytics\n * ```\n */\nexport function GoogleAnalytics(source) {\n // eslint-disable-next-line func-names\n const Tracker = function () { }; // constructor\n const proto = Tracker.prototype;\n proto.get = noopFunc;\n proto.set = noopFunc;\n proto.send = noopFunc;\n\n const googleAnalyticsName = window.GoogleAnalyticsObject || 'ga';\n // a -- fake arg for 'ga.length < 1' antiadblock checking\n // eslint-disable-next-line no-unused-vars\n function ga(a) {\n const len = arguments.length;\n if (len === 0) {\n return;\n }\n // eslint-disable-next-line prefer-rest-params\n const lastArg = arguments[len - 1];\n if (typeof lastArg !== 'object'\n || lastArg === null\n || typeof lastArg.hitCallback !== 'function'\n ) {\n return;\n }\n\n try {\n lastArg.hitCallback();\n // eslint-disable-next-line no-empty\n } catch (ex) { }\n }\n\n ga.create = () => new Tracker();\n ga.getByName = noopNull;\n ga.getAll = noopArray;\n ga.remove = noopFunc;\n ga.loaded = true;\n window[googleAnalyticsName] = ga;\n\n const { dataLayer } = window;\n if (dataLayer instanceof Object\n && dataLayer.hide instanceof Object\n && typeof dataLayer.hide.end === 'function'\n ) {\n dataLayer.hide.end();\n }\n\n hit(source);\n}\n\nGoogleAnalytics.names = [\n 'google-analytics',\n 'ubo-google-analytics_analytics.js',\n 'google-analytics_analytics.js',\n];\n\nGoogleAnalytics.injections = [\n hit,\n noopFunc,\n noopNull,\n noopArray,\n];\n","/* eslint-disable no-underscore-dangle */\nimport { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect google-analytics-ga\n *\n * @description\n * Mocks old Google Analytics API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/google-analytics_ga.js\n *\n * **Example**\n * ```\n * ||google-analytics.com/ga.js$script,redirect=google-analytics-ga\n * ```\n */\nexport function GoogleAnalyticsGa(source) {\n // Gaq constructor\n function Gaq() { }\n\n Gaq.prototype.Na = noopFunc;\n Gaq.prototype.O = noopFunc;\n Gaq.prototype.Sa = noopFunc;\n Gaq.prototype.Ta = noopFunc;\n Gaq.prototype.Va = noopFunc;\n Gaq.prototype._createAsyncTracker = noopFunc;\n Gaq.prototype._getAsyncTracker = noopFunc;\n Gaq.prototype._getPlugin = noopFunc;\n Gaq.prototype.push = (data) => {\n if (typeof data === 'function') {\n data();\n return;\n }\n if (Array.isArray(data) === false) {\n return;\n }\n // https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiDomainDirectory#_gat.GA_Tracker_._link\n if (data[0] === '_link' && typeof data[1] === 'string') {\n window.location.assign(data[1]);\n }\n // https://github.com/gorhill/uBlock/issues/2162\n if (data[0] === '_set' && data[1] === 'hitCallback' && typeof data[2] === 'function') {\n data[2]();\n }\n };\n\n const gaq = new Gaq();\n const asyncTrackers = window._gaq || [];\n if (Array.isArray(asyncTrackers)) {\n while (asyncTrackers[0]) {\n gaq.push(asyncTrackers.shift());\n }\n }\n // eslint-disable-next-line no-multi-assign\n window._gaq = gaq.qf = gaq;\n\n // Gat constructor\n function Gat() { }\n\n // Mock tracker api\n const api = [\n '_addIgnoredOrganic', '_addIgnoredRef', '_addItem', '_addOrganic',\n '_addTrans', '_clearIgnoredOrganic', '_clearIgnoredRef', '_clearOrganic',\n '_cookiePathCopy', '_deleteCustomVar', '_getName', '_setAccount',\n '_getAccount', '_getClientInfo', '_getDetectFlash', '_getDetectTitle',\n '_getLinkerUrl', '_getLocalGifPath', '_getServiceMode', '_getVersion',\n '_getVisitorCustomVar', '_initData', '_link', '_linkByPost',\n '_setAllowAnchor', '_setAllowHash', '_setAllowLinker', '_setCampContentKey',\n '_setCampMediumKey', '_setCampNameKey', '_setCampNOKey', '_setCampSourceKey',\n '_setCampTermKey', '_setCampaignCookieTimeout', '_setCampaignTrack', '_setClientInfo',\n '_setCookiePath', '_setCookiePersistence', '_setCookieTimeout', '_setCustomVar',\n '_setDetectFlash', '_setDetectTitle', '_setDomainName', '_setLocalGifPath',\n '_setLocalRemoteServerMode', '_setLocalServerMode', '_setReferrerOverride', '_setRemoteServerMode',\n '_setSampleRate', '_setSessionTimeout', '_setSiteSpeedSampleRate', '_setSessionCookieTimeout',\n '_setVar', '_setVisitorCookieTimeout', '_trackEvent', '_trackPageLoadTime',\n '_trackPageview', '_trackSocial', '_trackTiming', '_trackTrans',\n '_visitCode',\n ];\n const tracker = api.reduce((res, funcName) => {\n res[funcName] = noopFunc;\n return res;\n }, {});\n tracker._getLinkerUrl = (a) => a;\n\n Gat.prototype._anonymizeIP = noopFunc;\n Gat.prototype._createTracker = noopFunc;\n Gat.prototype._forceSSL = noopFunc;\n Gat.prototype._getPlugin = noopFunc;\n Gat.prototype._getTracker = () => tracker;\n Gat.prototype._getTrackerByName = () => tracker;\n Gat.prototype._getTrackers = noopFunc;\n Gat.prototype.aa = noopFunc;\n Gat.prototype.ab = noopFunc;\n Gat.prototype.hb = noopFunc;\n Gat.prototype.la = noopFunc;\n Gat.prototype.oa = noopFunc;\n Gat.prototype.pa = noopFunc;\n Gat.prototype.u = noopFunc;\n\n const gat = new Gat();\n window._gat = gat;\n\n hit(source);\n}\n\nGoogleAnalyticsGa.names = [\n 'google-analytics-ga',\n 'ubo-google-analytics_ga.js',\n 'google-analytics_ga.js',\n];\n\nGoogleAnalyticsGa.injections = [hit, noopFunc];\n","import { hit } from '../helpers';\n\n/* eslint-disable max-len */\n/**\n * @redirect googlesyndication-adsbygoogle\n *\n * @description\n * Mocks Google AdSense API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/googlesyndication_adsbygoogle.js\n *\n * **Example**\n * ```\n * ||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=googlesyndication-adsbygoogle\n * ```\n */\n/* eslint-enable max-len */\nexport function GoogleSyndicationAdsByGoogle(source) {\n window.adsbygoogle = {\n length: 0,\n loaded: true,\n push() {\n this.length += 1;\n },\n };\n const adElems = document.querySelectorAll('.adsbygoogle');\n const css = 'height:1px!important;max-height:1px!important;max-width:1px!important;width:1px!important;';\n const statusAttrName = 'data-adsbygoogle-status';\n const ASWIFT_IFRAME_MARKER = 'aswift_';\n const GOOGLE_ADS_IFRAME_MARKER = 'google_ads_iframe_';\n\n let executed = false;\n for (let i = 0; i < adElems.length; i += 1) {\n const adElemChildNodes = adElems[i].childNodes;\n const childNodesQuantity = adElemChildNodes.length;\n // childNodes of .adsbygoogle can be defined if scriptlet was executed before\n // so we should check are that childNodes exactly defined by us\n // TODO: remake after scriptlets context developing in 1.3\n let areIframesDefined = false;\n if (childNodesQuantity > 0) {\n // it should be only 2 child iframes if scriptlet was executed\n areIframesDefined = childNodesQuantity === 2\n // the first of child nodes should be aswift iframe\n && adElemChildNodes[0].tagName.toLowerCase() === 'iframe'\n && adElemChildNodes[0].id.indexOf(ASWIFT_IFRAME_MARKER) > -1\n // the second of child nodes should be google_ads iframe\n && adElemChildNodes[1].tagName.toLowerCase() === 'iframe'\n && adElemChildNodes[1].id.indexOf(GOOGLE_ADS_IFRAME_MARKER) > -1;\n }\n\n if (!areIframesDefined) {\n // here we do the job if scriptlet has not been executed earlier\n adElems[i].setAttribute(statusAttrName, 'done');\n\n const aswiftIframe = document.createElement('iframe');\n aswiftIframe.id = `${ASWIFT_IFRAME_MARKER}${i + 1}`;\n aswiftIframe.style = css;\n adElems[i].appendChild(aswiftIframe);\n const innerAswiftIframe = document.createElement('iframe');\n aswiftIframe.contentWindow.document.body.appendChild(innerAswiftIframe);\n\n const googleadsIframe = document.createElement('iframe');\n googleadsIframe.id = `${GOOGLE_ADS_IFRAME_MARKER}${i + 1}`;\n googleadsIframe.style = css;\n adElems[i].appendChild(googleadsIframe);\n const innerGoogleadsIframe = document.createElement('iframe');\n googleadsIframe.contentWindow.document.body.appendChild(innerGoogleadsIframe);\n\n executed = true;\n }\n }\n\n if (executed) {\n hit(source);\n }\n}\n\nGoogleSyndicationAdsByGoogle.names = [\n 'googlesyndication-adsbygoogle',\n 'ubo-googlesyndication_adsbygoogle.js',\n 'googlesyndication_adsbygoogle.js',\n];\n\nGoogleSyndicationAdsByGoogle.injections = [\n hit,\n];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect googletagmanager-gtm\n *\n * @description\n * Mocks Google Tag Manager API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/googletagmanager_gtm.js\n *\n * **Example**\n * ```\n * ||googletagmanager.com/gtm.js$script,redirect=googletagmanager-gtm\n * ```\n */\nexport function GoogleTagManagerGtm(source) {\n window.ga = window.ga || noopFunc;\n const { dataLayer, google_optimize } = window; // eslint-disable-line camelcase\n if (dataLayer instanceof Object === false) {\n return;\n }\n\n if (dataLayer.hide instanceof Object && typeof dataLayer.hide.end === 'function') {\n dataLayer.hide.end();\n }\n\n if (typeof dataLayer.push === 'function') {\n dataLayer.push = (data) => {\n if (data instanceof Object && typeof data.eventCallback === 'function') {\n setTimeout(data.eventCallback, 1);\n }\n };\n }\n\n // https://github.com/AdguardTeam/Scriptlets/issues/81\n if (google_optimize instanceof Object && typeof google_optimize.get === 'function') { // eslint-disable-line camelcase\n const googleOptimizeWrapper = { };\n googleOptimizeWrapper.get = noopFunc;\n\n window.google_optimize = googleOptimizeWrapper;\n }\n\n hit(source);\n}\n\nGoogleTagManagerGtm.names = [\n 'googletagmanager-gtm',\n 'ubo-googletagmanager_gtm.js',\n 'googletagmanager_gtm.js',\n];\n\nGoogleTagManagerGtm.injections = [hit, noopFunc];\n","import {\n hit, noopFunc, noopThis, noopNull, noopArray, noopStr,\n} from '../helpers';\n\n/**\n * @redirect googletagservices-gpt\n *\n * @description\n * Mocks Google Publisher Tag API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/googletagservices_gpt.js\n *\n * **Example**\n * ```\n * ||googletagservices.com/tag/js/gpt.js$script,redirect=googletagservices-gpt\n * ```\n */\nexport function GoogleTagServicesGpt(source) {\n const companionAdsService = {\n addEventListener: noopThis,\n enableSyncLoading: noopFunc,\n setRefreshUnfilledSlots: noopFunc,\n };\n const contentService = {\n addEventListener: noopThis,\n setContent: noopFunc,\n };\n function PassbackSlot() { } // constructor\n\n PassbackSlot.prototype.display = noopFunc;\n PassbackSlot.prototype.get = noopNull;\n PassbackSlot.prototype.set = noopThis;\n PassbackSlot.prototype.setClickUrl = noopThis;\n PassbackSlot.prototype.setTagForChildDirectedTreatment = noopThis;\n PassbackSlot.prototype.setTargeting = noopThis;\n PassbackSlot.prototype.updateTargetingFromMap = noopThis;\n\n function SizeMappingBuilder() { } // constructor\n SizeMappingBuilder.prototype.addSize = noopThis;\n SizeMappingBuilder.prototype.build = noopNull;\n\n function Slot() { } // constructor\n Slot.prototype.addService = noopThis;\n Slot.prototype.clearCategoryExclusions = noopThis;\n Slot.prototype.clearTargeting = noopThis;\n Slot.prototype.defineSizeMapping = noopThis;\n Slot.prototype.get = noopNull;\n Slot.prototype.getAdUnitPath = noopArray;\n Slot.prototype.getAttributeKeys = noopArray;\n Slot.prototype.getCategoryExclusions = noopArray;\n Slot.prototype.getDomId = noopStr;\n Slot.prototype.getSlotElementId = noopStr;\n Slot.prototype.getSlotId = noopThis;\n Slot.prototype.getTargeting = noopArray;\n Slot.prototype.getTargetingKeys = noopArray;\n Slot.prototype.set = noopThis;\n Slot.prototype.setCategoryExclusion = noopThis;\n Slot.prototype.setClickUrl = noopThis;\n Slot.prototype.setCollapseEmptyDiv = noopThis;\n Slot.prototype.setTargeting = noopThis;\n\n const pubAdsService = {\n addEventListener: noopThis,\n clear: noopFunc,\n clearCategoryExclusions: noopThis,\n clearTagForChildDirectedTreatment: noopThis,\n clearTargeting: noopThis,\n collapseEmptyDivs: noopFunc,\n defineOutOfPagePassback() { return new PassbackSlot(); },\n definePassback() { return new PassbackSlot(); },\n disableInitialLoad: noopFunc,\n display: noopFunc,\n enableAsyncRendering: noopFunc,\n enableSingleRequest: noopFunc,\n enableSyncRendering: noopFunc,\n enableVideoAds: noopFunc,\n get: noopNull,\n getAttributeKeys: noopArray,\n getTargeting: noopFunc,\n getTargetingKeys: noopArray,\n getSlots: noopArray,\n refresh: noopFunc,\n set: noopThis,\n setCategoryExclusion: noopThis,\n setCentering: noopFunc,\n setCookieOptions: noopThis,\n setForceSafeFrame: noopThis,\n setLocation: noopThis,\n setPublisherProvidedId: noopThis,\n setRequestNonPersonalizedAds: noopThis,\n setSafeFrameConfig: noopThis,\n setTagForChildDirectedTreatment: noopThis,\n setTargeting: noopThis,\n setVideoContent: noopThis,\n updateCorrelator: noopFunc,\n };\n\n const { googletag = {} } = window;\n const { cmd = [] } = googletag;\n\n googletag.apiReady = true;\n googletag.cmd = [];\n googletag.cmd.push = (a) => {\n try {\n a();\n // eslint-disable-next-line no-empty\n } catch (ex) { }\n return 1;\n };\n googletag.companionAds = () => companionAdsService;\n googletag.content = () => contentService;\n googletag.defineOutOfPageSlot = () => new Slot();\n googletag.defineSlot = () => new Slot();\n googletag.destroySlots = noopFunc;\n googletag.disablePublisherConsole = noopFunc;\n googletag.display = noopFunc;\n googletag.enableServices = noopFunc;\n googletag.getVersion = noopStr;\n googletag.pubads = () => pubAdsService;\n googletag.pubadsReady = true;\n googletag.setAdIframeTitle = noopFunc;\n googletag.sizeMapping = () => new SizeMappingBuilder();\n\n window.googletag = googletag;\n while (cmd.length !== 0) {\n googletag.cmd.push(cmd.shift());\n }\n\n hit(source);\n}\n\nGoogleTagServicesGpt.names = [\n 'googletagservices-gpt',\n 'ubo-googletagservices_gpt.js',\n 'googletagservices_gpt.js',\n];\n\nGoogleTagServicesGpt.injections = [\n hit,\n noopFunc,\n noopThis,\n noopNull,\n noopArray,\n noopStr,\n];\n","import { hit } from '../helpers';\n\n/**\n * @redirect scorecardresearch-beacon\n *\n * @description\n * Mocks Scorecard Research API.\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/src/web_accessible_resources/scorecardresearch_beacon.js\n *\n * **Example**\n * ```\n * ||sb.scorecardresearch.com/beacon.js$script,redirect=scorecardresearch-beacon\n * ```\n */\nexport function ScoreCardResearchBeacon(source) {\n window.COMSCORE = {\n purge() {\n // eslint-disable-next-line no-underscore-dangle\n window._comscore = [];\n },\n beacon() {},\n };\n hit(source);\n}\n\nScoreCardResearchBeacon.names = [\n 'scorecardresearch-beacon',\n 'ubo-scorecardresearch_beacon.js',\n 'scorecardresearch_beacon.js',\n];\n\nScoreCardResearchBeacon.injections = [\n hit,\n];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect metrika-yandex-tag\n *\n * @description\n * Mocks Yandex Metrika API.\n * https://yandex.ru/support/metrica/objects/method-reference.html\n *\n * **Example**\n * ```\n * ||mc.yandex.ru/metrika/tag.js$script,redirect=metrika-yandex-tag\n * ```\n */\nexport function metrikaYandexTag(source) {\n const asyncCallbackFromOptions = (param, options = {}) => {\n let { callback } = options;\n const { ctx } = options;\n if (typeof callback === 'function') {\n callback = ctx !== undefined ? callback.bind(ctx) : callback;\n setTimeout(() => callback());\n }\n };\n\n const init = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/addfileextension.html\n */\n const addFileExtension = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/extlink.html\n */\n const extLink = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/file.html\n */\n const file = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/get-client-id.html\n * @param {Function} cb\n */\n const getClientID = (cb) => {\n setTimeout(cb(null));\n };\n\n /**\n * https://yandex.ru/support/metrica/objects/hit.html\n */\n const hitFunc = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/notbounce.html\n */\n const notBounce = asyncCallbackFromOptions;\n\n /**\n * https://yandex.ru/support/metrica/objects/params-method.html\n */\n const params = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/reachgoal.html\n * @param {string} target\n * @param {Object} params\n * @param {Function} callback\n * @param {any} ctx\n */\n const reachGoal = (target, params, callback, ctx) => {\n asyncCallbackFromOptions(null, { callback, ctx });\n };\n\n /**\n * https://yandex.ru/support/metrica/objects/set-user-id.html\n */\n const setUserID = noopFunc;\n\n /**\n * https://yandex.ru/support/metrica/objects/user-params.html\n */\n const userParams = noopFunc;\n\n const api = {\n init,\n addFileExtension,\n extLink,\n file,\n getClientID,\n hit: hitFunc,\n notBounce,\n params,\n reachGoal,\n setUserID,\n userParams,\n };\n\n function ym(id, funcName, ...args) {\n return api[funcName] && api[funcName](...args);\n }\n\n window.ym = ym;\n\n hit(source);\n}\n\nmetrikaYandexTag.names = [\n 'metrika-yandex-tag',\n];\n\nmetrikaYandexTag.injections = [hit, noopFunc];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect metrika-yandex-watch\n *\n * @description\n * Mocks the old Yandex Metrika API.\n * https://yandex.ru/support/metrica/objects/_method-reference.html\n *\n * **Example**\n * ```\n * ||mc.yandex.ru/metrika/watch.js$script,redirect=metrika-yandex-watch\n * ```\n */\nexport function metrikaYandexWatch(source) {\n const cbName = 'yandex_metrika_callbacks';\n\n /**\n * Gets callback and its context from options and call it in async way\n * @param {Object} options Yandex Metrika API options\n */\n const asyncCallbackFromOptions = (options = {}) => {\n let { callback } = options;\n const { ctx } = options;\n if (typeof callback === 'function') {\n callback = ctx !== undefined ? callback.bind(ctx) : callback;\n setTimeout(() => callback());\n }\n };\n\n function Metrika() { } // constructor\n\n // Methods without options\n Metrika.prototype.addFileExtension = noopFunc;\n Metrika.prototype.getClientID = noopFunc;\n Metrika.prototype.setUserID = noopFunc;\n Metrika.prototype.userParams = noopFunc;\n\n // Methods with options\n // The order of arguments should be kept in according to API\n Metrika.prototype.extLink = (url, options) => {\n asyncCallbackFromOptions(options);\n };\n Metrika.prototype.file = (url, options) => {\n asyncCallbackFromOptions(options);\n };\n Metrika.prototype.hit = (url, options) => {\n asyncCallbackFromOptions(options);\n };\n Metrika.prototype.reachGoal = (target, params, cb, ctx) => {\n asyncCallbackFromOptions({ callback: cb, ctx });\n };\n Metrika.prototype.notBounce = asyncCallbackFromOptions;\n\n if (window.Ya) {\n window.Ya.Metrika = Metrika;\n } else {\n window.Ya = { Metrika };\n }\n\n if (window[cbName] && Array.isArray(window[cbName])) {\n window[cbName].forEach((func) => {\n if (typeof func === 'function') {\n func();\n }\n });\n }\n\n hit(source);\n}\n\nmetrikaYandexWatch.names = [\n 'metrika-yandex-watch',\n];\n\nmetrikaYandexWatch.injections = [hit, noopFunc];\n","import { hit, noopFunc } from '../helpers';\n\n/**\n * @redirect amazon-apstag\n *\n * @description\n * Mocks Amazon's apstag.js\n *\n * Related UBO redirect resource:\n * https://github.com/gorhill/uBlock/blob/f842ab6d3c1cf0394f95d27092bf59627262da40/src/web_accessible_resources/amazon_apstag.js\n *\n * **Example**\n * ```\n * ||amazon-adsystem.com/aax2/apstag.js$script,redirect=amazon-apstag\n * ```\n */\nexport function AmazonApstag(source) {\n const apstagWrapper = {\n fetchBids(a, b) {\n if (typeof b === 'function') {\n b([]);\n }\n },\n init: noopFunc,\n setDisplayBids: noopFunc,\n targetingKeys: noopFunc,\n };\n\n window.apstag = apstagWrapper;\n\n hit(source);\n}\n\nAmazonApstag.names = [\n 'amazon-apstag',\n 'ubo-amazon_apstag.js',\n 'amazon_apstag.js',\n];\n\nAmazonApstag.injections = [hit, noopFunc];\n","import {\n attachDependencies,\n addCall,\n wrapInNonameFunc,\n passSourceAndProps,\n} from '../helpers/injector';\n\nimport validator from '../helpers/validator';\n\nimport {\n convertUboRedirectToAdg,\n convertAbpRedirectToAdg,\n convertRedirectToAdg,\n convertAdgRedirectToUbo,\n} from '../helpers/converter';\n\nimport * as redirectsList from './redirectsList';\n\n/**\n * Finds redirect resource by it's name\n * @param {string} name - redirect name\n */\nconst getRedirectByName = (name) => {\n const redirects = Object.keys(redirectsList).map((key) => redirectsList[key]);\n return redirects.find((r) => r.names && r.names.indexOf(name) > -1);\n};\n\n/**\n * @typedef {Object} Source - redirect properties\n * @property {string} name redirect name\n * @property {Array} args Arguments for redirect function\n * @property {'extension'|'test'} [engine] -\n * Defines the final form of redirect string presentation\n * @property {boolean} [verbose] flag to enable printing to console debug information\n */\n\n/**\n * Returns redirect code by param\n * @param {Source} source\n * @returns {string} redirect code\n */\nconst getRedirectCode = (source) => {\n const redirect = getRedirectByName(source.name);\n let result = attachDependencies(redirect);\n result = addCall(redirect, result);\n\n // redirect code for different sources is checked in tests\n // so it should be just a code without any source and props passed\n result = source.engine === 'test'\n ? wrapInNonameFunc(result)\n : passSourceAndProps(source, result);\n\n return result;\n};\n\nexport const redirectsCjs = {\n getCode: getRedirectCode,\n isAdgRedirectRule: validator.isAdgRedirectRule,\n isValidAdgRedirectRule: validator.isValidAdgRedirectRule,\n isAdgRedirectCompatibleWithUbo: validator.isAdgRedirectCompatibleWithUbo,\n isUboRedirectCompatibleWithAdg: validator.isUboRedirectCompatibleWithAdg,\n isAbpRedirectCompatibleWithAdg: validator.isAbpRedirectCompatibleWithAdg,\n convertUboRedirectToAdg,\n convertAbpRedirectToAdg,\n convertRedirectToAdg,\n convertAdgRedirectToUbo,\n};\n","import { redirectsCjs } from '../redirects';\n\nimport {\n attachDependencies,\n addCall,\n passSourceAndProps,\n wrapInNonameFunc,\n} from '../helpers/injector';\n\nimport validator from '../helpers/validator';\n\nimport {\n isValidScriptletRule,\n convertUboScriptletToAdg,\n convertAbpSnippetToAdg,\n convertScriptletToAdg,\n convertAdgScriptletToUbo,\n} from '../helpers/converter';\n\n/**\n * @typedef {Object} Source - scriptlet properties\n * @property {string} name Scriptlet name\n * @property {Array} args Arguments for scriptlet function\n * @property {'extension'|'corelibs'|'test'} engine -\n * Defines the final form of scriptlet string presentation\n * @property {string} [version]\n * @property {boolean} [verbose] flag to enable printing to console debug information\n * @property {string} [ruleText] Source rule text is used for debugging purposes\n * @property {string} [domainName] domain name where scriptlet is applied; for debugging purposes\n */\n\n/**\n * Returns scriptlet code by param\n * @param {Source} source\n * @returns {string} scriptlet code\n */\nfunction getScriptletCode(source) {\n if (!validator.isValidScriptletName(source.name)) {\n return null;\n }\n\n const scriptlet = validator.getScriptletByName(source.name);\n let result = attachDependencies(scriptlet);\n result = addCall(scriptlet, result);\n result = source.engine === 'corelibs' || source.engine === 'test'\n ? wrapInNonameFunc(result)\n : passSourceAndProps(source, result);\n return result;\n}\n\n/**\n * Scriptlets variable\n *\n * @returns {Object} object with methods:\n * `invoke` method receives one argument with `Source` type\n * `validate` method receives one argument with `String` type\n */\nconst scriptletsObject = (() => ({\n invoke: getScriptletCode,\n isValidScriptletName: validator.isValidScriptletName,\n isValidScriptletRule,\n isAdgScriptletRule: validator.isAdgScriptletRule,\n isUboScriptletRule: validator.isUboScriptletRule,\n isAbpSnippetRule: validator.isAbpSnippetRule,\n convertUboToAdg: convertUboScriptletToAdg,\n convertAbpToAdg: convertAbpSnippetToAdg,\n convertScriptletToAdg,\n convertAdgToUbo: convertAdgScriptletToUbo,\n redirects: redirectsCjs,\n}))();\n\nexport default scriptletsObject;\n","import scriptletsObject from './index';\n\n/**\n * Expose scriptlets to global\n */\n// eslint-disable-next-line no-undef\nscriptlets = scriptletsObject;\n"],"names":["randomId","Math","random","toString","substr","setPropertyAccess","object","property","descriptor","currentDescriptor","Object","getOwnPropertyDescriptor","configurable","defineProperty","getPropertyInChain","base","chain","pos","indexOf","prop","slice","nextBase","undefined","getWildcardPropertyInChain","lookThrough","output","keys","forEach","key","push","shouldLookThrough","nextProp","baseKeys","item","escapeRegExp","str","replace","toRegExp","length","RegExp","escaped","getBeforeRegExp","rx","index","search","substring","startsWith","prefix","endsWith","substringAfter","separator","substringBefore","wrapInSingleQuotes","getStringInBraces","firstIndex","lastIndex","lastIndexOf","createOnErrorHandler","rid","nativeOnError","window","onerror","onError","error","Function","args","apply","noopFunc","noopNull","trueFunc","falseFunc","noopThis","noopArray","noopStr","hit","source","message","verbose","log","console","bind","trace","ruleText","domainName","AG_SCRIPTLET_MARKER","UBO_SCRIPTLET_MARKER","ruleStartIndex","rulePart","LOG_MARKER","e","__debug","observeDOMChanges","callback","observeAttrs","attrsToObserv","throttle","method","delay","wait","savedArgs","wrapper","setTimeout","THROTTLE_DELAY_MS","observer","MutationObserver","callbackWrapper","connect","observe","document","documentElement","childList","subtree","attributes","attributeFilter","disconnect","matchStackTrace","stackRegexp","stackTrace","refinedStackTrace","split","map","line","trim","join","test","flatten","input","stack","el","res","next","pop","Array","isArray","reverse","attachDependencies","scriptlet","injections","reduce","accum","dep","dependencies","name","addCall","code","passSourceAndProps","sourceString","JSON","stringify","argsString","params","wrapInNonameFunc","_arrayWithHoles","arr","_iterableToArrayLimit","i","Symbol","iterator","_arr","_n","_d","_e","_i","_s","done","value","err","_arrayLikeToArray","len","arr2","_unsupportedIterableToArray","o","minLen","arrayLikeToArray","n","prototype","call","constructor","from","_nonIterableRest","TypeError","_slicedToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_defineProperty","obj","enumerable","writable","iterateWithTransitions","iterable","transitions","init","state","ADG_SCRIPTLET_MASK","wordSaver","strs","saveSymb","s","saveStr","getAll","parseRule","TRANSITION","OPENED","PARAM","CLOSED","opened","rule","sep","char","transition","symb","Error","param","saver","preIndex","before","abortOnPropertyRead","abort","ReferenceError","setChainPropAccess","owner","chainInfo","setter","a","get","set","names","abortOnPropertyWrite","preventSetTimeout","match","nativeTimeout","nativeIsNaN","Number","isNaN","shouldLog","INVERT_MARKER","isNotMatch","isNotDelay","parseInt","timeoutWrapper","timeout","shouldPrevent","preventSetInterval","nativeInterval","setInterval","intervalWrapper","interval","preventWindowOpen","replacement","nativeOpen","open","openWrapper","result","isProp","propertyPart","propertyName","propertyValue","resObj","abortCurrentInlineScript","searchRegexp","getCurrentScript","currentScript","scripts","getElementsByTagName","ourScript","scriptEl","content","textContent","textContentGetter","Node","HTMLScriptElement","props","propIndex","baseName","currentValue","setConstant","constantValue","parseFloat","abs","canceled","mustCancel","removeCookie","regex","removeCookieFromHost","cookieName","hostName","cookieSpec","domain1","domain2","path","expiration","cookie","rmCookie","cookieStr","hostParts","location","hostname","addEventListener","preventAddEventListener","eventSearch","funcSearch","eventSearchRegexp","funcSearchRegexp","nativeAddEventListener","EventTarget","addEventListenerWrapper","eventName","funcToCheck","preventBab","nativeSetTimeout","babRegex","signatures","check","tokens","j","token","found","nativeEval","eval","bodyEl","body","style","removeProperty","getElementById","parentNode","removeChild","nowebrtc","RTCPeerConnection","webkitRTCPeerConnection","rtcReplacement","config","close","createDataChannel","createOffer","setRemoteDescription","rtc","b","send","logAddEventListener","callbackToLog","logEval","evalWrapper","nativeFunction","FunctionWrapper","create","noeval","preventEvalIf","payload","preventFab","Fab","clearEvent","emitEvent","on","onDetected","onNotDetected","setOption","fab","getSetFab","getsetfab","hasOwnProperty","FuckAdBlock","BlockAdBlock","SniffAdBlock","fuckAdBlock","blockAdBlock","sniffAdBlock","setPopadsDummy","PopAds","popns","defineProperties","preventPopadsNet","throwError","preventAdfly","isDigit","data","handler","encodedURL","evenChars","oddChars","charAt","ii","temp","decodedURL","atob","stop","onbeforeunload","href","val","applyHandler","debugOnPropertyRead","debugOnPropertyWrite","debugCurrentInlineScript","removeAttr","attrs","selector","rmattr","nodes","querySelectorAll","removed","node","attr","removeAttribute","removeClass","classNames","selectors","className","removeClassHandler","Set","foundedNodes","add","elements","element","classList","contains","remove","CLASS_ATTR_NAME","disableNewtabLinks","ev","target","localName","hasAttribute","stopPropagation","preventDefault","adjustSetInterval","boost","nativeIsFinite","isFinite","cb","d","adjustSetTimeout","dirString","times","dir","dirWrapper","jsonPrune","propsToRemove","requiredInitialProps","prunePaths","requiredPaths","isPruningNeeded","root","shouldProcess","requiredPath","lastNestedPropName","hasWildcard","details","nativeParse","parse","parseWrapper","ownerObjArr","ownerObj","preventRequestAnimationFrame","nativeRequestAnimationFrame","requestAnimationFrame","doNotMatch","rafWrapper","logMessage","setCookie","valueToSet","pathToSet","cookieData","encodeURIComponent","hideInShadowDom","baseSelector","Element","attachShadow","findHostElements","rootElement","hosts","domElems","shadowRoot","pierceShadowDom","hostElements","targets","innerHostsAcc","collectTargets","host","simpleElems","shadowRootElem","shadowChildren","innerHosts","hideHandler","hidden","DISPLAY_NONE_CSS","targetEl","cssText","JS_RULE_MARKER","COMMENT_MARKER","isComment","UBO_SCRIPTLET_MASK_REG","UBO_SCRIPTLET_MASK_1","UBO_SCRIPTLET_MASK_2","UBO_SCRIPTLET_EXCEPTION_MASK_1","UBO_SCRIPTLET_EXCEPTION_MASK_2","ABP_SCRIPTLET_MASK","ABP_SCRIPTLET_EXCEPTION_MASK","ADG_CSS_MASK_REG","isAdgScriptletRule","isUboScriptletRule","isAbpSnippetRule","getScriptletByName","scriptlets","scriptletsList","find","isValidScriptletName","ADG_UBO_REDIRECT_MARKER","ABP_REDIRECT_MARKER","VALID_SOURCE_TYPES","validAdgRedirects","redirects","filter","adg","objFromEntries","pairs","acc","uboToAdgCompatibility","ubo","abpToAdgCompatibility","abp","adgToUboCompatibility","validAdgCompatibility","REDIRECT_RULE_TYPES","VALID_ADG","marker","compatibility","ADG","UBO","ABP","parseModifiers","getRedirectName","ruleModifiers","redirectNamePart","isAdgRedirectRule","MARKER_IN_BASE_PART_MASK","isRedirectRuleByType","type","redirectName","isValidAdgRedirectRule","isAdgRedirectCompatibleWithUbo","isUboRedirectCompatibleWithAdg","isAbpRedirectCompatibleWithAdg","hasValidContentType","sourceType","validator","_iterableToArray","iter","_toArray","iterableToArray","ADGUARD_SCRIPTLET_MASK_REG","ADGUARD_SCRIPTLET_TEMPLATE","ADGUARD_SCRIPTLET_EXCEPTION_TEMPLATE","UBO_SCRIPTLET_TEMPLATE","UBO_SCRIPTLET_EXCEPTION_TEMPLATE","UBO_ALIAS_NAME_MARKER","UBO_XHR_TYPE","ADG_XHR_TYPE","getSentences","reg","replacePlaceholders","convertUboScriptletToAdg","domains","mask","template","arg","outputArg","adgRule","convertAbpSnippetToAdg","SEMICOLON_DIVIDER","convertScriptletToAdg","convertAdgScriptletToUbo","parsedName","parsedParams","adgScriptletObject","scriptletList","aliases","uboAlias","alias","includes","uboName","uboRule","isValidScriptletRule","rulesArray","isValid","parsedRule","convertUboRedirectToAdg","firstPartOfRule","uboModifiers","adgModifiers","adgName","convertAbpRedirectToAdg","abpModifiers","abpName","convertRedirectToAdg","convertAdgRedirectToUbo","GoogleAnalytics","Tracker","proto","googleAnalyticsName","GoogleAnalyticsObject","ga","arguments","lastArg","hitCallback","ex","getByName","loaded","dataLayer","hide","end","GoogleAnalyticsGa","Gaq","Na","O","Sa","Ta","Va","_createAsyncTracker","_getAsyncTracker","_getPlugin","assign","gaq","asyncTrackers","_gaq","shift","qf","Gat","api","tracker","funcName","_getLinkerUrl","_anonymizeIP","_createTracker","_forceSSL","_getTracker","_getTrackerByName","_getTrackers","aa","ab","hb","la","oa","pa","u","gat","_gat","GoogleSyndicationAdsByGoogle","adsbygoogle","adElems","css","statusAttrName","ASWIFT_IFRAME_MARKER","GOOGLE_ADS_IFRAME_MARKER","executed","adElemChildNodes","childNodes","childNodesQuantity","areIframesDefined","tagName","toLowerCase","id","setAttribute","aswiftIframe","createElement","appendChild","innerAswiftIframe","contentWindow","googleadsIframe","innerGoogleadsIframe","GoogleTagManagerGtm","google_optimize","eventCallback","googleOptimizeWrapper","GoogleTagServicesGpt","companionAdsService","enableSyncLoading","setRefreshUnfilledSlots","contentService","setContent","PassbackSlot","display","setClickUrl","setTagForChildDirectedTreatment","setTargeting","updateTargetingFromMap","SizeMappingBuilder","addSize","build","Slot","addService","clearCategoryExclusions","clearTargeting","defineSizeMapping","getAdUnitPath","getAttributeKeys","getCategoryExclusions","getDomId","getSlotElementId","getSlotId","getTargeting","getTargetingKeys","setCategoryExclusion","setCollapseEmptyDiv","pubAdsService","clear","clearTagForChildDirectedTreatment","collapseEmptyDivs","defineOutOfPagePassback","definePassback","disableInitialLoad","enableAsyncRendering","enableSingleRequest","enableSyncRendering","enableVideoAds","getSlots","refresh","setCentering","setCookieOptions","setForceSafeFrame","setLocation","setPublisherProvidedId","setRequestNonPersonalizedAds","setSafeFrameConfig","setVideoContent","updateCorrelator","googletag","cmd","apiReady","companionAds","defineOutOfPageSlot","defineSlot","destroySlots","disablePublisherConsole","enableServices","getVersion","pubads","pubadsReady","setAdIframeTitle","sizeMapping","ScoreCardResearchBeacon","COMSCORE","purge","_comscore","beacon","metrikaYandexTag","asyncCallbackFromOptions","options","ctx","addFileExtension","extLink","file","getClientID","hitFunc","notBounce","reachGoal","setUserID","userParams","ym","metrikaYandexWatch","cbName","Metrika","url","Ya","func","AmazonApstag","apstagWrapper","fetchBids","setDisplayBids","targetingKeys","apstag","getRedirectByName","redirectsList","r","getRedirectCode","redirect","engine","redirectsCjs","getCode","getScriptletCode","scriptletsObject","invoke","convertUboToAdg","convertAbpToAdg","convertAdgToUbo"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 597eb4e20..95856453f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "scriptlets", - "version": "1.3.4", + "version": "1.3.5", "scripts": { "watch": "rollup -c -w", "build": "rollup -c && babel-node redirects.build.js", diff --git a/types/scriptlets.d.ts b/types/scriptlets.d.ts index aae85cce6..79e2d0184 100644 --- a/types/scriptlets.d.ts +++ b/types/scriptlets.d.ts @@ -35,6 +35,39 @@ declare module 'scriptlets' { ruleText: string; } + /** + * Redirect object + */ + interface Redirect { + /** + * Redirect name + */ + title: string; + + /** + * Some comment for redirect resource + */ + comment: string; + + /** + * Data which is redirected to + */ + content: string; + + /** + * Type of content + */ + contentType: string; + } + + /** + * Redirects class + */ + class Redirects { + constructor(rawYaml: string): Redirect; + getRedirect(title: string): Redirect; + } + /** * Returns scriptlet code by param * @@ -61,6 +94,11 @@ declare module 'scriptlets' { * Redirects module */ const redirects: { + /** + * Object with redirects titles in the keys and RedirectSources + */ + Redirects: Redirects; + /** * Checks if the `rule` is AdGuard redirect rule. * From 40a2df6ae2323c6af361201325c108201204c819 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Fri, 6 Nov 2020 17:10:23 +0300 Subject: [PATCH 24/29] one more update --- scripts/build-compatibility-table.js | 23 +++++++++++++++++++++-- scripts/build-docs.js | 2 ++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/scripts/build-compatibility-table.js b/scripts/build-compatibility-table.js index 005a338d4..cea1f37c4 100644 --- a/scripts/build-compatibility-table.js +++ b/scripts/build-compatibility-table.js @@ -2,6 +2,8 @@ const fs = require('fs'); const path = require('path'); const os = require('os'); +const { ABOUT_SCRIPTLETS_PATH, ABOUT_REDIRECTS_PATH } = require('./build-docs'); + /** * Source file for compatibility tables */ @@ -29,7 +31,18 @@ function getTableData() { * abp: string * }} item { an } */ -const getRow = (item) => (`| ${item.adg || ''} | ${item.ubo || ''} | ${item.abp || ''} |${os.EOL}`); +const getRow = (id, item) => { + let adgCell = ''; + if (item.adg) { + if (id === 'scriptlets') { + adgCell = `${ABOUT_SCRIPTLETS_PATH}#${item.adg}`; + } else if (id === 'redirects') { + adgCell = `${ABOUT_REDIRECTS_PATH}#${item.adg}`; + } + } + + return `| ${adgCell} | ${item.ubo || ''} | ${item.abp || ''} |${os.EOL}`; +}; /** * Generates table header @@ -50,7 +63,13 @@ function buildTable(title, data = [], id = '') { // header res += getTableHeader(); // rows - res += data.map(getRow).join(''); + // res += data.map(getRow).join(''); + res += data + .map((item) => { + const row = getRow(id, item); + return row; + }) + .join(''); return res; } diff --git a/scripts/build-docs.js b/scripts/build-docs.js index 90ddeb4bc..c81f56648 100644 --- a/scripts/build-docs.js +++ b/scripts/build-docs.js @@ -196,6 +196,8 @@ function init() { init(); module.exports = { + ABOUT_SCRIPTLETS_PATH, + ABOUT_REDIRECTS_PATH, redirectsFilesList, getDataFromFiles, }; From 464691c12a0880eefc94613653bce027b64a888f Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Fri, 6 Nov 2020 17:16:19 +0300 Subject: [PATCH 25/29] one more update --- scripts/build-compatibility-table.js | 8 +- scripts/build-docs.js | 2 - wiki/compatibility-table.md | 121 ++++++++++++++------------- 3 files changed, 63 insertions(+), 68 deletions(-) diff --git a/scripts/build-compatibility-table.js b/scripts/build-compatibility-table.js index cea1f37c4..9b384b417 100644 --- a/scripts/build-compatibility-table.js +++ b/scripts/build-compatibility-table.js @@ -2,8 +2,6 @@ const fs = require('fs'); const path = require('path'); const os = require('os'); -const { ABOUT_SCRIPTLETS_PATH, ABOUT_REDIRECTS_PATH } = require('./build-docs'); - /** * Source file for compatibility tables */ @@ -34,11 +32,7 @@ function getTableData() { const getRow = (id, item) => { let adgCell = ''; if (item.adg) { - if (id === 'scriptlets') { - adgCell = `${ABOUT_SCRIPTLETS_PATH}#${item.adg}`; - } else if (id === 'redirects') { - adgCell = `${ABOUT_REDIRECTS_PATH}#${item.adg}`; - } + adgCell = `[${item.adg}](../wiki/about-${id}.md#${item.adg})`; } return `| ${adgCell} | ${item.ubo || ''} | ${item.abp || ''} |${os.EOL}`; diff --git a/scripts/build-docs.js b/scripts/build-docs.js index c81f56648..90ddeb4bc 100644 --- a/scripts/build-docs.js +++ b/scripts/build-docs.js @@ -196,8 +196,6 @@ function init() { init(); module.exports = { - ABOUT_SCRIPTLETS_PATH, - ABOUT_REDIRECTS_PATH, redirectsFilesList, getDataFromFiles, }; diff --git a/wiki/compatibility-table.md b/wiki/compatibility-table.md index 30bc0a579..82493b49f 100644 --- a/wiki/compatibility-table.md +++ b/wiki/compatibility-table.md @@ -2,37 +2,37 @@ | AdGuard | uBO | Adblock Plus | |---|---|---| -| abort-current-inline-script | abort-current-inline-script.js (acis.js) | abort-current-inline-script | -| abort-on-property-read | abort-on-property-read.js (aopr.js) | abort-on-property-read | -| abort-on-property-write | abort-on-property-write.js (aopw.js) | abort-on-property-write | -| adjust-setInterval | nano-setInterval-booster.js (nano-sib.js) | | -| adjust-setTimeout | nano-setTimeout-booster.js (nano-stb.js) | | -| debug-current-inline-script | | | -| debug-on-property-read | | | -| debug-on-property-write | | | -| dir-string | | dir-string | -| disable-newtab-links | disable-newtab-links.js | | -| json-prune | json-prune.js | json-prune | -| log-addEventListener | addEventListener-logger.js (aell.js) | | -| log-eval | | | -| log | | log | -| noeval | | | -| nowebrtc | nowebrtc.js | | -| prevent-addEventListener | addEventListener-defuser.js (aeld.js) | | -| prevent-adfly | adfly-defuser.js | | -| prevent-bab | | | -| prevent-eval-if | noeval-if.js | | -| prevent-fab-3.2.0 | | | -| prevent-popads-net | | | -| prevent-requestAnimationFrame | no-requestAnimationFrame-if.js (norafif.js) | | -| prevent-setInterval | no-setInterval-if.js (nosiif.js) | | -| prevent-setTimeout | no-setTimeout-if.js (nostif.js) | | -| prevent-window-open | | | -| remove-attr | remove-attr.js (ra.js) | | -| remove-class | remove-class.js (rc.js) | | -| remove-cookie | cookie-remover.js | | -| set-constant | set-constant.js (set.js) | override-property-read | -| set-popads-dummy | | | +| [abort-current-inline-script](../wiki/about-scriptlets.md#abort-current-inline-script) | abort-current-inline-script.js (acis.js) | abort-current-inline-script | +| [abort-on-property-read](../wiki/about-scriptlets.md#abort-on-property-read) | abort-on-property-read.js (aopr.js) | abort-on-property-read | +| [abort-on-property-write](../wiki/about-scriptlets.md#abort-on-property-write) | abort-on-property-write.js (aopw.js) | abort-on-property-write | +| [adjust-setInterval](../wiki/about-scriptlets.md#adjust-setInterval) | nano-setInterval-booster.js (nano-sib.js) | | +| [adjust-setTimeout](../wiki/about-scriptlets.md#adjust-setTimeout) | nano-setTimeout-booster.js (nano-stb.js) | | +| [debug-current-inline-script](../wiki/about-scriptlets.md#debug-current-inline-script) | | | +| [debug-on-property-read](../wiki/about-scriptlets.md#debug-on-property-read) | | | +| [debug-on-property-write](../wiki/about-scriptlets.md#debug-on-property-write) | | | +| [dir-string](../wiki/about-scriptlets.md#dir-string) | | dir-string | +| [disable-newtab-links](../wiki/about-scriptlets.md#disable-newtab-links) | disable-newtab-links.js | | +| [json-prune](../wiki/about-scriptlets.md#json-prune) | json-prune.js | json-prune | +| [log-addEventListener](../wiki/about-scriptlets.md#log-addEventListener) | addEventListener-logger.js (aell.js) | | +| [log-eval](../wiki/about-scriptlets.md#log-eval) | | | +| [log](../wiki/about-scriptlets.md#log) | | log | +| [noeval](../wiki/about-scriptlets.md#noeval) | | | +| [nowebrtc](../wiki/about-scriptlets.md#nowebrtc) | nowebrtc.js | | +| [prevent-addEventListener](../wiki/about-scriptlets.md#prevent-addEventListener) | addEventListener-defuser.js (aeld.js) | | +| [prevent-adfly](../wiki/about-scriptlets.md#prevent-adfly) | adfly-defuser.js | | +| [prevent-bab](../wiki/about-scriptlets.md#prevent-bab) | | | +| [prevent-eval-if](../wiki/about-scriptlets.md#prevent-eval-if) | noeval-if.js | | +| [prevent-fab-3.2.0](../wiki/about-scriptlets.md#prevent-fab-3.2.0) | | | +| [prevent-popads-net](../wiki/about-scriptlets.md#prevent-popads-net) | | | +| [prevent-requestAnimationFrame](../wiki/about-scriptlets.md#prevent-requestAnimationFrame) | no-requestAnimationFrame-if.js (norafif.js) | | +| [prevent-setInterval](../wiki/about-scriptlets.md#prevent-setInterval) | no-setInterval-if.js (nosiif.js) | | +| [prevent-setTimeout](../wiki/about-scriptlets.md#prevent-setTimeout) | no-setTimeout-if.js (nostif.js) | | +| [prevent-window-open](../wiki/about-scriptlets.md#prevent-window-open) | | | +| [remove-attr](../wiki/about-scriptlets.md#remove-attr) | remove-attr.js (ra.js) | | +| [remove-class](../wiki/about-scriptlets.md#remove-class) | remove-class.js (rc.js) | | +| [remove-cookie](../wiki/about-scriptlets.md#remove-cookie) | cookie-remover.js | | +| [set-constant](../wiki/about-scriptlets.md#set-constant) | set-constant.js (set.js) | override-property-read | +| [set-popads-dummy](../wiki/about-scriptlets.md#set-popads-dummy) | | | | | setInterval-defuser.js (sid.js) | | | | setTimeout-defuser.js (std.js) | | | | requestAnimationFrame-if.js (raf-if.js) | | @@ -54,7 +54,6 @@ | | | hide-if-contains-and-matches-style | | | | hide-if-has-and-matches-style | | | | hide-if-contains-image | -| | | readd | | | | strip-fetch-query-parameter | | | | hide-if-contains-image-hash | | | | ml-hide-if-graph-matches | @@ -63,44 +62,47 @@ | | | hide-if-matches-xpath | | | | profile | | | | freeze-element | +| | abort-on-stack-trace.js (aost.js) | | +| | | prepareInjection | +| | | commitInjection | # Redirects compatibility table | AdGuard | uBO | Adblock Plus | |---|---|---| -| 1x1-transparent.gif | 1x1.gif | 1x1-transparent-gif | -| 2x2-transparent.png | 2x2.png | 2x2-transparent-png | -| 3x2-transparent.png | 3x2.png | 3x2-transparent-png | -| 32x32-transparent.png | 32x32.png | 32x32-transparent-png | -| amazon-apstag | amazon_apstag.js | | -| google-analytics | google-analytics_analytics.js | | -| google-analytics-ga | google-analytics_ga.js | | -| googlesyndication-adsbygoogle | googlesyndication_adsbygoogle.js | | -| googletagmanager-gtm | googletagmanager_gtm.js | | -| googletagservices-gpt | googletagservices_gpt.js | | -| metrika-yandex-watch | | | -| metrika-yandex-tag | | | -| noeval | noeval-silent.js | | -| noopcss | | blank-css | -| noopframe | noop.html | blank-html | -| noopjs | noop.js | blank-js | -| nooptext | noop.txt | blank-text | -| noopmp3-0.1s | noop-0.1s.mp3 | blank-mp3 | -| noopmp4-1s | noop-1s.mp4 | blank-mp4 | -| noopvmap-1.0 | | | -| noopvast-2.0 | | | -| noopvast-3.0 | | | -| prevent-fab-3.2.0 | nofab.js | | -| prevent-popads-net | popads.js | | -| scorecardresearch-beacon | scorecardresearch_beacon.js | | -| set-popads-dummy | popads-dummy.js | | +| [1x1-transparent.gif](../wiki/about-redirects.md#1x1-transparent.gif) | 1x1.gif | 1x1-transparent-gif | +| [2x2-transparent.png](../wiki/about-redirects.md#2x2-transparent.png) | 2x2.png | 2x2-transparent-png | +| [3x2-transparent.png](../wiki/about-redirects.md#3x2-transparent.png) | 3x2.png | 3x2-transparent-png | +| [32x32-transparent.png](../wiki/about-redirects.md#32x32-transparent.png) | 32x32.png | 32x32-transparent-png | +| [amazon-apstag](../wiki/about-redirects.md#amazon-apstag) | amazon_apstag.js | | +| [google-analytics](../wiki/about-redirects.md#google-analytics) | google-analytics_analytics.js | | +| [google-analytics-ga](../wiki/about-redirects.md#google-analytics-ga) | google-analytics_ga.js | | +| [googlesyndication-adsbygoogle](../wiki/about-redirects.md#googlesyndication-adsbygoogle) | googlesyndication_adsbygoogle.js | | +| [googletagmanager-gtm](../wiki/about-redirects.md#googletagmanager-gtm) | googletagmanager_gtm.js | | +| [googletagservices-gpt](../wiki/about-redirects.md#googletagservices-gpt) | googletagservices_gpt.js | | +| [metrika-yandex-watch](../wiki/about-redirects.md#metrika-yandex-watch) | | | +| [metrika-yandex-tag](../wiki/about-redirects.md#metrika-yandex-tag) | | | +| [noeval](../wiki/about-redirects.md#noeval) | noeval-silent.js | | +| [noopcss](../wiki/about-redirects.md#noopcss) | | blank-css | +| [noopframe](../wiki/about-redirects.md#noopframe) | noop.html | blank-html | +| [noopjs](../wiki/about-redirects.md#noopjs) | noop.js | blank-js | +| [nooptext](../wiki/about-redirects.md#nooptext) | noop.txt | blank-text | +| [noopmp3-0.1s](../wiki/about-redirects.md#noopmp3-0.1s) | noop-0.1s.mp3 | blank-mp3 | +| [noopmp4-1s](../wiki/about-redirects.md#noopmp4-1s) | noop-1s.mp4 | blank-mp4 | +| [noopvmap-1.0](../wiki/about-redirects.md#noopvmap-1.0) | | | +| [noopvast-2.0](../wiki/about-redirects.md#noopvast-2.0) | | | +| [noopvast-3.0](../wiki/about-redirects.md#noopvast-3.0) | | | +| [prevent-fab-3.2.0](../wiki/about-redirects.md#prevent-fab-3.2.0) | nofab.js | | +| [prevent-popads-net](../wiki/about-redirects.md#prevent-popads-net) | popads.js | | +| [scorecardresearch-beacon](../wiki/about-redirects.md#scorecardresearch-beacon) | scorecardresearch_beacon.js | | +| [set-popads-dummy](../wiki/about-redirects.md#set-popads-dummy) | popads-dummy.js | | | | addthis_widget.js | | | | amazon_ads.js | | | | ampproject_v0.js | | | | chartbeat.js | | | | doubleclick_instream_ad_status.js | | -| | empty | | +| [empty](../wiki/about-redirects.md#empty) | empty | | | | google-analytics_cx_api.js | | | | google-analytics_inpage_linkid.js | | | | hd-main.js | | @@ -110,3 +112,4 @@ | | window.open-defuser.js | | | | nobab.js | | | | noeval.js | | +| | click2load.html | | From 5d5613516355b44fb2f99cc7a8e627678a35ff15 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Mon, 23 Nov 2020 14:52:27 +0300 Subject: [PATCH 26/29] one more update --- src/helpers/validator.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/helpers/validator.js b/src/helpers/validator.js index e3a89ab83..a290d599f 100644 --- a/src/helpers/validator.js +++ b/src/helpers/validator.js @@ -371,7 +371,8 @@ const hasValidContentType = (rule) => { return isSourceTypeSpecified; } - return false; + + throw new Error(`Redirect might be unsupported by Ubo so rule can not be converted: ${rule}`); }; const validator = { From a5e7e5363dc3a1b90be23d773d08241b765001d0 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Mon, 23 Nov 2020 14:52:58 +0300 Subject: [PATCH 27/29] set -u --- src/helpers/validator.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/helpers/validator.js b/src/helpers/validator.js index a290d599f..95baa803a 100644 --- a/src/helpers/validator.js +++ b/src/helpers/validator.js @@ -371,7 +371,6 @@ const hasValidContentType = (rule) => { return isSourceTypeSpecified; } - throw new Error(`Redirect might be unsupported by Ubo so rule can not be converted: ${rule}`); }; From 7d4690eb57f6c59c30b2560ba302836b9c2c835c Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Mon, 23 Nov 2020 15:03:10 +0300 Subject: [PATCH 28/29] one more update --- dist/scriptlets.js | 3 +-- src/helpers/validator.js | 4 +++- tests/lib-tests/index.test.js | 10 ++++++++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/dist/scriptlets.js b/dist/scriptlets.js index 54269cd18..bcc967f43 100644 --- a/dist/scriptlets.js +++ b/dist/scriptlets.js @@ -4197,8 +4197,7 @@ return isSourceTypeSpecified; } - - return false; + return false; // throw new Error(`Unsupported Redirect in rule: ${rule}`); }; var validator = { diff --git a/src/helpers/validator.js b/src/helpers/validator.js index 95baa803a..8a874e8b2 100644 --- a/src/helpers/validator.js +++ b/src/helpers/validator.js @@ -371,7 +371,9 @@ const hasValidContentType = (rule) => { return isSourceTypeSpecified; } - throw new Error(`Redirect might be unsupported by Ubo so rule can not be converted: ${rule}`); + + return false; + // throw new Error(`Unsupported Redirect in rule: ${rule}`); }; const validator = { diff --git a/tests/lib-tests/index.test.js b/tests/lib-tests/index.test.js index 2d36306f5..2384dda29 100644 --- a/tests/lib-tests/index.test.js +++ b/tests/lib-tests/index.test.js @@ -279,4 +279,14 @@ test('Test REDIRECT converting - ADG -> UBO', (assert) => { adgRule = '||example.com/vast/$important,redirect=empty,~thirt-party'; expectedUboRule = '||example.com/vast/$important,redirect=empty,~thirt-party'; assert.strictEqual(convertAdgRedirectToUbo(adgRule), expectedUboRule); + + // assert.throws(() => { + // adgRule = '||example.com/ad/vmap/*$xmlhttprequest,redirect=noopvast-2.0'; + // convertAdgRedirectToUbo(adgRule); + // }, 'unable to convert -- no such ubo redirect'); + + assert.throws(() => { + adgRule = '||example.com/ad/vmap/*$redirect=nooptext'; + convertAdgRedirectToUbo(adgRule); + }, 'unable to convert -- no source type specified'); }); From 1c5464c3339d589c5756628d83ec9e6ee97fe55e Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Mon, 23 Nov 2020 17:29:31 +0300 Subject: [PATCH 29/29] one more update --- dist/cjs/scriptlets.cjs.js | 51 +++++++++++++++++++-------------- dist/scriptlets.js | 52 +++++++++++++++++++-------------- src/helpers/validator.js | 54 +++++++++++++++++++---------------- tests/lib-tests/index.test.js | 19 +++++++----- 4 files changed, 101 insertions(+), 75 deletions(-) diff --git a/dist/cjs/scriptlets.cjs.js b/dist/cjs/scriptlets.cjs.js index 568c9e053..e40c29ae0 100644 --- a/dist/cjs/scriptlets.cjs.js +++ b/dist/cjs/scriptlets.cjs.js @@ -4170,34 +4170,41 @@ var isAbpRedirectCompatibleWithAdg = function isAbpRedirectCompatibleWithAdg(rul var hasValidContentType = function hasValidContentType(rule) { - if (isRedirectRuleByType(rule, 'ADG')) { - var ruleModifiers = parseModifiers(rule); // rule can have more than one source type modifier + if (!isRedirectRuleByType(rule, 'ADG')) { + throw new Error("Unable to convert - not an ADG rule: ".concat(rule)); + } - var sourceTypes = ruleModifiers.filter(function (el) { - return VALID_SOURCE_TYPES.indexOf(el) > -1; - }); - var isSourceTypeSpecified = sourceTypes.length > 0; - var isEmptyRedirect = ruleModifiers.indexOf("".concat(ADG_UBO_REDIRECT_MARKER).concat(EMPTY_REDIRECT_MARKER)) > -1; - - if (isEmptyRedirect) { - if (isSourceTypeSpecified) { - var isValidType = sourceTypes.reduce(function (acc, sType) { - var isEmptySupported = EMPTY_REDIRECT_SUPPORTED_TYPES.find(function (type) { - return type === sType; - }); - return !!isEmptySupported && acc; - }, true); - return isValidType; - } // no source type for 'empty' is allowed + if (!isAdgRedirectCompatibleWithUbo(rule)) { + throw new Error("Unable to convert - unsupported by uBO redirect in rule: ".concat(rule)); + } // if (isAdgRedirectCompatibleWithUbo(rule)) { + // if (isRedirectRuleByType(rule, 'ADG')) { - return true; - } + var ruleModifiers = parseModifiers(rule); // rule can have more than one source type modifier - return isSourceTypeSpecified; + var sourceTypes = ruleModifiers.filter(function (el) { + return VALID_SOURCE_TYPES.indexOf(el) > -1; + }); + var isSourceTypeSpecified = sourceTypes.length > 0; + var isEmptyRedirect = ruleModifiers.indexOf("".concat(ADG_UBO_REDIRECT_MARKER).concat(EMPTY_REDIRECT_MARKER)) > -1; + + if (isEmptyRedirect) { + if (isSourceTypeSpecified) { + var isValidType = sourceTypes.reduce(function (acc, sType) { + var isEmptySupported = EMPTY_REDIRECT_SUPPORTED_TYPES.find(function (type) { + return type === sType; + }); + return !!isEmptySupported && acc; + }, true); + return isValidType; + } // no source type for 'empty' is allowed + + + return true; } - return false; + return isSourceTypeSpecified; // } + // return false; }; var validator = { diff --git a/dist/scriptlets.js b/dist/scriptlets.js index bcc967f43..bb3b38b64 100644 --- a/dist/scriptlets.js +++ b/dist/scriptlets.js @@ -4171,33 +4171,41 @@ var hasValidContentType = function hasValidContentType(rule) { - if (isRedirectRuleByType(rule, 'ADG')) { - var ruleModifiers = parseModifiers(rule); // rule can have more than one source type modifier + if (!isRedirectRuleByType(rule, 'ADG')) { + throw new Error("Unable to convert - not an ADG rule: ".concat(rule)); + } - var sourceTypes = ruleModifiers.filter(function (el) { - return VALID_SOURCE_TYPES.indexOf(el) > -1; - }); - var isSourceTypeSpecified = sourceTypes.length > 0; - var isEmptyRedirect = ruleModifiers.indexOf("".concat(ADG_UBO_REDIRECT_MARKER).concat(EMPTY_REDIRECT_MARKER)) > -1; - - if (isEmptyRedirect) { - if (isSourceTypeSpecified) { - var isValidType = sourceTypes.reduce(function (acc, sType) { - var isEmptySupported = EMPTY_REDIRECT_SUPPORTED_TYPES.find(function (type) { - return type === sType; - }); - return !!isEmptySupported && acc; - }, true); - return isValidType; - } // no source type for 'empty' is allowed + if (!isAdgRedirectCompatibleWithUbo(rule)) { + throw new Error("Unable to convert - unsupported by uBO redirect in rule: ".concat(rule)); + } // if (isAdgRedirectCompatibleWithUbo(rule)) { + // if (isRedirectRuleByType(rule, 'ADG')) { - return true; - } + var ruleModifiers = parseModifiers(rule); // rule can have more than one source type modifier - return isSourceTypeSpecified; + var sourceTypes = ruleModifiers.filter(function (el) { + return VALID_SOURCE_TYPES.indexOf(el) > -1; + }); + var isSourceTypeSpecified = sourceTypes.length > 0; + var isEmptyRedirect = ruleModifiers.indexOf("".concat(ADG_UBO_REDIRECT_MARKER).concat(EMPTY_REDIRECT_MARKER)) > -1; + + if (isEmptyRedirect) { + if (isSourceTypeSpecified) { + var isValidType = sourceTypes.reduce(function (acc, sType) { + var isEmptySupported = EMPTY_REDIRECT_SUPPORTED_TYPES.find(function (type) { + return type === sType; + }); + return !!isEmptySupported && acc; + }, true); + return isValidType; + } // no source type for 'empty' is allowed + + + return true; } - return false; // throw new Error(`Unsupported Redirect in rule: ${rule}`); + + return isSourceTypeSpecified; // } + // return false; }; var validator = { diff --git a/src/helpers/validator.js b/src/helpers/validator.js index 8a874e8b2..0bff442c9 100644 --- a/src/helpers/validator.js +++ b/src/helpers/validator.js @@ -347,33 +347,39 @@ const isAbpRedirectCompatibleWithAdg = (rule) => { * @returns {boolean} */ const hasValidContentType = (rule) => { - if (isRedirectRuleByType(rule, 'ADG')) { - const ruleModifiers = parseModifiers(rule); - // rule can have more than one source type modifier - const sourceTypes = ruleModifiers - .filter((el) => VALID_SOURCE_TYPES.indexOf(el) > -1); - - const isSourceTypeSpecified = sourceTypes.length > 0; - const isEmptyRedirect = ruleModifiers.indexOf(`${ADG_UBO_REDIRECT_MARKER}${EMPTY_REDIRECT_MARKER}`) > -1; - - if (isEmptyRedirect) { - if (isSourceTypeSpecified) { - const isValidType = sourceTypes.reduce((acc, sType) => { - const isEmptySupported = EMPTY_REDIRECT_SUPPORTED_TYPES - .find((type) => type === sType); - return !!isEmptySupported && acc; - }, true); - return isValidType; - } - // no source type for 'empty' is allowed - return true; - } + if (!isRedirectRuleByType(rule, 'ADG')) { + throw new Error(`Unable to convert - not an ADG rule: ${rule}`); + } + if (!isAdgRedirectCompatibleWithUbo(rule)) { + throw new Error(`Unable to convert - unsupported by uBO redirect in rule: ${rule}`); + } - return isSourceTypeSpecified; + // if (isAdgRedirectCompatibleWithUbo(rule)) { + // if (isRedirectRuleByType(rule, 'ADG')) { + const ruleModifiers = parseModifiers(rule); + // rule can have more than one source type modifier + const sourceTypes = ruleModifiers + .filter((el) => VALID_SOURCE_TYPES.indexOf(el) > -1); + + const isSourceTypeSpecified = sourceTypes.length > 0; + const isEmptyRedirect = ruleModifiers.indexOf(`${ADG_UBO_REDIRECT_MARKER}${EMPTY_REDIRECT_MARKER}`) > -1; + + if (isEmptyRedirect) { + if (isSourceTypeSpecified) { + const isValidType = sourceTypes.reduce((acc, sType) => { + const isEmptySupported = EMPTY_REDIRECT_SUPPORTED_TYPES + .find((type) => type === sType); + return !!isEmptySupported && acc; + }, true); + return isValidType; + } + // no source type for 'empty' is allowed + return true; } - return false; - // throw new Error(`Unsupported Redirect in rule: ${rule}`); + return isSourceTypeSpecified; + // } + // return false; }; const validator = { diff --git a/tests/lib-tests/index.test.js b/tests/lib-tests/index.test.js index 2384dda29..fa9bd5082 100644 --- a/tests/lib-tests/index.test.js +++ b/tests/lib-tests/index.test.js @@ -174,6 +174,9 @@ test('Test redirect rule validation', (assert) => { // invalid redirect name inputRule = '||example.orf^$media,redirect=no-mp4'; assert.strictEqual(validator.isAdgRedirectCompatibleWithUbo(inputRule), false); + // no ubo analog for redirect + inputRule = '||example.com/ad/vmap/*$xmlhttprequest,redirect=noopvmap-1.0'; + assert.strictEqual(validator.isAdgRedirectCompatibleWithUbo(inputRule), false); // rules with 'redirect=' marker in base rule part should be skipped inputRule = '_redirect=*://look.$popup'; assert.strictEqual(validator.isAdgRedirectCompatibleWithUbo(inputRule), false); @@ -247,9 +250,11 @@ test('Test redirect rule validation for ADG -> UBO converting', (assert) => { adgRule = '||example.com/images/*.png$image,important,redirect=1x1-transparent.gif,domain=example.com|example.org'; assert.strictEqual(validator.hasValidContentType(adgRule), true); - // abp rule ->> false - adgRule = '||example.com^$script,rewrite=abp-resource:blank-js'; - assert.strictEqual(validator.hasValidContentType(adgRule), false); + // abp rule ->> error because only ADG rules accepted + assert.throws(() => { + adgRule = '||example.com^$script,rewrite=abp-resource:blank-js'; + convertAdgRedirectToUbo(adgRule); + }, 'unable to convert -- no such ubo redirect'); // no source type adgRule = '||example.com^$important,redirect=nooptext'; @@ -280,10 +285,10 @@ test('Test REDIRECT converting - ADG -> UBO', (assert) => { expectedUboRule = '||example.com/vast/$important,redirect=empty,~thirt-party'; assert.strictEqual(convertAdgRedirectToUbo(adgRule), expectedUboRule); - // assert.throws(() => { - // adgRule = '||example.com/ad/vmap/*$xmlhttprequest,redirect=noopvast-2.0'; - // convertAdgRedirectToUbo(adgRule); - // }, 'unable to convert -- no such ubo redirect'); + assert.throws(() => { + adgRule = '||example.com/ad/vmap/*$xmlhttprequest,redirect=noopvast-2.0'; + convertAdgRedirectToUbo(adgRule); + }, 'unable to convert -- no such ubo redirect'); assert.throws(() => { adgRule = '||example.com/ad/vmap/*$redirect=nooptext';